概述
大部分时候,为了便捷,我们写代码并没有仔细的进行数据的包含,此时需要考虑默认代码或者数据的存放。
一般编译器默认的代码是.text 初始化的全局变量为.data 未初始化的全局变量为.bss
方法
链接文件里面设置
Memory
{
PFLASH_SHARE_CODE (rx!p) : org= 0x801FFFE0 ,len = 0x200
PFLASH_SHARE_DATA (rx!p) : org= 0x801FFFE0 ,len = 0x200
RAM_SHARE_DATA (rx!p) : org= 0x70100000 ,len = 0x20/*暂时理解为LMU*/
x1 (rx!p) : org= 0xyyyyyyyy ,len = 0xzzzz
.......
xn (rx!p) : org= 0xuuuuuuuu ,len = 0xvvvv
}
未分配的数据部分
其中PROVIDE只是提供一个标识符
类似于 __SHARED_DATA_START这样子的,是为了在.map 里面看到地址,因为地址是活动的,所以也不可以进行定义。
注意一下:
带PROVIDE 的.map里面显示会占用字节
PROVIDE 的.map里面显示不会占用字节
1、已经初始化的全局变量
SHARED_DATA_DEFAULT : ALIGN(4)
{
PROVIDE(__SHARED_DATA_START = .)
*(.data);
PROVIDE(__SHARED_DATA_END = .)
} >RAM_SHARE_DATA AT > PFLASH_SHARE_DATA
2、未初始化的全局变量
SHARED_BSS_DEFAULT : ALIGN(4)
{
PROVIDE(__SHARED_BSS_START = .)
*(.bss);
PROVIDE(__SHARED_BSS_END = .)
} >RAM_SHARE_DATA
未分配的代码部分
SHARED_CODE_DEFAULT : ALIGN(4)
{
PROVIDE(__SHARED_TEXT_START = .)
*(.text);
PROVIDE(__SHARED_TEXT_END = .)
}>PFLASH_SHARE_CODE