将.data复制到RAM

时间:2017-07-30 06:01:47

标签: assembly memory linker system ram

我正在读一本关于嵌入式系统的书。作者提到复制.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段的结尾地址?

0 个答案:

没有答案