Posts tagged DSP/BIOS

Verbesserungsvorschläge

0

Mögliche Verbesserungen wären noch:

- Schreiben der kompletten Software, ohne DSP/BIOS und Treiber vom Hersteller, am besten in Assembler

- Bessere Reaktion auf Fehler, z.B. bei ungültigen Dateien und SD-Karten Leserfehlern

- Auslesen von Parametern wie Kanalanzahl, Samplerate, Bitbreite aus den Dateiheadern

- Implementieren und Erkennen von verschiedenen Dateiformaten, ev. Portierung einer bestehenden Bibliothek für Audio-Dateiformate.

m4ch-block-soft2

Softwareimplementierung

0

Folgendes Diagramm zeigt die Struktur der implementierten Software. Zugrunde liegt das Beispiel MP3-Player-Beispiel von Lars Lotzenburger, baut also auf DSP/BIOS von TI und der FAT lib von ChaN.

Das Programm erstellt einen DSP/BIOS Prozess. Dieser macht eine Tastaturabfrage, liest die benötigten Daten von der SD-Karte, verarbeitet diese und giebt das Resultat an einen Ausgabebuffer weiter. Die Zugriffe auf die Hardware und der Ausgabebuffer laufen ebenfalls über das DSP/BIOS.

Ich habe das MP3-Player Beispiel so modifiziert, dass es anstelle von MP3 WAV/AIFF-Dateien liest, dafür aber mehrere Dateien gleichzeitig abspielen kann. Bis zu 6 Stereo-Spuren sind möglich, dann wird die Wiedergabe hörbar langsamer. Ein Abspielen von mehreren MP3-Dateien bringt den Prozessor bereits bei zwei Dateien an seine Leistungsgrenze.

Zusätzlich habe ich noch eine Tastatursteuerung programmiert.

Verhalten der SPI-Sende-/Empfangsregister

0

Beim Versuch, eine DSP/BIOS freie Anwendung unter Verwendung des Beispielcodes zu schreiben, kommt es zu unerwarteten Problemen. Durch zeitraubende Debug-Arbeit finde ich ein Verhalten der SPI-Sende-/Empfangsregister heraus, das dazu führt, dass Bytes verloren gehen, wenn man die Register nicht richtig ausliest.

Dies machte sich im Beispielcode nicht bemerkbar, da dieser lediglich eine Sequenz von Bytes auf die Karte schreibt, wieder liest und dann vergleicht. Weil der Fehler sowohl beim Schreiben wie auch beim Lesen auftritt, wird der Beispielcode-Test fälschlicherweise als “korrekt” erkannt.

Als es konkret darum ging, gezielt Daten von der SD-Karte zu lesen, machte sich dieser Fehler bemerkbar, weil plötzlich Bytes nicht ausgelesen wurden, die jedoch in einem Dump der SD-Karte im Linux-Betriebssystem eindeutig vorhanden waren.

Ich habe beim Lieferanten des Beispielcodes folgendes Ticket eröffnet, das ich dann selbst beantwortet habe:

The answer:

changing:

*data = MMCSD_MMCDRR2;
*data++ = MMCSD_MMCDRR1;

to:

*data++ = MMCSD_MMCDRR1;
*data++ = MMCSD_MMCDRR1;

Now I have the expextet bytes in the output buffer… :-)

The question was:

Hello out there,

I try to use the sd-card example (usbstk5515_v1/tests/sd) to read such a card with an ezdsp5515 board. The issue I experience is, that only every 2nd word got read out of the card. I can confirm this with a hexdump from the card content.

eg.
On the card i have the following sequence according to a hexdump in Linux:
66 77 88 99 AA BB CC DD EE FF

When i read it out with “MMCSD_singleBlkRead”, i get in the output buffer “data”:
66 77 AA BB EE FF

The following code sequence in “MMCSD_readNWords” seemed me a little strange anyway:

*data = MMCSD_MMCDRR2;
*data++ = MMCSD_MMCDRR1;

But when i changed it to:
*data++ = MMCSD_MMCDRR2;
*data++ = MMCSD_MMCDRR1;

I got in the buffer “data”:
66 77 66 77 AA BB AA BB EE FF EE FF

That tells me, that somehow one of the 2 receive register is not working properly, probably due to a configuration.

I am not sure, if you can help, but i hope that out there is some expert who can give me a hint.

Thanks in advance

Elektor MP3-Player / DSP-Bios

0

Ich konnte den SDcard-MP3-Player aus dem Elektor-Magazin (www.ti.com/ww/eu/university/pdf/Elektor_en_MP3_C5515.pdf) kompilieren und auf dem eZdsp-Board zum Laufen bringen. Probleme bereitete v.a. ein Update von CCS. Alte Projekte liessen sich danach nicht mehr kompilieren, folgende Fehlermeldung:

This project was created for a device-variant that is not currently 
recognized: TMS320C55XX.TMS320VC5515. Please install the
device-variant descriptor, or migrate the project to one of the
supported device-variants.
MP3Dec	project	1313484944829	212

Ich habe die Projekte neu angelegt und alle Dateien aus dem alten Projekt importiert, sowie die include-Pfade ergänzt. Dann funktionierte es wieder.

Der MP3-Player von Elektor basiert auf dem DSP-Bios von TI. Hierbei handelt es sich um einen Kernel, der u.a. Hardware-Treiber und Multithreading (softwarebasierte Nebenläufigkeit) bereitstellt. Hierzu einige Infos auf dem Web:

Der in diesem Projekt verwendete MP3 Decoder wird von TI in binärer Form zur Verfügung gestellt. Es ist also kein Quellcode für den Decoder erhältlich. Der Autor des Artikels Lars Lotzenburger ist übrigens Mitarbeiter von TI Germany.

Go to Top