打印

stm32运行出错,多次烧写程序后居然好了

[复制链接]
10694|26
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qljqlj|  楼主 | 2010-9-6 20:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
利用stm32这个平台,在iar环境下,做了一个项目,现已批量上市,前几天去国家质检那里测试的8台机器回来后,有三台不能运行,我使用仿真器烧写程序正常,但是仿真时,出现死机,停止运行时,现象是回到汇编模式,并在某个区域死循环。我也不理解为什么这样,就利用仿真器仿真烧写后,单步运行,结果发现利用step over到某个地方就死机,而利用step into就能顺利通过死机区域,我也不理解为什么,多烧写了几次以后,死机的问题居然没有了,和正常运行的程序一致了,同样在其他两台机器上,也是这种现象,最后也正常运行了,考虑到已经上市的产品,我非常担心返修率太高,请教大家给个说法,如何改进
沙发
ZRJ8951| | 2010-9-6 21:31 | 只看该作者
这问题得重视。

使用特权

评论回复
板凳
dfsa| | 2010-9-6 21:49 | 只看该作者
的确有点奇怪

使用特权

评论回复
地板
香水城| | 2010-9-6 22:22 | 只看该作者
的确有点奇怪
dfsa 发表于 2010-9-6 21:49


确实奇怪,但奇怪的不是有问题,而是楼主没说是什么程序造成的,:L

使用特权

评论回复
5
tsx1983| | 2010-9-7 13:01 | 只看该作者
我也遇到过奇怪的问题,用STM32F103ZET6的时候,把程序烧进去,刚开始能正常运行,等过几个星期再上电,发现起不来了,不管重启几次.然后用仿真器再烧写一遍就又好了。
似乎时间长了,FLASH有丢数据的嫌疑。

使用特权

评论回复
6
香水城| | 2010-9-7 13:34 | 只看该作者
我也遇到过奇怪的问题,用STM32F103ZET6的时候,把程序烧进去,刚开始能正常运行,等过几个星期再上电,发现起不来了,不管重启几次.然后用仿真器再烧写一遍就又好了。
似乎时间长了,FLASH有丢数据的嫌疑。 ...
tsx1983 发表于 2010-9-7 13:01


正常情况下,你说的这种情况是不可能出现的。

使用特权

评论回复
7
qljqlj|  楼主 | 2010-9-7 17:09 | 只看该作者
今天忙别的,刚回来。。

请问香水城,"正常情况下,你说的这种情况是不可能出现的。"对这个我也是这么认为的,正常情况没有问题,因为出货快半年了,问题是我在质检实验室里做完实验回来后才发现的,内容包括高低温老化,震荡,emc,emi等各项电子实验,说实话,如果不是有特殊的办法,这次实验就砸了,钱也就白交了。

“确实奇怪,但奇怪的不是有问题,而是楼主没说是什么程序造成的,”-------怎么说那,不是一个程序,虽然是8台机器,可是机型不一致,程序也不一样,但是现象是一样的。就是楼主位描述的那样。

我非常担心低温问题,现在北方冬天温度都到-40,由于设备不在室内,会不会低温导致问题。如果那样,我那就比较被动了。原先用的时avr的,还是蛮正常的,由于别的原因,才更换成stm32的。不是替avr打广告。
另外,我还忘记一个地方,有一台机器,就是用仿真器正常烧写程序以后,开始仿真运行时,不运行。我烧写多次以后,才开始运行,然后才发生中途死机问题,就是楼主位描述的

使用特权

评论回复
8
qljqlj|  楼主 | 2010-9-7 17:11 | 只看该作者
re:tsx1983
请问兄弟,你量产多少了,一台,两台不怕。我现在就是后怕批量出现这个问题

使用特权

评论回复
9
yybj| | 2010-9-7 17:17 | 只看该作者
“会不会低温导致问题”------你在常温下做一次相同的实验,就知道是不是低温造成的了

使用特权

评论回复
10
jc981| | 2010-9-7 17:28 | 只看该作者
看来,以后做产品,一定要做足够的测试才行了。

使用特权

评论回复
11
香水城| | 2010-9-7 17:57 | 只看该作者
回7楼:

1)楼主位说“在某个区域死循环”,请问这个区域是哪里?是否每片芯片都一样的区域,还是不一样的区域。

2)“发现利用step over到某个地方就死机,而利用step into就能顺利通过死机区域”,这里的“某个地方”与上述的某个区域有什么关联?什么程序?这种现象是只与地址有关,还是与指令有关,还是与操作有关?

3)高低温测试,高温是多少,低温是多少?
关于这个高低温测试问题,再请问你选择的芯片的工作温度范围是多少?


说实话,如果你希望大家帮你分析问题,就应该多给出一些具体的,甚至是量化的信息,这样分析才能有的放矢,如果只是“某个”“某种”,我们就只好瞎猜了,:lol

使用特权

评论回复
12
无冕之王| | 2010-9-7 18:50 | 只看该作者
香主分析的很精辟,希望解决问题的,就是需要多给些量化信息,这样才能对症下药:lol

使用特权

评论回复
13
魔鬼小漫| | 2010-9-7 18:56 | 只看该作者
从两个方面一个考虑~~一个是你烧写的次数~~一个是开机的时间~~若果机子都是烧写一定次数以后机子好用,那是程序问题,这个问题不可能出现;如果机子都是开机后的某个时间点烧写~~哇~好了~~那就是硬件的问题~~就是有某个物理因素在影响机子~~

使用特权

评论回复
14
xixihaha0| | 2010-9-7 20:06 | 只看该作者
可能是硬件上有点小毛病吧

使用特权

评论回复
15
dannnnny| | 2010-9-8 07:39 | 只看该作者
一定会再出现

使用特权

评论回复
16
ilymy| | 2010-9-8 12:55 | 只看该作者
我遇到过的现象:
程序版本a:可正常运行
程序版本b:可正常运行,在a的基础上,比a复杂
程序版本c:在b的基础上,增加某功能,但执行此功能后程序死掉(后来发现是程序的问题)

然后,出现了奇怪的事

重复烧写几次c后(当时考虑可能是烧写错误导致死机),单片机上电后未运行后加入的功能也死机,是初始化等程序正常执行,lcd显示界面后死机;

于是烧入b程序,发现与上面同样的现象,显示出界面后死机

烧入a程序,程序正常运行

将改好的c程序烧入,程序正常运行

我想是原来的不正常的c程序由于bug而导致程序乱飞,“碰巧”修改了某处寄存器或是存储器,但是重新烧写程序却不能覆盖它,所以无法修改回来。
而原来的a恰好可以覆盖到被“碰巧”修改的地方,于是又正常了

使用特权

评论回复
17
sunmonth| | 2010-9-8 14:47 | 只看该作者
关注,是不是flash部分数据丢失

使用特权

评论回复
18
xsgy123| | 2010-9-8 17:20 | 只看该作者
说明你的系统不稳定,还得多次调试

使用特权

评论回复
19
sinadz| | 2010-9-8 18:53 | 只看该作者
楼主给的量化信息还是太少了

使用特权

评论回复
20
ilymy| | 2010-9-8 21:20 | 只看该作者
旧事重提一下,我曾经发过个帖子问:
中断后先清中断标志和后清中断标志有什么差别
还有在其他论坛问的一个也是很奇怪的问题:
http://www.daxia.com/bibis/mored ... 46&userid=62859

现在结合这个问题,我想stm32“可能”存在一个非常隐蔽的bug。
比如楼主的问题,我猜想这样:
那几台有问题的机器,由于某种原因导致程序“跑飞”,从而修改了某处可能是寄存器或是存储器,导致程序无**常运行,而后来楼主用仿真器调试和烧写程序的过程中,又将那个地方改回来了。

我在16楼说的那个程序,执行过程是这样的:
开始先初始化外设等->lcd显示界面->死循环,判断按健中断标志等。
判断到某个标志位置位,则执行相应的程序。

在出问题后,我发现其死在lcd显示界面后,按健无响应。
我的按健检测是用的轮询方式。中断有秒中断,和timer2。
所以我判断是进入中断后死机。
遗憾的是当时并没有认真测试,所以无法确定到底死在何处。

但是这种理解有个很明显的问题,那就是重新烧写程序为什么会不重写有问题 的地方。
亦或是烧写软件的问题?

使用特权

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

本版积分规则

41

主题

134

帖子

3

粉丝