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 ;)
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
@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
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. :^)
@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?
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.....
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
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
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
>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?
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?
>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.
@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
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
> 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
@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.
>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.
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
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.
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 ;-)