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

SD Secondary boot loader with FIQ

I have a project on LPC2365 :
- I use SD Secondary Boot Loader
- Main project with RTX and FlashFS from RL-ARM

If I use no FIQ : Project OK
If I use FIQ (timer0) : the program doesn't work

If I use no boot loader, FIQ is OK

What would I do for using boot loader and FIQ at the same time?

I see in lpc2300.s


;               LDR     PC, IRQ_Addr
                LDR     PC, [PC, #-0x0120]     ; Vector from VicVectAddr
                LDR     PC, FIQ_Addr

It means IRQ_Addr is replaced by [PC, #-0x0120]
what about FIQ_Addr ?

Thanks very much.

  • Are you remapping your interrupt vector to RAM (I think your device does not offer any other option)? Maybe the FIQ handler of the bootloader is invoked instead of the applications.

  • - Options for target ... -> Asm tab
    Define RAM_INTVEC REMAP RAM_MODE

    - In LPC2300.s :

                    IF      :DEF:SIZE_INT_INFO
                    IMPORT  ||Image$$ER_IROM1$$RO$$Length||
                    IMPORT  ||Image$$RW_IRAM1$$RW$$Length||
                    ELIF    :DEF:SIZE_EXT_INFO
                    IMPORT  ||Image$$ER_ROM1$$RO$$Length||
                    IMPORT  ||Image$$RW_RAM1$$RW$$Length||
                    ENDIF
    


    and

                    ; Reserved vector is used for image size information
                    IF      :DEF:SIZE_INT_INFO
                      DCD   ||Image$$ER_IROM1$$RO$$Length||+\ 
                            ||Image$$RW_IRAM1$$RW$$Length||
                    ELIF    :DEF:SIZE_EXT_INFO
                      DCD   ||Image$$ER_ROM1$$RO$$Length||+\ 
                            ||Image$$RW_RAM1$$RW$$Length||
                    ELSE
                      NOP
                    ENDIF
    

    ALL are OK (IRQs) but FIQ !

  • My FIQ subroutine just increasing some counter. I see FIQ occurs many times (1 ms interrupt interval) before the program is stop working !