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)
Ah, was looking in the wrong place. I just edited the linker script to remove the memory I didn't want touched:
1 | MEMORY
|
2 | {
|
3 | flash1 (rx) : ORIGIN = 0x00000000, LENGTH = 4K |
4 | /* Sectors 1 - 24 reserved for main program code */
|
5 | flash2 (rx) : ORIGIN = 0x0007B000, LENGTH = 12K |
6 | ram (rw) : ORIGIN = 0x40000000, LENGTH = 30720 |
7 | usbram (rw) : ORIGIN = 0x7FD00000, LENGTH = 8K |
8 | ethram (rw) : ORIGIN = 0x7FE00000, LENGTH = 16K |
9 | }
|
Vectors and reset handler go in flash1, everything else goes up in flash2.
Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
Log in with Google account
No account? Register here.