Blackfin - jak ugryźć?

Chciałbym wykonać projekt na procesorze z rodziny Blackfin (np. BF504), nie wiem jednak dokładnie jak się za to zabrać. Z tego co zauważyłem, dużo projektów na Blackfinach polega na dołączeniu pamięci SDRAM i wykorzystaniu Linuksa, np. uCLinux. Ja jednak czegoś takiego nie potrzebuję, wystarczy kawałek kodu w C. I teraz zaczynają się schody. Dotychczas wykorzystywałem procki AVR i STM32 i tam było prosto, można było wewnętrzny Flash zaprogramować z poziomu programatora ISP lub JTAGa. Z Blackfinami jest inaczej, wykorzystywany jest zewnętrzny Flash, a w tych, co mają wewnętrzny, nie jest on dostępny przez JTAG. Niemniej jednak jakoś narzędzie od VisualDSP++ jest w stanie tego wewnętrznego Flasha zaprogramować. Czy da się takiego wewnętrznego Flasha zaprogramować za pomocą gnICE+? I jak gnICE+ programuje te zewnętrzne pamięci? Program bfin-jtag z otwartego toolchaina na komendę initbus zwraca m.in.: bf533_ezkit Blackfin BF533 EZ-KIT board bus driver via BSR bf533_stamp Blackfin BF533 Stamp board bus driver Jak działa taki driver i czym właściwie jest BSR? Może się starzeję, ale nie udało mi się wygooglać odpowiedzi na powyższe pytania. Generalnie chciałbym wiedzieć jak mając BF504 i gnICE+ zrobić, żeby LED podłączony to tego procesora migał. Dalej myślę, że sobie już poradzę.

Reply to
Grzegorz Niemirowski
Loading thread data ...

Grzegorz Niemirowski snipped-for-privacy@poczta.onet.pl> napisał(a):

Miałem nadzieję, że wszystko zacznie działać i będę mógł tu umieścić jakąś instrukcję. Niestety. Kod można sobie skompilować i nawet odpalić przez debugger. W tym celu uruchamia się gdb-proxy komendą: bfin-gdbproxy bfin --reset Wtedy gdbproxy wykrywa gnICE+ i przejmuje kontrolę nad procesorem. Następnie można na drugim terminalu uruchomić bfin-elf-gdb. Podłączamy się do gdbproxy komendą: target remote :2000 Można teraz załadować binarkę komendą load a potem jeszcze symbole z niej komendą file. Mając symbole można sobie zrobić np. breakpoint na mainie: b main i puścić program komendą c. Gdy się zatrzyma na początku maina można wykonywać krokowo komendą s. No i luz, działa. Ale nadal nie wiem jak to wpakować do flasha, żeby płytka sama się bootowała. Niby jest skrypt vdsp-flash-programmer.sh, który za pomocą odpalonego gdbproxy może uruchomić kod flashujący (BF504FEzFlashDriver_BF50x4MBFlash.dxe), który udostępnia komendę flrestore, ale jakoś nadal procek z tego swojego flasha nie chce się bootować po zaprogramowaniu plikiem .LDR stworzonym z .ELFa.

Reply to
Grzegorz Niemirowski

On 11/20/2012 06:32 PM, Grzegorz Niemirowski wrote: [...]

Nie mam doświadczenia z blackfinem, więc nie wiem czy moja porada będzie przydatna, ale czy próbowałeś zlinkować program tak, żeby kod trafił w przestrzeń adresową flasha? W ten sposób programuje się flasha w texasowych c2000. Linkerowi trzeba podać odpowiedni plik z komendami, a programator już sam będzie wiedział czy ma binarkę wgrać do RAMu czy do flasha.

pzdr. j.

Reply to
Jacek Radzikowski

Jacek Radzikowski snipped-for-privacy@spamer.die.die.die.piranet.org> napisał(a):

Próbowałem, ale nie wiedziałem jak to dokładnie zrobić. W każdym razie nie udało mi się znaleźć potwierdzenia, że trzeba tak robić. Poza tym o ile dobrze rozumiem, plik .ldr to nie jest binarka z kodem, tylko taka struktura zawierająca kilka bloków, która jest parsowana przez boot kernel procesora i on sobie dopiero z niej wyciąga te bloki i umieszcza pod odpowiednimi adresami. W momencie bootowania, po resecie.

Reply to
Grzegorz Niemirowski

Grzegorz Niemirowski snipped-for-privacy@poczta.onet.pl> napisał(a):

W końcu mam rozwiązanie, dostałem na forum Analoga. Otóż jednak ten .LDR trzeba inaczej generować niż dla zewnętrznych pamięci flash, niepotrzebne okazały się parametry --bits 16 --dma 8 --bmode para. Bez nich wszystko działa.

Reply to
Grzegorz Niemirowski

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.