I'm using a LPC2129, with Realview MDK-ARM 3.11 and RealView RL-ARM 3.10
I'm trying to run an application loaded by a user bootloader. So I have a bootloader code in 0x0000 0000 who uses a USB connection to load an application code in 0x0000 4000. The program runs fine. The problem is when I jump to the application code, when I have to remmap the interrupt vectors.
I've tried using REMAP RAM_MODE for Startup.s file in the application, but it seems that the interrupts still go to the Flash Vectors.
Besides, the SWI handler is configured by the OS (RL-ARM) and the Dabt handler by the Real Time Agent
I appreciate any help or useful link
Because if it's in programing time I have to place this code in flash and copy it to RAM space after. I have not seen a Loading-File before, but I assume that it is a command file for a download tool. In this case I would say that it looks as if they were set at programming time.
Why don't You put a part of C-Code behind Your startup like:
copy all code from 0x4000 to 0x4040 into RAM; MEMMAP = 2; enable interrupts;
In this case it would be enough to load the program code to flash. The copying is done at execution time and the download is much easier. Only the linker has to be set up correctly.
Finally it works!!! This line of code in the Startup.s is commented out:
LDR PC, IRQ_Addr
And this one is used instead:
LDR PC, [PC, #-0x0FF0] ; Vector from VicVectAddr
Changing that the code run OK
I didn't need to copy the RAM vectors in my code. It seems that the compiler assumes it as an initializated variable and copy its value in execution time, before going to main(). I've already converted the HEX code to binary, programmed using my user USB bootloader and jump to it...It's working fine.
Thanks Christian for the help.
While shareing Your happiness about the working software I looked up what scatter files where and recognised I was wrong. Just for clarification: Are they doing the same as linker control files?