Table of Contents
Balaji Rao: USB Support Project
Journal
Week 3
Saturday, June 14th
Whole day spent on identifying the reason for tx failure. Looked like a very scary bug. Spend more than 10 hours debugging it. Finally I tracked it down to the improper setting of the Data Toggle synchronization bits. Next comes the rx part which is the most interesting. I'll hopefully clean up the source and commit it tomorrow.
Friday, June 13th
Decided to try running gPXE on bare metal. The UHCI host controller is detected properly. But the MAC address reading failed. Sat down to debug it whole day and fixed it before the meeting! But no packets seemed to come out the adapter.
Thursday, June 12th
Lots, lots of coding. But no commits! The happiest part is that, the USB NIC sends out packets as seen by wireshark. Its exciting to see packets flow!
I'll break up code into smaller pieces and commit them by tomorrow.
Wednesday, June 11th
Commit : 39590abe9428f4f56d69ec1dbb2caf7c21c1a3ca
Various descriptors are now obtained successfully. Reading endpoint descriptors gives us valuable information like Max Packet Size, end point address etc.
Tuesday, June 10th
Commit : ceac0a49b4d08d6f9a113dbafba049a86ccc01e1
Started working on writing code to obtain various descriptors from the device. Then comes setting a configuration in the device. Once this is done, the device is usable. We can start sending and receiving packets through its endpoints.
Monday, June 9th
Commit : 03d5d0339af5ba08af9faefd5f5159e057758c5c
The device when attached answers at the default address (zero). We need to eventually set a unique address using a SET_ADDRESS control message. This commit adds support for assigning addresses to usb device. I've verified that this works by sending a GET_DESCRIPTOR to the new address. Next comes configuration, interface support. Setting interfaces, and configurations. After this comes bulk transactions.
Commit : e4fa5d0f8e77ec5ddef8258c7c63b3d912459352
Attempted to use the linker table mechanism for automatic inclusion of usb drivers. Created a dm9601.c - USB device driver for dm9601(0a46:9601). Did not work. I wonder it has something to do with the filename. It works in some paths, sometimes. But not all. Sent a mail to SoC mentors and mcb30 regarding this. Awaiting reply..