Greetings,
It should fall back, but not everything does that properly. Just for checking the basic functioning, any old USB 1.1 device (keyboard, mouse, hub) will do to at least see that it was recognized and configured.
IIRC, the sequence is: 1. detect that a device is connected to the port 2. enable the port 3. Assign a USB ID with a setup packet 4. query for device type and strings 5. If a suitable block device, load the payload.
5 used to be a stream object (like in the old LinuxBIOS code) handed to a copy of the the ELF loader. the read method set up the request and called into the USB polling loop. I'm guessing that's
One potential issue there is that control of the physical port between UHCI or OHCI (for 1.1) and EHCI (for 2.0) is determined by a bit in a register. I'm not sure what happens if it's set wrong, but I suspect it could look like your debug output.
was this exact setup working before r54? One possability is that the USB code always had a bug that wasn't visible when allocations were quietly double the requested size.
G'day, sjames
On Fri, 28 Mar 2008 joe@smittys.pointclark.net wrote:
Quoting pyro pyro@linuxlabs.com:
Greetings,
The code has seen some changes since I wrote it that I haven't kept up with, but it never handled USB 2.0 at all other than to ignore the EHCI controller and force any devices to fall back.
Right, so it should just "fall back" to USB 1.1 correct?
If you have an older USB device around, it may be informative to try plugging that in just to see if it gets enumerated.
G'day, sjames
Hmm, not sure if I have any USB 1.1 drives....
Thanks - Joe
On Fri, 28 Mar 2008 joe@smittys.pointclark.net wrote:
Can you svn up and try again?
After r45, it just hangs after attempting to free non-allocated memory (see below). Help? Could this have something to do with USB 2.0?
Booting 'uda:/isolinux/vmlinuz console=tty0 console=ttyS0,115200n8 initrd=uda:/ isolinux/initrd.img text' malloc_diag: alloc: 312 bytes (4 blocks), free: 32448 bytes (1 blocks) malloc_diag: alloc: 328 bytes (5 blocks), free: 32432 bytes (1 blocks) file_open: dev=uda, path=/isolinux/vmlinuz LinuxLabs USB bootloader uhc_init: Found UHCI at 28c0 uhc_reset: Resetting UHCI uhc_init: uhc_init setting framelist to: 076b9000 uhc_start: Starting UHCI dump_uhci: HCI at 000028c0 uhc_init: Found UHCI at 28e0 uhc_reset: Resetting UHCI uhc_init: uhc_init setting framelist to: 076b9000 uhc_start: Starting UHCI dump_uhci: HCI at 000028e0 uhc_init: Found UHCI at 2c00 uhc_reset: Resetting UHCI uhc_init: uhc_init setting framelist to: 076b9000 uhc_start: Starting UHCI dump_uhci: HCI at 00002c00 malloc_diag: alloc: 8536 bytes (6 blocks), free: 24224 bytes (1 blocks) init_framelist: frame_list is at 13b000 dump_link: frame_list_link: addr: 0012ec70 dump_link: frame_list_link: raw addr: 77e7c70 dump_link: frame_list_link: terminate: 0 dump_link: frame_list_link: queue: 1 dump_link: frame_list_link: depth: 0 malloc_diag: alloc: 16744 bytes (7 blocks), free: 16016 bytes (1 blocks) init_framelist: frame_list is at 13d000 dump_link: frame_list_link: addr: 0012ec90 dump_link: frame_list_link: raw addr: 77e7c90 dump_link: frame_list_link: terminate: 0 dump_link: frame_list_link: queue: 1 dump_link: frame_list_link: depth: 0 malloc_diag: alloc: 24952 bytes (8 blocks), free: 7808 bytes (1 blocks) init_framelist: frame_list is at 13f000 dump_link: frame_list_link: addr: 0012ecb0 dump_link: frame_list_link: raw addr: 77e7cb0 dump_link: frame_list_link: terminate: 0 dump_link: frame_list_link: queue: 1 dump_link: frame_list_link: depth: 0 malloc_diag: alloc: 26536 bytes (9 blocks), free: 6224 bytes (1 blocks) poll_usb: poll_usb1 i=0 poll_u_root_hub1 v=00001080 poll_u_root_hub1 v=00001083 poll_u_root_hub2 v=00001083 poll_u_root_hub21 v=00001083 Connection on port 28d2 New USB device, setting address 2 uhci_control_msg: uhci_control_msg: request_type = 0 request = 5 wLength=0 malloc_diag: alloc: 30648 bytes (10 blocks), free: 2112 bytes (1 blocks) dump_uhci: HCI at 000028c0 dump_td: failed_transaction: TD(0012fcc0): dump_td: failed_transaction: type: SETUP dump_td: failed_transaction: retries: 3 dump_td: failed_transaction: IOC dump_td: failed_transaction: active: 0001 dump_td: failed_transaction: device_addr: 00 dump_td: failed_transaction: endpoint: 0 dump_td: failed_transaction: data_toggle: 0 dump_td: failed_transaction: max_transfer: 7 dump_td: failed_transaction: actual: 0 dump_td: failed_transaction: link: dump_link: failed_transaction: addr: 0012fce0 dump_link: failed_transaction: raw addr: 77e8ce0 dump_link: failed_transaction: terminate: 0 dump_link: failed_transaction: queue: 0 dump_link: failed_transaction: depth: 0 dump_td: failed_transaction: TD(0012fce0): dump_td: failed_transaction: type: IN dump_td: failed_transaction: retries: 0 dump_td: failed_transaction: active: 0001 dump_td: failed_transaction: device_addr: 00 dump_td: failed_transaction: endpoint: 0 dump_td: failed_transaction: data_toggle: 1 dump_td: failed_transaction: max_transfer: 7ff dump_td: failed_transaction: actual: 0 dump_td: failed_transaction: link: dump_link: failed_transaction: addr: f8947000 dump_link: failed_transaction: raw addr: 0000 dump_link: failed_transaction: terminate: 1 dump_link: failed_transaction: queue: 0 dump_link: failed_transaction: depth: 0 Attempt to free non-allocated memory: 001417fc
Thanks - Joe
||||| |||| ||||||||||||| ||| by Linux Labs International, Inc. Steven James, CTO
866 824 9737 support