PICDEM FS USB Bootloader under FreeBSD

Hans Petter Selasky hselasky at c2i.net
Fri Oct 12 11:19:13 PDT 2007


On Friday 12 October 2007, Xiaofan Chen wrote:
> I am trying to get the PICDEM FS USB demo board working under
> FreeBSD. There are two libusb based application for it which work
> under Linux and Windows. I am now trying to get the bootloader
> working first. It is not working. Possibly this is again a firmware bug
> related issue but I would like to get it working either by patching
> the kernel code or by fixing the firmware. I am running the latest
> SVN version of HPS stack and the latest FreeBSD 6.2 Stable version.
>
> http://www.internetking.org/fsusb (original under Linux)
> http://forum.microchip.com/tm.aspx?m=106426 (minor patch by me)
>
> ===[mcuee] ~ # uname -a
> FreeBSD FreeBsd62.Mshome 6.2-STABLE FreeBSD 6.2-STABLE #2: Thu Oct 11
> 19:50:55 SGT 2007
> root at FreeBsd62.Mshome:/home/obj/home/src/sys/USBDEBUG  i386
>
> ===[mcuee] ~/Desktop/build/fsusb/fsusb-0.1.11-2 # dmesg | grep ugen
> ugen0: <I-Tuner Networks product 0x000b, class 0/0, rev 2.00/0.00, addr
> 126> ugen1: <Microchip Technology Inc. PICkit 2 Microcontroller Programmer,
> class 0/0, rev 2.00/0.01, addr 125>
>
> ===[mcuee] ~/Desktop/build/fsusb/fsusb-0.1.11-2 # sudo sysctl
> hw.usb.debug=15 hw.usb.debug: 0 -> 15
>
> ===[mcuee] ~/Desktop/build/fsusb/fsusb-0.1.11-2 # sudo ./fsusb --read
> test.hex usb_set_debug: Setting debugging level to 255 (on)
> Locating USB Microchip(tm) PICDEM-FS USB(tm) (vendor 0x04d8/product 0x000b)
> usb_os_find_busses: Found /dev/usb0
> usb_os_find_busses: Found /dev/usb1
> usb_os_find_busses: Found /dev/usb2
> usb_os_find_devices: Found /dev/ugen1 on /dev/usb1
> usb_os_find_devices: Found /dev/ugen0 on /dev/usb1
> usb_control_msg: 128 6 512 0 0xbfbfe828 8 1000
> USB error: error sending control message: Input/output error
> Unable to get descriptor (-5)
> usb_control_msg: 128 6 512 0 0xbfbfe828 8 1000
> usb_control_msg: 128 6 512 0 0x8052080 41 1000
> skipped 1 class/vendor specific interface descriptors
> usb_control_msg: 128 6 513 0 0xbfbfe828 8 1000
> usb_control_msg: 128 6 513 0 0x804d100 32 1000
> Found USB PICDEM-FS USB as device '/dev/ugen0' on USB bus /dev/usb1
> USB error: error writing to bulk endpoint /dev/ugen0.1: Input/output error
> usb_bulk_write: Input/output error
> Fatal error> rjl_request_version(): USB write failed
> ===[mcuee] ~/Desktop/build/fsusb/fsusb-0.1.11-2 # dmesg | grep ugen
> ugen0: <I-Tuner Networks product 0x000b, class 0/0, rev 2.00/0.00, addr
> 126> ugen1: <Microchip Technology Inc. PICkit 2 Microcontroller Programmer,
> class 0/0, rev 2.00/0.01, addr 125>
> ugenopen: flag=1, mode=8192
> ugenioctl: cmd=40125569
> ugenclose: flag=1, mode=8192
> ugenopen: flag=1, mode=8192
> ugenioctl: cmd=40125569
> ugenclose: flag=1, mode=8192
> ugenopen: flag=3, mode=8192
> ugenioctl: cmd=80045572
> ugenioctl: cmd=c018556f
> ugenclose: flag=3, mode=8192
> ugenopen: flag=3, mode=8192
> ugenioctl: cmd=80045572
> ugenioctl: cmd=c018556f
> ugenioctl: cmd=80045572
> ugenioctl: cmd=c018556f
> ugenioctl: cmd=80045572
> ugenioctl: cmd=c018556f
> ugenioctl: cmd=80045572
> ugenioctl: cmd=c018556f
> ugenclose: flag=3, mode=8192
> ugenopen: flag=3, mode=8192
> ugenioctl: cmd=80045565
> ugen_set_config: configno 1, sc=0xc35cd000
> ugenclose: flag=0, mode=0
> ugenopen: flag=3, mode=8192
> ugenioctl: cmd=80045572
> ugenwrite:
> ugenwrite: transferred 5 bytes
> ugen_write_clear_stall_callback: sce=0xc35cd084: stall cleared
> ugen_default_write_callback: waking 0xc35cd084
> ugenclose: flag=3, mode=8192
> ugenclose: flag=3, mode=8192

I think that the write STALLED. You can check this by turning on debugging on 
the OHCI controller by:

systctl hw.usb.ohci.debug=15

Replace "ohci" by "ehci" or "uhci" if you are using such controllers.

Do you have any USB protocol analyser by hand so that you can trace the USB 
cable ?

--HPS


More information about the freebsd-usb mailing list