1. 如何将代码放在RAM区域?
1.1 如果需要把某个函数放在RAM中运行,可以使用__attribute__关键字,例如:
ram_code这个段是RAM中用于放置RAM code的一个段,预先在ld文件已经定义好了,不需要用户自己定义。
1.2 如果需要把一个文件放在RAM中运行,则需要修改ld文件,首先把这个文件从text段中exclude出来,然后再添加到ram_code段中。例如把test1.c这个文件放在RAM中运行,可以如下操作:
2. 如何把变量放在RAM中的指定位置?
在ld文件中定义一块自己的数据区,然后在源文件中就可以用__attribute__关键字把变量放在这个区域的首地址了。
例如把一个变量放在0x20002000这个地址:
在ld文件定义一块从0x20002000开始的数据区:
在源文件中把变量sum放在0x20002000的地址:
3. 如何把const data放在Flash中的指定位置?
在ld文件中定义一块自己的常量区,然后在源文件中就可以用__attribute__关键字把变量放在这个区域的首地址了。
例如把一些常量放在0x10011000开始的地址:
在ld文件定义一块从0x10011000开始的常量区:
在源文件中把常量myconst数组放在0x10011000的地址。
4. 如何把代码放在Flash中的指定位置?
在ld文件中定义一块自己的代码段,然后在源文件中就可以用__attribute__关键字把代码放在这个区域的首地址。
例如把一个函数放在0x10016000开始的地址:
在ld文件定义一块从0x10016000开始的代码区:
在源文件中把CalSum()函数放在0x10016000的地址:
5. 如何把一个文件放在Flash中的指定位置?
这里有两个方法可以实现这个功能。
方法一:把Flash划分为两块,把文件放在其中一块。
例如把test2.c的文件放在0x10020000开始的地址,可以如下这么做。
首先把Flash划分成两块:
把源文件test2.c放在Flash_1区域:
方法二:先把源文件从text段exclude出来,在最后定义一个代码段,把源文件放置在那里。
例如把test2.c的文件放在0x10020000开始的地址,可以如下这么做。
首先把源文件从text中exclude出来:
添加到自己定义的代码段:
采用这个方法需要确保0x10020000这个地址没有和别的代码重叠。
|