www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Blackfin, Assembler, Parallelität, GCC und Optimierung


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich sitz gerade vor einem Blackfin BF537 Board und weiß gerade nicht, wo 
ich so richtig anfangen soll.

Was ich bisher gemacht hab: Das Board ist eine LeanXCam mit Micron 
Kamera-Chip. Samples, in C compiliert, laufen dort und eine eigene 
DeBayer-Funktion klappt auch, obwohl ich den Eindruck bekomme, dass der 
GCC weit weg von Optimal ist für einen DSP.

Daher meine Frage:
- Geh ich recht in der Annahme, dass der GCC keine Ahnung von 
Parallelität und guten DSP-Code für den Blackfin hat?

- Heißt das, dass man eigentlich immer in Assembler programmieren muss, 
wenn man was haben möchte, das die Architektur auch ausnutzt?

- Kann mir jemand kurz erklären, wie man das hier zu lesen hat?
 A0+=R0.L*R1.L || R0.L = W[I1++] || R1.L = W[I2--];
(Wie ist es mit der Datenabhängigkeit? Kann R1.L und R0.L geladen 
werden, während die Daten gebraucht werden, oder findet der MUL mit den 
alten Werten statt und am Ende der Ausführung hat R0.L und R1.L neue 
Werte? Kann das jemand kurz erklären, damit ich überhaupt eine 
Vorstellung davon krieg wie das funktioniert?)

- Kennt jemand eine kostengünstige Entwicklungsumgebung, deren Compiler 
selbst die Algorithmen und die Parallelitäten erkennen kann und 
verwendet, sodass man mit Hochsprache auskommt?

- Weiß jemand ein gute Buch ala "Blackfin in Assembler programmieren" 
mit Einführungsbeispielen und Erklärung zu Parallelität und Syntax?

Viele Frage, tut mir leid! Aber ein DSP ist halt was anderes als Ein 
ARM9 ...

Grüße
Gast, der sich für Antworten bedankt!

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gast wrote:
> - Geh ich recht in der Annahme, dass der GCC keine Ahnung von
> Parallelität und guten DSP-Code für den Blackfin hat?
>
> - Heißt das, dass man eigentlich immer in Assembler programmieren muss,
> wenn man was haben möchte, das die Architektur auch ausnutzt?

Ja, aber meistens beschränkt sich das auf ein paar Funktionen 
(Vektor-/Matrixmultiplikation, FFT), und viele davon gibt es schon 
fertig in irgend welchen Bibliotheken. Bei den restlichen 95% des Codes 
bringt es nicht viel.

> - Kann mir jemand kurz erklären, wie man das hier zu lesen hat?
>  A0+=R0.L*R1.L || R0.L = W[I1++] || R1.L = W[I2--];

Erst wird die MAC-Operation ausgeführt, dann werden die Register neu 
geladen und dabei die Pointer erhöht bzw. verringert.

> - Kennt jemand eine kostengünstige Entwicklungsumgebung, deren Compiler
> selbst die Algorithmen und die Parallelitäten erkennen kann und
> verwendet, sodass man mit Hochsprache auskommt?

Ich vermute mal dass VisualDSP besser optimiert, aber im Allgemeinen ist 
es für einen Compiler schwierig guten DSP-Code zu erzeugen. In jedem 
Fall muss man sich einige Gedanken um die Struktur machen, in welche 
Speicherbereiche man die Variablen legt, wie viele Pointer man 
verwendet, usw.

> - Weiß jemand ein gute Buch ala "Blackfin in Assembler programmieren"
> mit Einführungsbeispielen und Erklärung zu Parallelität und Syntax?

Leider nicht, aber ich bin sicher dass es bei ADI genug PDFs zu dem 
Thema gibt.

Autor: T. H. (pumpkin) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gast wrote:
> Hallo,

> ich sitz gerade vor einem Blackfin BF537 Board und weiß gerade nicht, wo
> ich so richtig anfangen soll.


http://www.analog.com/static/imported-files/proces...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.