我正在读一本关于嵌入式系统的书。作者提到复制.data部分RAM,我们需要:
Address of the data in flash memory (_etext)
Address of the data in RAM ( _data )
Size of the .data section ( _edata to _data )
在主汇编代码中,我们需要一个像这样的启动代码将.data部分复制到RAM。
ResetISR:
ldr r0, =_etext
ldr r1, =_data
ldr r2, =_edata
subs r2, r2, r1
这是链接器脚本:
*(.text*)
*(.rodata*)
_etext = .;
} > FLASH
.data : AT(ADDR(.text) + SIZEOF(.text))
{
_data = .;
*(vtable)
*(.data*)
_edata = .;
} > SRAM
由于_etext在RAM中具有.text段结尾的地址。我们需要知道闪存中.text部分的结束。 当程序被复制到RAM时,程序如何知道闪存中.text段的结尾地址?