Using the MCB2300 board, I am working with the UART1 interrupt mode. Using a sample program in flash, everything works correctly, but when trying to run the same program at RAM_MODE, I had the following problems: First LPC2300.S changed so called correctly from RAM Vic Vector Address:
LDR PC, IRQ_Addr ; LDR PC, [PC, #-0x0120] ; Vector from VicVectAddr LDR PC, FIQ_Addr Reset_Addr DCD Reset_Handler Undef_Addr DCD Undef_Handler SWI_Addr DCD SWI_Handler PAbt_Addr DCD PAbt_Handler DAbt_Addr DCD DAbt_Handler DCD 0 ; Reserved Address IRQ_Addr DCD IRQ_Handler FIQ_Addr DCD FIQ_Handler VIC_Addr DCD 0xFFFFFF00 Undef_Handler B Undef_Handler SWI_Handler B SWI_Handler PAbt_Handler B PAbt_Handler DAbt_Handler B DAbt_Handler IRQ_Handler LDR R5,VIC_Addr LDR PC,[R5] FIQ_Handler B FIQ_Handler
Despite this, and although called correctly IRQ routine, the return is not working properly, to the point of interruption once. In the program in flash, everything works correctly, but RAM_MODE not load the return address in R14 (LR).
Has anyone had a similar problem or know because this happens?
After various tests, I checked what the error. The variables REMAP and RAM_MODE were in tab C/C++ and not in the ASSEMBLER. I thought that by implementing the program in C was where the variables should be for remapping.
Thank you very much for you help.