This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Enabling ARM Interrupts in the "Boot Images" example

Other Parts Discussed in Thread: OMAP-L137, OMAPL138

I am trying to enable ARM Interrupts in the "Boot Images" example http://processors.wiki.ti.com/index.php/Boot_Images_for_OMAP-L137. Since the original ARM linker script did not have anything for the interrupts I added missing lines as:

    .svcstack    >        SHAREDRAM        /* Supervisor Mode Stack            */
    .irqstack    >        SHAREDRAM        /* IRQ Interrupt Stack                */
    .fiqstack    >        SHAREDRAM        /* FIQ Interrupt Stack                */
    .sysmem      >        SHAREDRAM        /* Dynamic Memory Allocation Area     */

    .cio        >        SHAREDRAM        /* C I/O Buffer                        */
    .intvecs    >        ARMRAM            /* Interrupt Vectors                */
    .data       >        SHAREDRAM

I also pasted the three required asm files (ARM9_handler.asm, ARM9_initstack.asm and ARM9_intvecs.asm) in the ARM project directory. After the arm project is compiled I update the entry point address DEVICE_ARM_UBL_LOAD_ADDR in the DSP code and expect it to run with the interrupts supported. The interrupts I tried are CHIP_SIG2 and Timer1. Both run perfectly if the code is run through a debugger. But if I try to run from flash the ARM code crashes immediately after the first interrupt happens. With interrupts disabled (enable_IRQ() commented out) the ARM runs perfectly even from the flash memory (LEDs blink, a record in shared RAM is updated continuously). The ARM is in the supervisor mode (switched in boot.asm, CPSR mode bits are 10011).

So, the question is how can I make the ARM interrupts work? On the DSP side everything is fine, the interrupts and everything else are fully functional.