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!
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.
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/processor_manuals/blackfin_pgr.ref.man.rev1.3.pdf
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.