Wiki > Main > UsbSoftwareStack (compare)
Difference: UsbSoftwareStack (r24 vs. r23)
WARNING the information on this page is obsolete! See PortalPlayerUsb
In the area of System-On-Chip microprocessors, which have everything from power management over audio hardware (DAC and ADC) to USB (Device/Host/OTG) in one chip, the processing power is big enough to move from hardware based components to software based ones. A very good example is the Archos Jukebox units , which have used chips to handle mp3 decoding and USB2ATA?-Bridge. In contrast to it there is the SanDisk Sansa player , which makes use of software codecs to de/encode audio and needs a software based USB Stack. Always new hardware targets are big challenges for software developers, in this case the RockBox community , because you need to design new subsystems in a very portable way and keep every time in mind that you are working on an embedded device.
The goal for this Summer of Code 2007 project will be to write a portable USB stack, with the main focus on the Sansa e2xx players. I'd rather have this formulated as 'first test platform on sansa e2xx, but to be used on all targets that do not have an USB/ATA bridge' -- PeterDHoye
What should the usb stack support:
Optional if time permits:
As writing an USB stack is not an easy task I will look at existing open-source solutions and port one of them to RockBox or I will use the best fitting one as "place to look" when I do the coding work of an usb stack from scratch.
Here is a list of candidates found:
In the evaluation process I looked at every usb stack to see if the following requirements are fulfilled.
USB for Real-Time aims at providing a hard real-time capable implementation of an USB stack on top of Linux/Xenomai. It comes with a stack core and an UHCI host controller drivers. Future work will deal with a EHCI (2.0) and various high-layer drivers.
PORUS is a portable USB stack for USB peripherals. It handles enumeration and many standard control requests, and provides a portable API for performing USB transactions.
lpcusb is a small usb stack for the built-in USB controller in LPC214x microcontrollers.
List of documentation that may be usefull:
usb_dump1.zip: dump of sansa usb registers inside manufacturer mode (thanks webguest83 whoever you are)
usb_0.txt: reg dump in manufacturer mode (some more regs than in the zip)
20070829_command_verification.txt: result of usb test suite as on 29/08/2007
r25 - 28 Mar 2008 - 17:38:27 - JustinHanniganRevision r24 - 28 Mar 2008 - 13:48 - PeterDHoye
Revision r23 - 27 Sep 2007 - 00:17 - NicolasPennequin
Copyright © by the contributing authors.