AM3359 sitara (beaglebone) a XIP boot

David Belohrad david na belohrad.ch
Pondělí Srpen 26 11:39:36 CEST 2013


Zdravim,

resime tady s kolegou takovy zajimavy problem s armem. Mame beaglebone a
snazime se jej presvedcit, aby bootoval executable-in place. Na GPMC
sbernici mame pripojene FPGA, kterym jej zkousime krmit bootloaderem
prekompilovanym na adresu 0x08000000 (kde zacina GPMC).

Mame boot piny nastavene tak, aby bootoval pres XIP s pouzitim wait
signalu.

Pri bootu se opravdu inicializuje GPMC, a procesor zacne cist
neco (program?) pres GPMC. My mu strkame ten bootloader. Ale at delame co delame, ten
bootloader se evidentne neprovadi. Spis to vypada, jako kdyby XIP boot
jenom 'kopiroval' data z nekama nekam, protoze adresy se inkrementuji
(temer) linearne. Jeden by ocekaval, ze (pokud nemame instrukcni cache)
se bude vzdycky nacitat z adresy, na kterou se skace.

Dokonce jsme zkouseli i jednoduchy assembler:

.text

lab: nop
     nop
     nop
     nop
     nop
     nop
     b lab


a chteli jsme videt, zdali se GPMC chova tak, ze tam ten branch
uvidime. Uplne nas to ignoruje. Prehazovali jsme poradi ctenych byte na
little/big endian a nic.


Ja osobne mam jeste jedno 'nejasno' v te veci. Ten arm je 32bitovy, ma
32bitove instrukce. XIP pres GPMC je 16bitovy, cekal bych tedy, ze se
vzdy bude nacitat jedna instrukce dvema ctecimi cykly. je to tak?


za kazdou radu predem dik

d.


Další informace o konferenci Hw-list