[elektro] dsPIC33 bootloader

Balla Zoltán sdrlab at yandex.ru
Tue Sep 28 12:03:57 CEST 2010


Feladó: "Moczik Gabor" <pm_levlista at progzmaster.hu>
>NEM feladata a változók relokálása, ezt a linkernek kell megtennie, hisz
>fordítás időben kell eldőlnie. Ha nincs gyári crt0, akkor állítom, hogy
>ha az ORG 0 címre bepattintasz egy JMP _main utasítást, akkor el kell
>induljon. Ott kézzel minden változót inicializálni kell (nullára is).
>A main soha ne térjen vissza, JMP-vel ugorjon a bootolandó programra.
>
Igen, ebben van valami...., hogy a változókat stb még fordítási időben kell relokálizálni, mégis 
amikor pl kiveszem a linkerben a crt0-t, akkor már el is rontja a változók címét! És ez tuti így 
van, direk néztem, mert meg is szívatott egyszer rendesen, miközben reszeltem a dolgot. Azt nem 
tudom miért van így, de tény hogy ezt műveli a microchip C30...

>Nem lehet olyan nagy etwas ezt kisebb PIC-en megoldani, a PIC32 crt0-ja
>is csak inicializálást csinál. Csak azért van ilyen nagy arcom, mert
>annak idején Watcom C++ -ban bootolható objektum-orientált oprendszert
>kezdtem írni. Nem igazán vannak ezek a dolgok dokumentálva, na abból
>kihagyni a gyári crt0 rutint, majd megírni ami ahhoz kell, hogy
>egyáltalán a konstruktorok helyes sorrendben lefussanak... Pár sor lib
>forráskódot át kellett nyálazni. Végül be lehetett bootolni, de már el
>sem hiszem, hogy ezt tényleg megcsináltam. :-)
>
Mivel kihagyott crt0 esetén elrontja a címeket, nem csoda, hogy hiába ugrik a 0-ról a megfelelő 
címre, és azon a címen már tényleg az én boot loaderem is van, mégsem fog jól működni a program 
emiatt!!

>
>Tuti hogy nem jó helyen van a vezérlés. A 0 az NOP, végigfut rajta, és
>elindul a cuccod a terület végén, ha más van benne, akkor meg elakad.
>
De, jó helyen van!!! Ez nem kérdés, látom a fordított memóriáben a sz ugró címet, és hogy ott mi van 
ahová ugrik, na meg a szimulátrban is eszerint megy...de egyszer csak elszáll a program, nyílván, 
hiszen ilyenkor átfedett változó címek vannak...(kihagyott crt0-nál)

>Milyen fordító?
>Nem lehetne memory map-et kérni?
>Akkor látni lehetne mir hova méltóztatott relokálni, utána az asmlist
>tanulmányozásával kideríteni, hogy miként is hívódnak meg a dolgok.
>
Pontosan azt teszem....A fordító által látrehozott programkódot, memória térképet használom csak 
deugolásra, vagyis szimulálásra inkább, mert csak arra van lehetőségem igazából...

>Némi kódrészletet, vagy az egészet is mellékelhetnéd (ha nem titkos).
>
Az egészet azt nem tehetem közre, de kódrészeket igen...csak nem tudom,mi az ami egyeltalán segítene 
akárcsak elgondolkodni a problémán....

Zoli 



More information about the Elektro mailing list