El controlador ARM IRQ no funciona correctamente en GCC

0

Estoy desarrollando un proyecto ARM a partir de LPC2138 soc. He escrito un controlador de interrupción IRQ para I2C. Pero no vuelve correctamente. Se llama repetidamente al controlador para una sola interrupción.

He realizado un análisis detallado de depuración de este problema.

En el manual de referencia ARM7TDMI se menciona claramente lo siguiente.

Perocuandodesarméelcódigo,encontréqueelcódigogeneradoporGCCnorestauraelregistrodeCPSR.Tambiénunvalordesconocidoporfin.

HedeclaradoelcontroladorIRQcomoelsiguiente

voidI2C0_IRQ_handler(void)__attribute__((interrupt("IRQ")));

¿Es esto un error en GCC o he hecho algo mal?

Los indicadores del compilador, ensamblador y vinculador que he usado para construir el proyecto son:

CFLAGS := -mcpu=arm7tdmi-s -g3 -Wall -I. -gdwarf-2
AS_FLAGS := -mcpu=arm7tdmi-s -g3 -gdwarf-2
LD_FLAGS := -Wl,-Map,$(TARGET:%.hex=%).map -nostartfiles
    
pregunta sreeyesh

0 respuestas

Lea otras preguntas en las etiquetas