Currently I'm making the step to upgrade my spare-time projects to the use of an ARM instead of the 8bit micros from Microchip.
But unfortunately I ran into some problems:
I do not really understand the differences in ways of programming: - programming into ROM - programming into RAM (which is only 32K in my case)
I already did some "hello world" tests with the IAR IDE where the compiling/programming was done with a given configuration I didn't worry about. But I didn't like the IAR IDE and the 32K limit of the IAR compiler so I decided to set up a new environment (see configuration below).
After setting up the Eclipse environment, using the examples provided by IAR I managed to program the ARM into RAM. But when I wanted to program the ARM to ROM the program doesn't seem to do anything. I used example makefiles which I believe did some sort of mapping to ROM or RAM, I only had to define one of them each time.
I know that ROM is read-only memory and wont be empty after the power has been disconnected and RAM is faster but requires the program to be downloaded to the ARM each time.
Do I need to devide my program into parts of ROM and RAM, or can I program everything to ROM in a way that the ARM will remap the code to RAM when it is powered up?
Currently I am using the following configuration:
- Codesourcery GCC
- Eclipse C/C++
- Segger Jlink programmer (GDB server)
- CMSIS or LPCOpen library (not completely working yet)
- NXP LPC1766 Cortex M3
- Windows 8 64-bit
- IAR examples for LPC1768 and CMSIS
- examples from NXP: lpc17xx.cmsis.driver.library
Could someone please help me understand the different uses of ROM and RAM and how I should set up my compiler/makefiles to make use of the ROM and RAM memory.
In the end I want to be able to program the ARM (I think) into ROM in a way that I can power-off the ARM without having to reprogram it each time.