1、GCC编译器下的分散加载(ld文件)
SECTIONS
{
...
__ram_text_flash_start = LOADADDR(.ram_text);
.ram_text :
{
__ram_text_start__ = .;
*user_iic.o(.text*)
. = ALIGN(4);
/* All data end */
__ram_text_end__ = .;
} > SRAM0 AT > FLASH
...
}
__ram_text_flash_start:获取ram_text段在flash中存放的起始地址。
.ram_text:段名称。
>SRAM0:运行地址。
AT>FLASH:存储地址,如果运行地址与存储地址相同,则可以不加。
在.s启动文件中需要加入搬运代码
ldr r1, =__ram_text_flash_start
ldr r2, =__ram_text_start__
ldr r3, =__ram_text_end__
.align 2
.ram_text_copy:
cmp r2, r3
ittt lt
ldrlt r0, [r1], #4
strlt r0, [r2], #4
blt .ram_text_copy