Actually, I always face Spurious Interrupts in all my LPC2XXX(LPC2138,LPC2220,LPC2290) targets and it hangs. Not only in GDB debug mode as you described, but also in ROM.

I solve it with attatched patch. It works in ROM, but not tested in GDB debug mode.

_________________________________________________________________
享用世界上最大的电子邮件系统― MSN Hotmail。 http://www.hotmail.com --- /cygdrive/w/share/anon_cvs/ecos/packages/hal/arm/arch/current/src/vectors.S 2006-02-10 00:47:39.000000000 +0800 +++ /cygdrive/c/development/ecos/packages/hal/arm/arch/current/src/vectors.S 2006-11-16 15:46:25.424420500 +0800
@@ -204,11 +204,19 @@
#endif
        ldr     pc,.undefined_instruction       // 0x04
ldr pc,.software_interrupt // 0x08 start && software int
        ldr     pc,.abort_prefetch              // 0x0C
        ldr     pc,.abort_data                  // 0x10
+#ifdef CYGPKG_HAL_ARM_LPC2XXX
+ #ifdef CYGSEM_HAL_ROM_RESET_USES_JUMP
+ .word 0xB4405F62 // checksum of other vectors
+ #else
+ .word 0xB8A06F58 // checksum of other vectors
+ #endif
+#else
        .word   0                               // unused
+#endif
        ldr     pc,.IRQ                         // 0x18
        ldr     pc,.FIQ                         // 0x1C

// The layout of these pointers should match the vector table above since
// they are copied in pairs.
@@ -945,13 +953,18 @@
#endif
// The return value from the handler (in r0) will indicate whether a
        // DSR is to be posted. Pass this together with a pointer to the
// interrupt object we have just used to the interrupt tidy up routine.

+#ifdef  CYGIMP_HAL_COMMON_INTERRUPTS_IGNORE_SPURIOUS
+        // If configure to IGNORE spurious interrupt, we don't branch here.
+        // Let it handled by "interrupt_end()" as normal.
+#else
                              // don't run this for spurious interrupts!
        cmp     v1,#CYGNUM_HAL_INTERRUPT_NONE
        beq     17f
+#endif // CYGIMP_HAL_COMMON_INTERRUPTS_IGNORE_SPURIOUS
        ldr     r1,.hal_interrupt_objects
        ldr     r1,[r1,v1,lsl #2]
        mov     r2,v6           // register frame

        THUMB_MODE(r3,10)


-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

Reply via email to