http://www.bravegnu.org/gnu-eprog/data-in-ram.html
SECTIONS {
. = 0x00000000;
.text : {
crt0.o (.text);
leds.o (.text);
}
etext = .;
. = 0XA0000000;
ram_sdata = .;
.data ALIGN(4) : AT(etext){ *(.data) }
.rodata ALIGN(4) : {*(.rodata)}
ram_edata = .;
data_size = ram_edata - ram_sdata;
.bss ALIGN(4) : { *(.bss) *(COMMON) }
}
AT 是指明在flash上面的地址。 下面就是代码的从falsh上面拷贝代码到sdram。
ldr r0, =flash_sdata
ldr r1, =ram_sdata
ldr r2, =data_size
copy:
ldrb r4, [r0], #1
strb r4, [r1], #1
subs r2, r2, #1
bne copy