-
1. Data: 2012-11-08 20:51:00
Temat: Blackfin - jak ugryźć?
Od: "Grzegorz Niemirowski" <g...@p...onet.pl>
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
-
2. Data: 2012-11-21 00:32:36
Temat: Re: Blackfin - jak ugryźć?
Od: "Grzegorz Niemirowski" <g...@p...onet.pl>
Grzegorz Niemirowski <g...@p...onet.pl> napisał(a):
> 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
-
3. Data: 2012-11-21 01:44:23
Temat: Re: Blackfin - jak ugryźć?
Od: Jacek Radzikowski <j...@s...die.die.die.piranet.org>
On 11/20/2012 06:32 PM, Grzegorz Niemirowski wrote:
[...]
> 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.
-
4. Data: 2012-11-21 23:39:24
Temat: Re: Blackfin - jak ugryźć?
Od: "Grzegorz Niemirowski" <g...@p...onet.pl>
Jacek Radzikowski <j...@s...die.die.die.piranet.org> napisał(a):
> 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
-
5. Data: 2012-11-22 00:27:10
Temat: Re: Blackfin - jak ugryźć?
Od: "Grzegorz Niemirowski" <g...@p...onet.pl>
Grzegorz Niemirowski <g...@p...onet.pl> 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.
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