[elektro] dsPIC33 bootloader

Balla Zoltán sdrlab at yandex.ru
Fri Sep 24 12:49:58 CEST 2010


Sziasztok

Írtam egy saját bootloadert a fenti PIC családra. A kód microchip C-ben íródott, és az utolsó 2-3 
törölhető laphatárt foglalja el. Van hozzá egy módosított linker, amiben át van írva a reset vektor 
ugró címe arra a címre, ahol a bootloader tanyázik. Valamint létre van hozva szekció, hogy az összes 
függvény egy bizonyos címtől kezdődjön mindenképpen.
A bootloader letöltéskor 0-ás címtől végigír mindent, egészen az ugrócímig. Ha nem kell semmit 
letöltenie, ugrik egy meghatározott címre, ami rögtön a megszakítási vektor tábla után van.

Ez így működik is szépen...elvileg..., de mégis van vele gond.
Ugye a C fordító létrehoz még "valamiket" a forráskódomon kívűl, gondolom valami inicializáló 
részeket. A program egyébként nem használ semmilyen külső hivatkozást plusszban. Nos a linker úgy 
van megszerkesztve, hogy ezeket az ismeretlen részeket rakja a valóságban az ugrócímre, és csak 
utána következik a bootloader program része.
Namost általában ez szépen le is zajlik bekapcsoláskor...az az a reset címről elugrik a 
meghatározott bootloader címre, ahol is ugye a C plussz dolgait találja... Ez le is fut, majd 
elugrik a bootloaderre, ami elvégzi a programozást. Általában..., de nem mindig!!! Ugyanis attól 
függően, hogy milyen tartalommal töltöm föl a memóriát, hol jól működik, hol meg elmegy resetbe, és 
el sem jut a bootloader programba. A szimulátorban debugolva az derült ki, hogy ilyenkor egy 
tblrdl.b [w1++],[w2++]    utasitás végrahajtása során, a
CORE-E0011: Trap due to unimplemented RAM or PSV memory access, occurred from instruction at 
0x00946c
CORE-E0004: Trap due to unimplemented FLASH memory access, occurred from instruction at 0x00946c
hibaüzenet után fut a resetre.

Nem értem, hogy hol lehet a hiba, egy biztosnak látszik, nem a forráskódban, hanem a proci 
sajátosságaiban keresendő a hiba, de nem jövök rá hogy mi lehet.
Van valakinek ötlete ??

Zoli



More information about the Elektro mailing list