打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
MDK(KEIL)中设定变量或数组到指定的位置
分类: 【嵌入式开发】 2013-05-20 14:51 239人阅读 评论(0) 收藏 举报

转自zyboy2000


定位变量到指定的位置

使用定义在头文件 absacc.h中的 __at宏,可以将变量以如下方式定位到绝对地址处:

C 例子:
#include <absacc.h>  const char MyText[] __at (0x1F00) = "TEXT AT ADDRESS 0x1F00"; int x __at (0x40003000);                         // variable at address 0x40003000unsigned char xArray[128] __at (0x68000000);     // Array start at address 0x68000000
汇编例子:

在汇编文件中可以使用段名,由|.ARM.__AT_<addr>|组成来定义位置。下面的例子是将一个段定义到地址0xFFE0处:

     AREA |.ARM.__AT_0xFFE0|, CODE, READONLY
 
 
u8 a[10] __attribute__ ((at(0x2000002c)));编译说..\List\ALL.axf: Error: L6971E: Section .data from object usart.o with type RW incompatible with Section .ARM.__AT_0x2000002C from object hal.o with type ZI in er RW_IRAM1.似乎是定位了这个绝对地址后,其他变量不会为它让位~
 
NONO,这个方法不行的,因为编译器并没有真正开辟一个变量,你仅仅是强行操作某个地址而已,但这个地址是否被其他数据利用了,你管不到也不知道~(0字)电子白菜[8次]2009-9-5 2:08:47
 
编译器里面应该有设置,比如系统总共有多少内存,你可以故意设置的少一些,这样在编译的时候他就会避开你没有指定的了
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
硬件断点和软件断点的区别?
汇编中标号与变量名的区别
利用微搭低代码实现地图点选功能
CONTAINING_RECORD宏
常用的汇编指令都有哪些?
c/c 中指针学习的两个绝好例子 [C/C ]
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服