RTV forum PL | NewsGroups PL

Jak uruchomić projekt na Blackfin BF504 z gnICE+ i LED-ami w C?

Blackfin - jak ugryźć?

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak uruchomić projekt na Blackfin BF504 z gnICE+ i LED-ami w C?

Grzegorz Niemirowski
Guest

Thu Nov 08, 2012 8:51 pm   



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ę.

--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 1 day, 2 hours, 17 minutes and 9 seconds

Grzegorz Niemirowski
Guest

Wed Nov 21, 2012 12:32 am   



Grzegorz Niemirowski <gnthexfiles@poczta.onet.pl> napisał(a):
Quote:
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ę.

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.

--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 0 days, 6 hours, 59 minutes and 27 seconds

Jacek Radzikowski
Guest

Wed Nov 21, 2012 1:44 am   



On 11/20/2012 06:32 PM, Grzegorz Niemirowski wrote:
[...]
Quote:
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.

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.

Grzegorz Niemirowski
Guest

Wed Nov 21, 2012 11:39 pm   



Jacek Radzikowski <jacek@spamer.die.die.die.piranet.org> napisał(a):
Quote:
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.

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.

--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 0 days, 5 hours, 26 minutes and 16 seconds

Grzegorz Niemirowski
Guest

Thu Nov 22, 2012 12:27 am   



Grzegorz Niemirowski <gnthexfiles@poczta.onet.pl> napisał(a):
Quote:
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.

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.

--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 0 days, 6 hours, 14 minutes and 50 seconds

elektroda NewsGroups Forum Index - Elektronika Polska - Jak uruchomić projekt na Blackfin BF504 z gnICE+ i LED-ami w C?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map