打印

W79E825定义变量过多会自动重启吗

[复制链接]
2273|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huzhiyang|  楼主 | 2012-7-31 09:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
W79E825这个芯片的案子差不多完了,最近在做最后的优化和性能的提升工作,发现添加变量过多会自动重启,而且还是反复自动重启,为什么我认为是变量过多呢,因为程序开始没问题的,我加了一个变量写了段代码,就发现会自动重启,我开始不知道什么原因,检查代码,没问题,后来把这段代码删掉,变量还是定义了,运行还是会自动重启,再把那个变量删掉,运行OK,查芯片手册,ram是256,编译的时候ram已经用了225.7,再添加一个char型的变量都不行,不知道我这样分析的对不对,不知道使用过这个芯片的人有没有碰到过这个问题。

相关帖子

沙发
ayb_ice| | 2012-7-31 10:00 | 只看该作者
导致堆栈溢出是有可能的,先检查一下是否堆栈溢出

使用特权

评论回复
板凳
dlyt_test001| | 2012-7-31 10:41 | 只看该作者
导致堆栈溢出是有可能的,先检查一下是否堆栈溢出
ayb_ice 发表于 2012-7-31 10:00

你不加那个变量程序也有重启的可能,只不过频率低一点尔以。
建议作程序优化,或加大RAM!

使用特权

评论回复
地板
huzhiyang|  楼主 | 2012-7-31 15:04 | 只看该作者
你不加那个变量程序也有重启的可能,只不过频率低一点尔以。
建议作程序优化,或加大RAM!
dlyt_test001 发表于 2012-7-31 10:41

刚才又搞死人,ram用了225.7死机到没有,但是就这么几条语句:
while(loop)
{
   DspPicture(Tab_Load,1);
   DspPicture(Tab_Line,2);
   DspPicture(Tab_Load,3);
},3个窗口的数码管上时而闪一下乱码,查了半天找不出原因,刚才把老版本的程序烧进去,没问题,于是想到可能又是变量惹的祸,新版程序删了一个char型的变量,一点都不闪烁了,哎,真是搞死人啊。

使用特权

评论回复
5
ayb_ice| | 2012-7-31 15:07 | 只看该作者
刚才又搞死人,ram用了225.7死机到没有,但是就这么几条语句:
while(loop)
{
   DspPicture(Tab_Load,1);
   DspPicture(Tab_Line,2);
   DspPicture(Tab_Load,3);
},3个窗口的数码管上时而闪一下乱码,查了半 ...
huzhiyang 发表于 2012-7-31 15:04


应该还是程序本身有BUG

使用特权

评论回复
6
cjseng| | 2012-7-31 23:33 | 只看该作者
本帖最后由 cjseng 于 2012-7-31 23:35 编辑

这种现象就是堆栈溢出啊。
可以的话先用软件仿真看一下,看看sp_max是多少。中断开的过多,函数嵌套过深都会占用大量堆栈的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

190

帖子

2

粉丝