Hi, habe zwei Fragen zu dem Blackfin: 1.: Habe einen ADSP-BF537BBCZ-5B, der nach Spezifikation 500MHz schafft. Standardmäßig ist er mit 485 MHz (22.1 MHz Quartz mal 22) getaktet. Ist irgendwas dagegen einzuwenden, ihn mit 509 MHz oder evtl. noch höher zu takten? Hat jemand damit Erfahrung? Brauche ich dann evtl. einen passiven Kühler? 2.: Nun kann man ja auf den Blackfin ucLinux draufspielen. Vorteil wäre natürlich man hätte mehrere Threads und Prozesse. Aber wie ist es mit dem Geschwindigkeitsverlust hierdurch? Wie lange dauert ein Bootvorgang? (zum SRV-1 Kameramodul:) Hat jemand Erfahrung gemacht mit der Hardwareanbindung? Kann man problemlos die Kamerabilder auslesen oder das WLAN-Modul verwenden? Bin dankbar für jede Einschätzung und Hilfe ;) phil
Hi Phil, zu 1.: Habe des oefteren schon Blackfins uebertaktet und nichts an uebermaessiger Waermeentwicklung festgestellt. Aber geht halt alles auf eigenes Risiko, in der Serie wuerde ich das eher nicht machen. 2.: Eine gewisse Geschwindigkeitseinbusse ist natuerlich da, v.a. geht einiges an Echtzeitfaehigkeit eines DSPs verloren. Das SDRAM-Cache macht aber einiges wieder wett. Wuerde mal sagen, 5-8% gehn fuers System drauf, das ist nicht so wild. Bootvorgang kann man auf wenige Sekunden runterdruecken, bei voller Komprimierung sind's geschaetzt 10 sekunden. Fuer den SRV1 hab ich mal vor ner Weile uClinux angepasst, aber seither nix mehr dran gemacht, ist also noch ne aeltere Version. Habe auch nen andern Sensor angeschlossen. Link dazu findet sich wo auf dem Surveyor-Forum. Nachteil am WLAN: es geht ueber die serielle. Es gibt nur 2 Kanaele fuer die beiden UARTs, die via TCP nur mit max 1 MBit gefahren werden koennen. UDP geht auch mit mehr, allerdings hatte ich da unter uClinux Probleme. Frag aber sonst mal bei Surveyor nach, wann sie die Boards mit dem BF527 haben, dann kannst Du ueber USB mit einem handelsueblichen WLAN-Stick funken. Getestet habe ich Ralink und Realtek USB-Chipsaetze (rt73usb, rtl8187), diverse Sticks mit etwas Leistung gibt es da bei www.dealextreme.com Die Software-Entwicklung ist leider mit dem seriellen WLAN schwierig ohne JTAG, man kann allerdings mit rz/sz Programme hochladen. Dauert halt lange. Sonst ist der SRV1 ein unschlagbares Teil zum Anfangen. Hoffe, das hilft dir erst mal weiter. Gruss, - Strubi
Hi, ja danke das hilft schon weiter. Ich denke dann werde ich wohl doch auf das Linux verzichten und ihn direkt programmieren. 10 Sekunden sind auch noch zu lang und 5-8% Verlust ... naja Wie ist es mit dem Übertakten? Wie viel hast du denn übertaktet? Kann man sagen 10-15% sind problemlos möglich?
Ja, 15% waren das eher locker..ich hatte einen, der auf 400 spezifiziert ist auf 500 laufen lassen. War eher ein Versehen, hab es nach einigen Monaten gemerkt (aber nicht, weil der Chip warm wurde). Laeuft heute noch :-) Vermutlich ist die Burn-In-Test-Prozedur dieselbe wie bei den Intels, man testet mit 20% Uebertakt, und skaliert's dann auf den Paranoia-Faktor runter. Du kriegst den Bootvorgang auch weiter verkuerzt, wenn Du auf Kompression verzichtest und viele Treiber als Module nachlaedst. Ich glaube, der Rekord liegt bei 2s. Schau mal unter docs.blackfin.uclinux.org zum Thema Bootdelay, etc. Aus Gruenden der Einfachheit, und da man sich nicht mit Networking rumschlagen muss, finde ich den 'standalone'-Mode beim SRV1 allerdings auch praktischer. Gruesse, - Strubi
Ok cool, werds mal schritt für schritt erhöhen und schauen ob er warm wird. Wenn ich den Bfin jetzt direkt flashe, Mache ich dass ja indem ich mit der toolchain indem erst mit "bfin-elf-gcc" und "bfin-elf-ld" ein .bin file im ELF Format erstellt wird und dieses dann mit "bfin-eld-ldr" zu einem LDR file, das man flashen kann. Das funktioniert soweit alles super, aber ich möchte nun gerne C++ statt C code schreiben. Habe daher gcc durch g++ ersetzt (es gibt ja auch "bfin-elf-g++") und das linking auch mit dem g++ gemacht. Bis dahin alles super. Nur beschwert sich der LDR mit einem "personality" fehler.
1 | bfin-elf-g++ -I../include -g -O2 -Wall -fomit-frame-pointer -fno-builtin-printf -fno-builtin-puts -fno-builtin-strchr [...] |
2 | bfin-elf-ld -Ur -T srv1.x -Map srv1.map -O binary -o srv1.bin r8x8dct.o math.o setjmp.o motionvect.o init.o main.o srv.o uart.o camera.o jpeg.o i2c.o stm_m25p32.o float.o [...] |
3 | bfin-elf-ldr -f -T BF537 -c -v srv1.ldr --initcode init.o srv1.bin |
4 | Creating LDR srv1.ldr ... |
5 | Adding DXE 'srv1.bin' ... [initcode 208] [jump block to 0x00000000] OK! |
6 | Done! |
7 | c:\Program Files\Analog Devices\GNU Toolchain\2008R1.5\elf\bin\bfin-elf-ldr.exe: Undefined symbol '___gxx_personality_v0' in ELF! |
Durch das "force-flag" kommt trotzdem eine LDR raus, die is aber nicht lauffähig.
Hi Phil, Sorry fuer die spaete Antwort. Inzwischen hast du's wohl schon selbst gefunden, aber sonst probier doch mal anstatt mit 'ld' gleich mit 'g++' zu linken und die Linker-Script-Optionen mit der -W Option an den ld weiterzugeben. Siehe auch manpages. Standalone habe ich mit C++ nichts gemacht bisher, eventuell sind da crt0.asm-Anpassungen noetig, da C++ doch etwas mehr an Ballast mitbringt. Gruesse, - Strubi
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.