6852|6

1

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

IAR变量绝对定位问题~~~~~~~ [复制链接]

在IAR for msp430里:

在一个.c文件里定义:
__no_init char array1[100]@0x2000;

其它文件要引用这个全局数组,怎么做?
在相应的.h文件里声明:
extern __no_init char array1[]; //这样是不行的!!!
(这声明在IAR FOR A V R是可以的!!!)

在两个IDE里,如果在.c这样定义:
#prmaga location="meseg"
__no_init char array1[100];
在相应的.h文件里就可以这样声明:
extern __no_init char array1[]; //这样是是行的!!!

烦人,都是IAR的,搞得如此复杂。。。
(我们一种产品,有两款型号,一种用M128,一种用MSP430F5418)

在iar for msp430里,用了@这个符号后,extern这个关键字好象失去作用了。。。

最后只得用这种办法定义声明用@定位的全局变量:类似系统的头文件,比如"msp430x54x.h"那样建一个专用的.h文件,在这个.h文件里定义变量,
注意:是在.h里定义变量,而不仅仅是声明!如:
mypub.h文件:
__no_init char a@0x1500;
__no_init int  b@0x1510;
.......
然后要用到的地方引用这个.h文件,不要当心,编译会通过的,哈哈,打破了c的常规了,就是这个@做鬼。。。。

最新回复

正为此烦恼呢  详情 回复 发表于 2010-4-22 12:06
点赞 关注

回复
举报

235

帖子

0

TA的资源

纯净的硅(中级)

沙发
 
extern这个关键字好象失去作用了。。。

这个是语言层面的

如果不想后面调试死得太惨,没有绝对的把握

最好别自做聪明绕过语言层面的约束
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
楼上的,我举个例子,不是我想这样,是要这样才编译通过。。。。

unit1.c文件
......
__no_init char a@0x1500;
......

unit1.h文件
.....
extern __no_init char a;
//extern __no_init char a@0x1500;

在main.c引用变量a(包含了unit1.h)
.......
a=10;
.......

在IAR FOR MSP430里:
extern __no_init char a;
//extern __no_init char a@0x1500;
link时,两种方式都是外部变量a未定义错误

在IAR FOR AVR里:
extern __no_init char a;  通过
extern __no_init char a@0x1500;不通过
.....
就是这个意思

有没有人碰过同样的问题?
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

4
 
我用的是IAR,不过是For ARM
我的使用方法,调试通过,仅供参考:
1、在 xxx.h 文件中:
__no_init char a @0x20000000;

2、在需要使用此变量的 xxx.c 文件中直接 include "xxx.h"

个人认为,绝对定址并是像我们的变量声明,需要编译器去分配空间,而更像define一个符号而已,当然这个地址绝对不能放到xcl文件中描述的堆栈空间中
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

5
 
同意3楼的,最后我和同事也认为用了@绝对定址后,就类似用static const修饰的变量,可以在.h里定义,要用的就直接引用.
 
 
 

回复

3

帖子

0

TA的资源

禁止访问

6
 
提示: 作者被禁止或删除 内容自动屏蔽
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

7
 
正为此烦恼呢
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表