米尔科技提醒您:您的浏览器版本过低或者使用了兼容模式,为了获得更好的浏览体验,建议使用IE10以上的浏览器或使用极速模式。 请升级浏览器以获得更好的体验!

如何定义一段代码或常量到一个指定的地址

问题类别: > 浏览次数:10550
发布日期: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