This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Interrupts not working when USB IAP(AN10711) is used

Hi All,
I am not an expert on ARM yet but an average guy for uC.

I am trying to get hands on with LPC2148 and plan to use it in next project.

One wonderful thing that I came across (I come form a background where we use 8051/mega16 uC) is USB IAP. So without any UART/Serial cable, I can flash program just by using USB cable.

Did some changes like
1. generating bin file (using fromelf --bin ....) and
2. changing IROM1 from 0x0 to 0x2000

to make program work with IAP.

I tasted some program and those worked very well.

But the issue is arising when I try to use Timer0 interrupt.
I see controller getting stuck somewhere just after 1st int.

I checked with "Use Memory Layout with Target Dialog" selected and de-selected both.
Nothing worked.

This has something to do with vector table but I am not able to make out what?

Any help on this would be appreciated.

Remember, I just made 3 above mentioned changes after creating new project.
If there is anything else, please let me know.

Parents
  • Urvish Gohil => Now, what changes will I have to make to make interrupt of my_prog.bin work.

    Per => A program that is loaded at a different place need to remap the interrupt vector table. There are settings in the startup file to do this - copying the interrupt vector table into RAM and remap to that address. Without remapping, the processor would search for an interrupt handler within your boot loader code.

    On the Startup file of my_prog.bin:
    Set Options-> Asm-> Conditional Assembly Control Symbols: RAM_INTVEC REMAP RAM_MODE

    And check what RAM_INTVEC REMAP RAM_MODE will do for you.

Reply
  • Urvish Gohil => Now, what changes will I have to make to make interrupt of my_prog.bin work.

    Per => A program that is loaded at a different place need to remap the interrupt vector table. There are settings in the startup file to do this - copying the interrupt vector table into RAM and remap to that address. Without remapping, the processor would search for an interrupt handler within your boot loader code.

    On the Startup file of my_prog.bin:
    Set Options-> Asm-> Conditional Assembly Control Symbols: RAM_INTVEC REMAP RAM_MODE

    And check what RAM_INTVEC REMAP RAM_MODE will do for you.

Children