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

Pridružen-a: Tor 21 Jul 2009 8:55 Prispevkov: 2 Aktiv.: 0.01 Kraj: Ljubljana
|
Objavljeno: Tor Jul 21, 2009 9:22 am Naslov sporočila: Napačna vrednost v registrih po prekinitvi na LPC 2368 |
|
|
Pozdravljeni,
ubadam se s sledečim problemom.
1. LPC2368 dobi zahtevo za zunanjo prekinitev
2. prekinitev ujame prekinitveni streznik eint3
3. včasih, ne vedno, ko streznik zaključi in se kontekst vrne iz prekinitvenega v uporabniški način, dobim pokvarjen R4 register. S pokvarjen mislim, da je v njem napačna vrednost.
Pregledal sem vse funkcije, ki se kličejo znotraj prekinitvenega streznika in v nobeni ni preplavitve sklada. Prav tako vse klicane funkcije preden spreminjajo register r4 poskrbijo, da se ga porine na sklad in ob koncu tudi vzame s sklada.
Vrednost, ki jo dobim v r4 register je zelo verjetno vrednost skladovnega kazalca uporabniškega načina.
Ali ima kdo kakšno idejo, kako pride do zgornje napake ?
Za ponazoritev
Koda: |
void main(void)
{
/*other code*/
results_process(); --> void eint3_handler(void)
{
/*some code*/
platform_powerdown();-->application_powerdown();
}
/*other code - somethimes r4 different then before the eint3 call*/
}
|
Prekintev se izvaja v ARM načinu, medtem ko se ostali procesi izvajajo v THUMB načinu;
Prevajalnik je RVCT 2.2;
za odgovore se v naprej zahvaljujem,
lp
uroš |
|
Nazaj na vrh |
|
 |
ursanio Neznanec

Pridružen-a: Tor 21 Jul 2009 8:55 Prispevkov: 2 Aktiv.: 0.01 Kraj: Ljubljana
|
Objavljeno: Sre Jul 22, 2009 8:00 am Naslov sporočila: |
|
|
Pozdrav,
odpravil sem napako... spregledal sem, da se znotraj application_powerdown-a, preko funkcijskega kazalca kliče popolnoma nova veja funkcij.
Ta veja pa prebije sklad IRQ, se prepelje čez vse druge sklade (Abort, Und, SVC) in konča v uborabniškem skladu...
zato dobi register r4 po zaključku rutine napačno vrednost.
lp
uros |
|
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: 7 dni
Powered by phpBB © 2001, 2005 phpBB Group
|