 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
spy Član


Pridružen-a: Sre 06 Sep 2006 20:43 Prispevkov: 403 Aktiv.: 1.76 Kraj: Tržič
|
Objavljeno: Pet Maj 13, 2011 11:04 pm Naslov sporočila: Cortex-M0 in remaping vektorjev |
|
|
Živjo
Delam na LPC1114 in v uporabi bo "secondary" bootloader. Ta leži na prvih sektorjih flash-a. Aplikacija pa potem leži nad bootloaderjem. Vektorji na lokaciji 0 naprej so rezervirani za bootloader, za aplikacijske vektorje je treba narediti "re-maping".
Vendar problem: pri Cortex-M3 se enostavno popravi VTOR register in s tem se "remap"-a vektorje za poljuben offset (torej v aplikacijski del). Pri Cortex-M0 se tega ne da, ker so fiksni na lokaciji 0. Lahko se edino "remap"-ajo v RAM (ali v ROM Boot, kar mi nič ne pomaga).
Kako vi rešujete ta problem? Kako naredite "remap"-ing?
Lp, Aleš |
|
Nazaj na vrh |
|
 |
domen_puncer Član

Pridružen-a: Čet 01 Maj 2008 13:30 Prispevkov: 78 Aktiv.: 0.37 Kraj: Ljubljana, Mozirje
|
Objavljeno: Sob Maj 14, 2011 1:41 pm Naslov sporočila: |
|
|
Zakaj ti RAM remapiranje ne pomaga?
Sicer ja, je nekaj dela. Je treba prepricat linker, da bo to na zacetku rama, pa ne smes pozabit skopirat iz flasha v init kodi, ampak ni nemogoce. _________________ Tiskanje sudoku |
|
Nazaj na vrh |
|
 |
spy Član


Pridružen-a: Sre 06 Sep 2006 20:43 Prispevkov: 403 Aktiv.: 1.76 Kraj: Tržič
|
Objavljeno: Sob Maj 14, 2011 8:26 pm Naslov sporočila: |
|
|
domen_puncer je napisal/a: |
Zakaj ti RAM remapiranje ne pomaga?
Sicer ja, je nekaj dela. Je treba prepricat linker, da bo to na zacetku rama, pa ne smes pozabit skopirat iz flasha v init kodi, ampak ni nemogoce. |
Si to že delal? Dela v redu?
Pomaga mi vse, kar bo delalo. Našel sem dva načina: eden je v app notes "secondary bootloader for LPC1100". Ta z asm ukazi popravi redirekcijo klicanja funkcije, ampak je problem vstaviti asm inline v thumb mode (Keil javi, da ni podprto v thumb mode). Drugi: remapiranje v RAM sem poskusil, ampak remapiranje ne kopira samo vektorjev (0xC0), ampak 0x200 bytov. Skratka obesi se.
Zato me zanima, če ima kdo preverjeno metodo, da ne odkrivam tople vode. |
|
Nazaj na vrh |
|
 |
domen_puncer Član

Pridružen-a: Čet 01 Maj 2008 13:30 Prispevkov: 78 Aktiv.: 0.37 Kraj: Ljubljana, Mozirje
|
Objavljeno: Pon Maj 16, 2011 2:12 pm Naslov sporočila: |
|
|
Nisem delal tocno tega. Imam pa nekaj izkusenj in ne vidim zakaj ne bi delalo.
Imas SWD? Kje se pa "obesi"? Lahko izpises vsebino rama, ko se obesi?
Si rezerviral prvih 0x200 rama (in tja skopiral vektorje), da ne prepises vektorjev, ko inicializiras .data sekcijo? _________________ Tiskanje sudoku |
|
Nazaj na vrh |
|
 |
spy Član


Pridružen-a: Sre 06 Sep 2006 20:43 Prispevkov: 403 Aktiv.: 1.76 Kraj: Tržič
|
Objavljeno: Tor Maj 17, 2011 8:27 pm Naslov sporočila: |
|
|
Rešeno.
Problem je bil v vstopu v aplikacijsko kodo. Nekaj sem "pobrkljal" stack. Ostalo je bilo prav narejeno. Kopija vektorjev (do 0xC0) v RAM in remaping. Na drugih forumih je nekje zavajajoče napisano, da se remapira do 0x200.
Dela po pričakovanjih. Hvala vseeno za odziv. |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 492 dni
Powered by phpBB © 2001, 2005 phpBB Group
|