[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