概述
部分时候,上点需要清楚RAM区域,CONST上电需要从ROM复制到RAM区域内,实现方法在本文介绍。
clear 部分
主要是BSS的数据部分,上电没必要存在的RAM空间,如下图
在启动函数里面会调用这一部分的地址空间进行处理
Copy部分
主要是进行DATA数据的处理,以及类似与Flash的地方,在RAM里面运行
在启动函数里面会调用这一部分的地址空间进行处理
上述语法解析
LONG(-1);
表示-1取反码,对于32位的MCU就是0xFFFFFFFF,此处表示填充0xFF,也就是说空余空间均填充为0xFF\
LONG(0 + ADDR(.CPU0_TRUSTED_BSS)); LONG(SIZEOF(.CPU0_TRUSTED_BSS));
很明显此处显示的是地址和长度
LONG(LOADADDR(.CPU0_TRUSTED_DATA)); LONG(0 + ADDR(.CPU0_TRUSTED_DATA)); LONG(SIZEOF(.CPU0_TRUSTED_DATA));
注意Clear和Copy有一个地方不一样
LOADADDR 在Copy的地方有,表示RO某区域,表示VMA也就是虚拟地址
0 + ADDR 实在Clear的地方,表示在RAM区域,是LMA真实地址