Posted on:
I have bootloader code that uses the first and last few sectors of flash on an LPC2xxx. In the startup assembly file the vectors & protection code word load at 0x0, then there is an .org 0x7b000 statement that puts the program code up high. There is no specific "fill" command. When I go to debug and the program loads to flash, all the sectors in the middle get erased and filled with 0. I don't want that because it erases the "main" code that I have previously loaded. Is there a way to tell the system to ignore the unused area? Right now it thinks that the startup section includes all the empty space, rather than only the first 0x200 bytes. I essentially need to define a "noload" section between 0x1000 and 0x7b000 so that it will leave those sectors alone. Is this possible??? (Using gcc & openocd)
Posted on:
Ah, was looking in the wrong place. I just edited the linker script to remove the memory I didn't want touched:
MEMORY
{
flash1 (rx) : ORIGIN = 0x00000000, LENGTH = 4K
/* Sectors 1 - 24 reserved for main program code */
flash2 (rx) : ORIGIN = 0x0007B000, LENGTH = 12K
ram (rw) : ORIGIN = 0x40000000, LENGTH = 30720
usbram (rw) : ORIGIN = 0x7FD00000, LENGTH = 8K
ethram (rw) : ORIGIN = 0x7FE00000, LENGTH = 16K
}
|
Vectors and reset handler go in flash1, everything else goes up in flash2.