[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