Eine Nebenaufgabe war, die SD-Karte direkt über USB von einem Hostrechner aus beschreiben zu können. Hierzu muss die USB-Hardware des DSP als “USB Mass Storage” konfiguriert werden.
Heute ist es mir gelungen, basierend auf dem USB Demo des C5515 Boards ein eigenes Projekt zu erstellen, dass kompiliert, und sich danach unter Windows 7 als USB MASS STORAGE Device anmeldet. Ich habe hierzu lediglich die USB Deskriptoren leicht modifiziert, gemäss folgender Spezifikationen:
http://www.usb.org/developers/devclass_docs/Mass_Storage_Specification_Overview_v1.4_2-19-2010.pdf
http://www.usb.org/developers/devclass_docs/usbmassbulk_10.pdf
Es stellen sich nun verschiedene Fragen:
- Wie funktioniert der USB-Interrupt-Mechanismus genau? Das Demo definiert keine ISR-Vektoren, sondern loopt lediglich in einer Endlosschleife durch eine pseudo USB-ISR. Hierzu habe ich folgendes Dokument gefunden: Setting up TMS320 DSP interrupts in C (http://focus.ti.com/lit/an/spra036/spra036.pdf )
- Welchen MASS STORAGE transport Standard soll verwendet werden (bInterfaceSubClass)? Beim Beispiel hat 06h ( SCSI transparent command set) funktioniert, 00h ( SCSI command set not reported ) hat nicht funktioniert.
- Teilweise beantwortet: http://www.lvr.com/mass_storage_faq.htm
- Die USB-Funktionalität ist spärlich dokumentiert. Auf der Suche nach weiteren Hinweisen habe ich folgende interessanten Dokumente gefunden:
- TI Prozessor Wiki Seiten: http://processors.wiki.ti.com/index.php/Category:C5000, http://processors.wiki.ti.com/index.php/C5504/05/14/15_Training
- TI Lernmaterial: http://www.ti.com/ww/eu/university/roms.html
- Elektor Artikel zum erstellen eines MP3-Players auf meinem Testboard: http://www.elektor.com/magazines/2011/march/mp3-one-two-three.1706996.lynkx
Auf eine weitere Implementierung habe ich vorerst verzichtet, da andere Arbeiten höhere Priorität haben bzw. das Projektziel auch ohne dieses Zusatzfeature erreicht werden kann.