如何定义一段代码或常量到一个指定的地址
问题类别:ARM软件工具 > Keil MDK | 浏览次数:14945 |
发布日期:2012/4/23 17:21:00 | 文章来源:完美体育·(中国)手机网页版科技 |
回复日期:2020/12/20 9:56:13 |
环境说明
MDK 3.05 及以上分析描述
如何定义一段代码,常量到一个指定的地址?问题解答
1.首先在Options for Target — Target 声明一个新的ROM空间 。例如:Start: Size:
ROM1 0x00020000 0x00001000
2.在一个单独的文件中定义该代码和常量数据。
3.右击文件名称,选择属性对话框,在Code/Const 中选择需要的ROM地址页 如:ROM1
定位变量到指定的位置
使用定义在头文件 absacc.h中的__at 宏,可以将变量以如下方式定位到绝对地址处:
C 例子:
#include <absacc.h>
const char MyText[] __at (0x1F00) = "TEXT AT ADDRESS 0x1F00";
int x __at (0x40003000); // variable at address 0x40003000
汇编例子:
在汇编文件中可以使用段名,由|.ARM.__AT_<addr>|组成来定义位置。下面的例子是将一个段定义到地址0xFFE0处:
AREA |.ARM.__AT_0xFFE0|, CODE, READONLY