|
我想把一个64K常数表放到ROM flash里,但是程序运行时对应的表数组变量要在RAM地址里,在IAR如何配置?(nor flash访问速度没有RAM快,所以我把特殊数据放到RAM里加速访问)
类似 section .data 对于全局变量和局部静态变量的初始值放在ROM里,但是变量是在RAM地址,启动时候把DATA段copy到RAM来初始化对应变量。程序员感知不到,就把这些变量当做普通RAM变量来用。
GCC我知道如何去做,如下:但是IAR如何做不清楚,请指导
/* Used by the startup to initialize data */
_sidata = LOADADDR(.data);
/* Initialized data sections into "RAM" Ram type memory */
.data :
{
. = ALIGN(4);
_sdata = .; /* create a global symbol at data start */
*(.data) /* .data sections */
*(.data*) /* .data* sections */
. = ALIGN(4);
_edata = .; /* define a global symbol at data end */
} >RAM AT> ROM
汇编启动文件里这样做
/* Copy the data segment initializers from flash to SRAM */
ldr r0, =_sdata
ldr r1, =_edata
ldr r2, =_sidata
movs r3, #0
b LoopCopyDataInit
|
|