Xmega bootloader probléma.
Xmega bootloader probléma.
Szervusztok.
Xmega 256a3u chipbe próbálok bootloadert belefaragni. A bootloader látszólag működik. A loaderbe beszúrt debug printek megjelennek. Az alkalmazást is betölti. Ha verifyvel ellenőrzöm másik programozóval akkor mind a loader mind az alkalmazás jó. A gond az hogy nem indul el az alkalmazás. Ha a fuse biteknél resetre az alkalmazást választom akkor az működik. Ha ugyanott a loadert választom akkor a loader lefut de nem tudja átadni a vezérlést a felhasználói programnak. A bootloader az a bascom 2.0.7.7 samplek között talált minta program: BootLoaderXmega256.bas. Mit ronthatok el?
Xmega 256a3u chipbe próbálok bootloadert belefaragni. A bootloader látszólag működik. A loaderbe beszúrt debug printek megjelennek. Az alkalmazást is betölti. Ha verifyvel ellenőrzöm másik programozóval akkor mind a loader mind az alkalmazás jó. A gond az hogy nem indul el az alkalmazás. Ha a fuse biteknél resetre az alkalmazást választom akkor az működik. Ha ugyanott a loadert választom akkor a loader lefut de nem tudja átadni a vezérlést a felhasználói programnak. A bootloader az a bascom 2.0.7.7 samplek között talált minta program: BootLoaderXmega256.bas. Mit ronthatok el?
Re: Xmega bootloader probléma.
Ebben a programban nincsen a _reset-nek érték adva!
Nem tudja hova ugorjon.
Nem tudja hova ugorjon.
Kód: Egész kijelölése
Proces_reset:
Rampz = 0
Goto _reset < ??? 'start at address 0
Re: Xmega bootloader probléma.
A _reset az előre definiálva van. De akkor sem működik ha goto 0 vagy JMP 0 sort írok a helyére.
Re: Xmega bootloader probléma.
Nem biztos?
De ezek az értékek vannak az XM128-as loaderében is !
Szerintem a memória méret számítás maradt XM128-as beállításon.
De ezek az értékek vannak az XM128-as loaderében is !
Szerintem a memória méret számítás maradt XM128-as beállításon.
Kód: Egész kijelölése
Const Maxwordbit = 7 ' Z7 is maximum bit '
Const Maxword =(2 ^ Maxwordbit) * 2 '128
Const Maxwordshift = Maxwordbit + 1
'A helyes érték:
Const Maxwordbit = 8 < ??? ' Z8 is maximum bit '
Const Maxword =(2 ^ Maxwordbit) * 2 '256
Const Maxwordshift = Maxwordbit + 1
Re: Xmega bootloader probléma.
Nos ahogy írtam a reset címet zérusra állítva a fuse biteknél, jól működik a boot loader által betöltött program, illetve a loaderrel betöltött programot a verify avrisp programozóval helyesnek mutatja. A loader lefordított kódjában ( avr studióba betöltve a hexa kimenetet ) látható a jmp 000 utasítás. Tehát nem ezek miatt nem működik.
Re: Xmega bootloader probléma.
Megtaláltam a hiba okát!
Mind a programban mind a bootloader programjában a kód az órajel pll beállításával kezdődött. Ez külön külön rendben is volt, de a bootloder végén ha a főprogramba ugrott akkor újra lefutott volna a pll beállítás amit nem viselt el. Feltételes fordítással kiszedtem a loaderes verzióból ezt így működik a dolog. Mindjárt utána nézek hogy miért is nem viseli el a kétszeres óra konfigurálást.
Mind a programban mind a bootloader programjában a kód az órajel pll beállításával kezdődött. Ez külön külön rendben is volt, de a bootloder végén ha a főprogramba ugrott akkor újra lefutott volna a pll beállítás amit nem viselt el. Feltételes fordítással kiszedtem a loaderes verzióból ezt így működik a dolog. Mindjárt utána nézek hogy miért is nem viseli el a kétszeres óra konfigurálást.
Re: Xmega bootloader probléma.
Időközben kényelmesebb megoldást találtam a problémára:
A felhasználói programban az órajel beállítások után egy
!.org $200 direktívát szúrok be. Így a bootloader végén egy Goto $200
már jó helyre ugrik a fő programba.
A felhasználói programban az órajel beállítások után egy
!.org $200 direktívát szúrok be. Így a bootloader végén egy Goto $200
már jó helyre ugrik a fő programba.