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

Pridružen-a: Pon 20 Nov 2006 15:24 Prispevkov: 47 Aktiv.: 0.21
|
Objavljeno: Pon Okt 29, 2007 11:13 am Naslov sporočila: Spurious interrupts |
|
|
Pozdravljeni
Pri enem od projektov sem naletel na neprijeten problem.
Spurious interrupts:
Vem zakaj se pojavljajo (WDT, UART,.....komunikacija do ARM7 core, pipelining, sprememba VIC registra,...)
Vem kako jih po administriraš in našel sem tudi ASM kodo kako se jih izogneš.
Tu nastane težava ki je ne znam rešitu.
Koda: |
#define IDISABLE /* Nested Interrupts Exit */ \
__asm { LDMFD SP!, {LR} } /* Restore LR */ \
__asm { MSR CPSR_c, #0x92 } /* Disable IRQ (IRQ Mode) */ \
__asm { LDMFD SP!, {LR} } /* Restore SPSR_irq to LR */ \
__asm { MSR SPSR_cxsf, LR } /* Copy LR to SPSR_irq */ \ |
V User Mode načinu delovanja ARM procesorja CPSR registra ni mogoče spreminjati ampak mora biti ARM procesor v "privilegiran način" delovanja.
Tukaj se zatakne, zato bi rabil malo pomoči.
Hvala. |
|
Nazaj na vrh |
|
 |
BluPhenix Član

Pridružen-a: Pet 05 Mar 2004 12:54 Prispevkov: 1018 Aktiv.: 4.29 Kraj: Sežana
|
Objavljeno: Pon Okt 29, 2007 7:37 pm Naslov sporočila: |
|
|
Laufaj zadevo v system mode in je zadeva rešena. |
|
Nazaj na vrh |
|
 |
commander29 Član

Pridružen-a: Pon 20 Nov 2006 15:24 Prispevkov: 47 Aktiv.: 0.21
|
Objavljeno: Tor Okt 30, 2007 7:55 am Naslov sporočila: |
|
|
BluPhenix je napisal/a: |
Laufaj zadevo v system mode in je zadeva rešena. |
Kako pa pridem tja..... |
|
Nazaj na vrh |
|
 |
. Član

Pridružen-a: Pon 23 Avg 2004 16:16 Prispevkov: 16777190 Aktiv.: 70644.97
|
Objavljeno: Tor Okt 30, 2007 10:07 am Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika. |
|
Nazaj na vrh |
|
 |
MarkoM Član

Pridružen-a: Tor 12 Sep 2006 15:29 Prispevkov: 2825 Aktiv.: 12.34 Kraj: Lovrenc na P.
|
Objavljeno: Pon Nov 24, 2008 12:35 pm Naslov sporočila: |
|
|
Koda: |
//{ Macro for enabling interrupts, moving to System mode and relevant stack operations
#define IENABLE /* Nested Interrupts Entry */ \
__asm { MRS LR, SPSR } /* Copy SPSR_irq to LR */ \
__asm { STMFD SP!, {LR} } /* Save SPSR_irq */ \
__asm { MSR CPSR_c, #0x1F } /* Enable IRQ (Sys Mode) */ \
__asm { STMFD SP!, {LR} } /* Save LR */ \
// Macro for disabling interrupts, switching back to IRQ and relevant stack operations
#define IDISABLE /* Nested Interrupts Exit */ \
__asm { LDMFD SP!, {LR} } /* Restore LR */ \
__asm { MSR CPSR_c, #0x92 } /* Disable IRQ (IRQ Mode) */ \
__asm { LDMFD SP!, {LR} } /* Restore SPSR_irq to LR */ \
__asm { MSR SPSR_cxsf, LR } /* Copy LR to SPSR_irq */ \ |
Novejša verzija kompajlerja (RVCT v2.0) ne pozna več LR in SP registra.
Koda: |
MfRc632uC.c(2722): error: #20: identifier "LR" is undefined
MfRc632uC.c(2722): error: #20: identifier "SP" is undefined |
Gledal v help, kjer piše:
Citiram: |
use the following intrinsics in inline assembly:
__current_pc()
To access the pc register.
__current_sp()
To access the sp register.
__return_address()
To access the lr register. |
Tudi to kompajler ne prebavi. Kakšna ideja? |
|
Nazaj na vrh |
|
 |
chaos Član


Pridružen-a: Sob 16 Sep 2006 22:12 Prispevkov: 1063 Aktiv.: 4.64 Kraj: Zagorje ob Savi
|
Objavljeno: Pon Nov 24, 2008 1:10 pm Naslov sporočila: |
|
|
Saj lahko registre tudi sam definiraš ...
LP! |
|
Nazaj na vrh |
|
 |
Glitch Član

Pridružen-a: Pet 07 Apr 2006 11:40 Prispevkov: 1477 Aktiv.: 6.30
|
Objavljeno: Pon Nov 24, 2008 1:18 pm Naslov sporočila: |
|
|
Glej, spurious interrupti so znana in dobro dokumentirana zadeva. Na NXP strani imaš application note, kjer je lepo razloženo kaj kako zakaj... _________________ Answers: $1, Short: $5, Correct: $25, dumb looks are still free. |
|
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
|