8021|2

9

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

关于no_init [复制链接]

请问各位:
no_init unsigned char a;
这样定义对不对,后面不加@指定地址有没有问题。另外用no_init与__no_init有没有区别,反正在IAR下编译好象都能编译通过。
用no_init主要是为了防止看门狗导致系统复位后数据重初始化。
目前我在系统中用no_init定义了两个标志位Flag1,Flag2以及其它几个no_init变量,初始化过程我作以下处理。
if((Flag1 != 0x5A) && (Flag2 != 0x5A))
{
     // 在此进行几个no_init变量初始化
     Flag1 = 0x5A;
     Flag2 = 0x5A;
}
这样防止看门狗复位时几个变量重新初始化。
但我采用这种方式处理时,有时候在系统掉电重新上电后发现某个no_int 定义数据会出现一个非正常值,如本来我应该初始化为0,但上电后发现这个值不为0,有没有可能这个变量根本就没有初始化,显示还是一个随机值呢。

最新回复

问 请问各位大侠,一般no_init型变量在什么场合使用?怎样用啊? 答 1: 一般是一些特殊数据!这些数据在系统复位(如看门狗复位或其他原因造成的复位)时的数值是不能改变的!定义这些变量时要修改*.XCL 文件!具体问问刘工吧!我也是从他那里学来的!:cool: 答 2: 请问你知道具体怎样修改xcl文件吗? 答 3: -Z(DATA)NO_INIT=0200-XXXX; //0200 到XXX区为你要保持NO_INIT变量的区域。:cool: 答 4: 谢谢xiaoliang,但是我还是不太明白怎样改,能说得具体一些吗? 答 5: 找到和你芯片型号相应的*.xcl文件。(最好复制一份,考到你程序的文件夹中,然后把这个文件配置到你的项目中)在这个文件中加入该语句!自己先要确定要定义的NO-INIT的字节数。 答 6: 它的作用:在c所引用sctartup.s43中不对这段受保护的ram进行初始化。 把您所引用的xcl文件中的:-Z(DATA)UDATA0,IDATA0,ECSTR=0200-02F0 改为:-Z(DATA)UDATA0,IDATA0,ECSTR=0200-02EF -Z(DATA)NO_INIT=02F0 在源文件中:no_init char i;  详情 回复 发表于 2013-6-26 11:00
 
点赞 关注

回复
举报

2万

帖子

341

TA的资源

版主

沙发
 

请问各位大侠,一般no_init型变量在什么场合使用?怎样用啊?
答 1:
一般是一些特殊数据!这些数据在系统复位(如看门狗复位或其他原因造成的复位)时的数值是不能改变的!定义这些变量时要修改*.XCL 文件!具体问问刘工吧!我也是从他那里学来的!:cool:
答 2:
请问你知道具体怎样修改xcl文件吗?
答 3:
-Z(DATA)NO_INIT=0200-XXXX; //0200 到XXX区为你要保持NO_INIT变量的区域。:cool:
答 4:
谢谢xiaoliang,但是我还是不太明白怎样改,能说得具体一些吗?
答 5:
找到和你芯片型号相应的*.xcl文件。(最好复制一份,考到你程序的文件夹中,然后把这个文件配置到你的项目中)在这个文件中加入该语句!自己先要确定要定义的NO-INIT的字节数。
答 6:
它的作用:在c所引用sctartup.s43中不对这段受保护的ram进行初始化。
把您所引用的xcl文件中的:-Z(DATA)UDATA0,IDATA0,ECSTR=0200-02F0
改为:-Z(DATA)UDATA0,IDATA0,ECSTR=0200-02EF
-Z(DATA)NO_INIT=02F0
在源文件中:no_init char i;
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
谢谢回复。
这个不修改XCL文件不行吗?
我现在没有修改的话基本上能实现复位数据不丢失,而且大部分定义成no_init的变量都是正常,只是有时候出现某个变量数据异常的情况,比如某个unsigned int型变量本来应该为0x0001,可有时候我插上仿真器去看的时候发现其值变为了0x4001,也就是高8位发生了变化,这种机率出现较小,不太好捕捉。
会不会存在跟RAM内定义的其它变量地址重复的情况。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表