Forum: Digitale Signalverarbeitung / DSP / Machine Learning Blackfin ADSP-BF532 - Einstieg


von Werner (Gast)


Lesenswert?

Hi Leute,
ich hab gestern von nem Bekannten einen Tray ADSP-BF532 geschenkt 
bekommen. Die Teile sind relativ neu, und waren noch original verpackt.
Jaaa, und nun hatte ich natürlich die glorreiche Idee, mal was damit 
anzustellen. Rein vom elektronischen her sollte der Blackfin kein allzu 
grosses Problem darstellen; ich habe schon grössere Prozessoren 
eingesetzt. Das sollte also gehen.
Die Frage ist nur, wie man das Teil Programmiert?
Wie ich sehe, hat er einen JTAG-Anschluss. Kann man damit was machen? 
Oder gibt es noch einen besseren Weg?

Was ich grundsätzlich mal machen möchte: ein kleines Board, möglichst 
einfach, und nur mit dem nötigsten drauf, damit ich mal damit ein 
bisschen spielen kann. Die 40 Stk Blackfin-Prozessoren wegzuschmeissen 
wäre mir dann doch zu schade ;)

von Strubi (Gast)


Lesenswert?

Hi Werner,

JTAG ist eigentlich beim Blackfin der 'normale' Weg, leider kann der 
BF523 noch nicht von UART booten.
Beim Boarddesign muss man allerdings sehr akribisch drauf achten, dass 
die Impedanz fuer Flankensteilheiten <= 6ns ausreicht, der Blackfin hat 
einen furchtbar schnellen Core und die IOs reagieren entsprechend.
Wenn Du paar von den Dingern (nehme an, LQFP?) loswerden willst, findest 
Du hier bestimmt ein paar Interessenten (inkl. mich :-) )
Guck sonst mal nach dem STAMP BF533 Schaltplan via Google, das ist ein 
ganz ordentliches Referenzdesign mit uClinux-Support. Wuerde allerdings 
inzwischen eher ein SPI-Flash anstatt wie dort ein paralleles nehmen.

Gruesse,

- Strubi

von Werner (Gast)


Lesenswert?

@Strubi
danke erstmal.
Gibt es für den Blackfin-JTAG auch so einen selbstbau-Adapter wie z.B. 
für ARM? und wie schaut es mit der Software aus? Sovie ich weiss, 
benötigt man VisualDSP. Kann das Programm mit einem selebr gebauten 
JTAG-Adapter arbeiten? Oder wie erstellt man denn sonst Programme für 
den Blackfin?

Viele Grüsse

von T. H. (pumpkin) Benutzerseite


Lesenswert?

Hier gibt es einen "Selbstbauadapter", m.W. Open Source:

  http://docs.blackfin.uclinux.org/doku.php?id=hw:jtag:gnice

Nachteil ist wohl die vglw. langsame Verbindung. ICEbear ist eine 
weitere 3rd-Party-Methode. Das Teil hab ich mir zugelegt, funktioniert 
recht zuverlässig.

  http://www.section5.ch/icebear

Diese Adapter funktionieren aber nicht mit VDSP++. Hier benötigt man 
entweder ein EZ-Kit für den entsprechenden Prozessor (JTAG On-Board) 
oder man investiert ein nettes Sümmchen in einen externen JTAG-Adapter 
von ADI.

Applikationen kann man für den Blackfin mittels VDSP++ erstellen oder 
man geht mit

  http://blackfin.uclinux.org/

auf Open Source. Hier hat man die Wahl zwischen uClinux oder "bare 
metal" Applikationen.

Cheers!

Edit: Wenn du Überschuss hast dann würde ich dir ebenfalls den einen 
oder anderen 532er abnehmen.   :^)

von Werner (Gast)


Lesenswert?

@Pumpkin
ich melde mich dann, bezüglich der 532er, die du gerne hättest :) erst 
baue ich ein kleines Board.

Wenn ich mit einem Compiler mein Programm erstelle, nehme ich an, habe 
ich ein hex-File. Strubi hat empfohlen, doch besser ein serielles Flash 
einzusetzen. Kann der Blackfin per JTAG ein Solches programmieren? oder 
wäre es klüger, einen kleinen Mikrocontroller auf dem Board vorzusehen, 
der das Flash programmiert?

von geb (Gast)


Lesenswert?

Hallo!

der BF532 läßt sich auch über SPI booten. Müsste man dann halt noch 
einen kleinen MC dazuschalten.
Hab auch Interesse!

Grüße Gebhard

von Werner (Gast)


Lesenswert?

Hmm, wenn das Booten per SPI möglich ist, dann könnte man ja anstatt 
eines externen SPI-Flash wirklich einen MC dazuschalten. Das 
DSP-Programm wird dann auf den MC runtergeladen, und der lädt es dann in 
den Blackfin. Somit kann man ein spezielles Downloadkabel einsparen. 
Debuggen geht mit dieser Kombination natürlich nicht, aber das ist mir 
persönlich nicht so wichtig. Bisher habe ich mit ARM-Controllern 
experimentiert; und bis vor nem halben Jahr hatte ich gar keinen 
Debugger. Da habe ich alles nach dem System "Try and Error" gemacht, was 
zwar mühsam war, aber doch funktioniert hat.....

von geb (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Werner!
Ich hab da noch eine boot Anleitung bei mir gefunden. Ich hab mir vor 2 
Jahren mal ein BF532 stamp Board gekauft, das war mit einem Linux 
Betriebssystem. Das Zeugs war aber ein ziemlich wüstes Chaos, mir gelang 
es nicht eimal nach 5 Tagen irgend eine Applikation zu compilieren. Hab 
dann entnervt das Zeug einem Studenten gegeben. Der hat dann wohl so 2 
Wochen damit heftigst gekämpft (falsches Betriebssystem war original im 
Flash) und dann konnten wir mal wenigstens einen Timer ansprechen und in 
Betrieb nehmen. Der Zugriff auf Blackfin-Register war aber sehr mühsam, 
und wie das dann mit eigenen Interrupts ginge war trotz ausufernder 
Recherchen nicht abzusehen. Ich hab dann mein Projekt mit einem ARM 
Controller und 2 stk. ADSP2184 gemacht, das läuft auch super. Dennoch 
reizt mich dieser Blackfin sehr, ist einfach ein verdammt schnelles 
Teil.
Dennoch: mit einem "normalen" MC hat der nicht viel zu tun. Der Blackfin 
stellt hohe Anforderungen an die Programmierung und Hardwaredesign.

liebe Grüße Gebhard

von Werner (Gast)


Lesenswert?

Hi geb,
danke für das PDF, sieht gut aus.
Ich hab mir das ganze jetzt so gedacht, dass ich einen normalen 
Mikrocontroller nehme, der kann dann über USB oder RS232 Daten entgegen 
nehmen und in einem Dataflash oder auf SD-Karte speichern. Und beim 
Booten lädt er dann das entsprechende File aus dem Flash (oder ebe von 
der Karte), und spielt das über den "SPI Slave Mode" in den Blackfin 
über; das sollte ja gehen, und ich kann mir ein extra Programmiergerät 
sparen.

Du sagst, der Blackfin sei wirklich sehr schnell, und würde hohe 
Anforderungen stellen.
Kann ich denn nicht fürs erste mal den als normalen MC benutzen? ich 
muss ja die möglichen 400 MHz nicht gleich ausreizen.
Was ich aber gerne mal ausprobieren möchte, wäre, ADC und DAC 
anzuschliessen, und mich dann z.B. in digitale Filter einarbeiten (was 
ich sowieso schon lange will).
Ich hab auch kein Problem damit, gleich eine 4 Layer Platine 
herzustellen, von daher... das sollte schon machbar sein, oder?

Gruss

von geb (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Werner!
Ja, das Booten wird jetzt kein unüberwindliches Problem sein. Als 
"normalen" MC kann man das Ding natürlich auch verwenden,aber mit 
welchen Tools willst du denn die Programme schreiben? Ich hab die 
ADSP218x immer in Assembler programmiert, das ging recht gut und der 
Code war auch nach Jahren noch lesbar. Der Blackfin geht aber auch gut 
in C zu programmieren, da gibt's aber glaub ich nur Visual DSP von AD 
und das kostet richtig Geld.
Ja und die Platine ist, glaub ich ,nur dann kritisch wenn man das 
Bus-System benutzt.
8 Kanal A/D karten mit 16Bit/32kHz/Kanal hätte ich, die man 
wahrscheinlich so wie sie ist einfach an die SPORT's anschließen 
kann(läuft momentan an 2 ADSP2184).
Trotzdem, ganz einfach schätze ich die Programmiererei nicht ein.Bevor 
man mit dem Ganzen anfängt, sollte man einen (möglichst 
kostenlosen)Compiler finden.
Ich schick mal das Manual mit.

Grüße

von Patrick (Gast)


Lesenswert?

>Diese Adapter funktionieren aber nicht mit VDSP++. Hier benötigt man
>entweder ein EZ-Kit für den entsprechenden Prozessor (JTAG On-Board)
>oder man investiert ein nettes Sümmchen in einen externen JTAG-Adapter
>von ADI.

Dazu habe ich auch grad noch ne Frage. Ich habe ein BF533 EZ-Kit. Das 
programmiere ich per USB mit VDSP++. Zusätzlich habe ich noch ein 
eigenes Board mit einem BF533 drauf und entsprechender 
JTAG-Schnittstelle. Kann ich die beiden Schnittstellen 1:1 verbinden und 
dann mit VDSP mein eigenes Board "debuggen", oder geht das nicht, weil 
dann zwei DSPs angeschlossen sind?

von Werner (Gast)


Lesenswert?

Hi geb,
na von Visual DSP gibts ja ne Testversion. Die will ich mir zuerst mal 
besorgen. Danach mal schauen, irgendwie wird das sicher zu schaffen 
sein!
Was ich mich noch frage:
Kann man in Visual DSP seinen C-Code programmieren, und kriegt nachher 
ein Hex-File, das man so eins zu eins auf den Blackfin runterladen kann? 
Oder was kommt als Kompilat da heraus?
Aber du siehst das auch so, oder? mit meinem Verfahren, da noch einen 
zusätzlichen Controller einzusetzen, könnte das doch ganz gut klappen.

Warum meinst du, dass es beim Einsatz des Businterface zu Problemen 
kommen könnte? Selbst bei einem 4lagigen Board?

von Patrick (Gast)


Lesenswert?

>Kann man in Visual DSP seinen C-Code programmieren, und kriegt nachher
>ein Hex-File, das man so eins zu eins auf den Blackfin runterladen kann?
>Oder was kommt als Kompilat da heraus?
Normalerweise macht der ein Loader-File (ldr), dass Du dann ganz einfach 
auf den Blackfin, also auf einen externen Flash, laden kannst.

Schau Dir doch mal das Schema zu einem EZ-Kit an. Da kannst Du bestimmt 
einiges übernehmen.

von geb (Gast)


Lesenswert?

@Werner

Die Signale am Bus sind extrem schnell, die eingesetzten Speicher 
sollten es auch sein, sonst hast du einen Ferrari mit Traktorreifen. Die 
Folge ist:
Übersprechprobleme zwischen Leitungen. Ein weiteres Ungemach droht bei 
unterschiedlich langen Busleitungen. Bevor man sich da dran macht ist's 
glaub ich gut, ein Referenzdesign zu studieren.
zu Visual DSP:
ja, hat ich auch einmal, mit meiner Version konnte man auch länger 
arbeiten, wenn man das Datum zurückgestellt hat. Ob das noch immer so 
ist, weiß ich nicht.
Ich hab heute den GNU für Blackfin runtergeladen, bin mir aber nicht 
100% sicher, ob der nur mit Linux funktioniert.
Noch eine Frage: haben deine BF's LQFP oder BGA Gehäuse?

Grüße Gebhard

von Strubi (Gast)


Lesenswert?

Werner:

Per JTAG kannst du das SPI-Flash locker programmieren. Der ICEbear 
unterstuetzt zumindest fuer BF5[2,3]7 ST-kompatible SPI-Flashes (m25p80, 
etc), fuer den BF532 muesste man den Source vom Flashloader (frei 
verfuegbar) etwas anpassen.
Obwohl ich 'biased' bin, wuerde ich diesen Chip ohne JTAG nicht anfassen 
- er ist einfach zu komplex, mit printf-Debugging ist da nix, schon gar 
nicht bei eigener Hardware. Man muss ja nicht gleich 2000 USD fuer ein 
HP-ICE ausgeben, aber bei potentiell tagelangem Im-Dunkeln-Stochern 
lohnt sich das Sparen hier absolut nicht, zumindest ein gnICE sollte 
drinliegen.

Noch ein paar Bemerkungen:

- 4 Lagen-Board reicht fuer einen Blackfin, solang man alles schoen eng 
routet, und die SDRAM-Leitungen nicht ueber Schlitze fuehrt, kurz, auf 
Impedanz achtet.
- Die GNU-Toolchain gibts als blackfin-elf und als blackfin-uclinux. Mit 
der elf-Variante kann man prima 'bare metal'-Applikationen machen.
Stellt inzwischen VDSP von der Effizienz her laengst in den Schatten, 
aber es ist halt GNU, jeder soll selber abwaegen, was ihn weniger kostet 
(steile Lernkurve und billige Toolkosten vs. klickbar und teuer). Gibt 
dazu hier im Forum schon einige threads..

An Patrick: Du kannst prinzipiell ein zweites Geraet in die JTAG-Chain 
am EZKIT einschleifen. Also:

TDI -> TDI_a
TDO_a -> TDI_b
TDO_b -> TDO

und TMS, TCK und TRST direkt miteinander verbinden. a und b stehn fuer 
die beiden Boards.
Habe das aber nur mit dem ICEbear getestet, vermutlich wird VDSP genau 
solche Tricks 'verbieten' und keine 2 Devices unterstuetzen. Muesstest 
Du also an den Leiterbahnen rumcuttern :-)

Gruss,

- Strubi

von Strubi (Gast)


Lesenswert?

> und TMS, TCK und TRST direkt miteinander verbinden. a und b stehn fuer

Da fehlt das Wort 'jeweils'.
Also TMS -> TMS_a -> TMS_b, usw.

Nicht dass es dann raucht und ich zahlen muss :-)

- Strubi

von Werner (Gast)


Lesenswert?

@Strubi

> solang man alles schoen eng routet,

Hmm, was heisst hier eng? alle Leiterbahnen möglichst nahe beieinander, 
und die Bauteile auch? oder wie?

Danke für den Tipp mit der GNU-Toolchain. Ich werd mir die auf jeden 
Fall ansehen.

Also, um nochmals darauf zurück zu kommen: wirkliche High-End Boards 
will ich nicht bauen.
Es geht nur um den Lerneffekt, und darum, mal mit einem richtigen DSP zu 
arbeiten. Das höchste der Gefühle, was ich mir momentan vorstelle:

SPI-ADC und -DAC dran knallen, vielleicht noch ein SDRAM. Und dann 
bisschen digitale Filter basteln, oder mal versuchen, Audio-Sachen zu 
machen (z.B. ein Wave- oder MP3-File oder was weiss ich, was im SDRAM 
liegt, abzuspielen). Damit langweilt sich der Blackfin wohl nur, aber 
wenn ich schon einige zum 'verbraten' habe.... ;)

@geb
Es sind alles ADSP-BF532ARTZ-400 im LQFP167.

von Patrick (Gast)


Lesenswert?

>An Patrick: Du kannst prinzipiell ein zweites Geraet in die JTAG-Chain
>am EZKIT einschleifen. Also:

>TDI -> TDI_a
>TDO_a -> TDI_b
>TDO_b -> TDO

>und TMS, TCK und TRST direkt miteinander verbinden. a und b stehn fuer
>die beiden Boards.
>Habe das aber nur mit dem ICEbear getestet, vermutlich wird VDSP genau
>solche Tricks 'verbieten' und keine 2 Devices unterstuetzen. Muesstest
>Du also an den Leiterbahnen rumcuttern :-)
Genau das ist das Problem. Der DSP auf dem Board ist fest an die 
JTAG-Schnittstelle angeschlossen. Ich müsste ja theoretisch die TDI oder 
TDO-Leitung auftrennen und dann mein Board dazwischen henken. Und das 
geht ohne "rumcuttern" leider nicht. Ausserdem können diese Signale 
irgendwo auf den 10 Lagen des Prints versteckt sein.

von Martin S. (strubi)


Lesenswert?

Hi Werner,

>
>> solang man alles schoen eng routet,
>
> Hmm, was heisst hier eng? alle Leiterbahnen möglichst nahe beieinander,
> und die Bauteile auch? oder wie?

Nee, die Leiterbahnen moeglichst nich, wegen Crosstalk. Aber die 
Bauteile gerne so nah wie moeglich. Google mal nach den Application 
Notes, z.b. spraar7.pdf von TI zu USB 2.0, da sind so ein paar 
Designregeln beschrieben. Je kuerzer die Leitungen, desto besser die 
Signale.

>
> Danke für den Tipp mit der GNU-Toolchain. Ich werd mir die auf jeden
> Fall ansehen.
>
> Also, um nochmals darauf zurück zu kommen: wirkliche High-End Boards
> will ich nicht bauen.
> Es geht nur um den Lerneffekt, und darum, mal mit einem richtigen DSP zu
> arbeiten. Das höchste der Gefühle, was ich mir momentan vorstelle:
>

Das Problem ist: Weil der Chip sackschnell ist und sich an den 
Eingaengen keine extra Buffer befinden, gilt: Auch wenn Du 'low speed' 
faehrst, muessen die Flanken immer noch sehr steil sein. Also musst Du 
schon ein bisschen in 'High end'-Kategorien denken , sonst hast Du ev. 
Frust mit einem instabilen Board. Habe schon einige Designs 'begleitet', 
da lief nicht immer alles beim ersten Mal stabil (SDRAM is immer 
kritisch).

> SPI-ADC und -DAC dran knallen, vielleicht noch ein SDRAM. Und dann
> bisschen digitale Filter basteln, oder mal versuchen, Audio-Sachen zu
> machen (z.B. ein Wave- oder MP3-File oder was weiss ich, was im SDRAM
> liegt, abzuspielen). Damit langweilt sich der Blackfin wohl nur, aber
> wenn ich schon einige zum 'verbraten' habe.... ;)
>

Irgendwo gab's/gibt's ein 'BlackStamp' design mit nem LQFP-BF532. Ich 
weiss nicht, wie stabil das laeuft, und das Design ist etwas...ich sag's 
mal so: "akademisch", aber Du kannst Dir da sicher was abgucken.

Wenn Du deine Design-Gerberdaten hier postest, guckt sicher mal jemand 
drueber und gibt dir Feedback.

Gruesse,

- Strubi

von Patrick (Gast)


Angehängte Dateien:

Lesenswert?

Ich hab erst grad eine Schaltung mit einem BF533 erstellt. Die 
funktioniert einwandfrei. Da Layout habe ich mal angehängt. Man sieht 
darauf zwar nicht sehr viel, aber es handelt sich dabei um einen 8-Lagen 
Multilayer mit 2 GND-Lagen und einem Versorgungslayer.

von Patrick (Gast)


Angehängte Dateien:

Lesenswert?

Und hier noch der fertig bestückte Print. Die Schaltung selbst habe ich 
fast 1:1 vom BF533 EZ-Kit übernommen. Nur als Flash musste ich einen 
anderen Baustein nehmen, weil der auf dem EZ-Kit nicht mit dem auf dem 
Board integrierten gnICE (oben links) kompatibel ist.

Die Programme dazu schreibe ich in VDSP++. Das erstellt mir ein 
ldr-file, das ich dann mit urjtag über den gnICE in den Flash laden 
kann. VDSP++ gibt es in einer 90 Tagen Testversion. Durch Rücksetzen des 
Datums auf Deinem Rechner, ist sie auch etwas länger gültig ;-)

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
Noch kein Account? Hier anmelden.