我也遇到过奇怪的问题,用STM32F103ZET6的时候,把程序烧进去,刚开始能正常运行,等过几个星期再上电,发现起不来了,不管重启几次.然后用仿真器再烧写一遍就又好了。
似乎时间长了,FLASH有丢数据的嫌疑。
今天忙别的,刚回来。。
请问版主,"正常情况下,你说的这种情况是不可能出现的。"对这个我也是这么认为的,正常情况没有问题,因为出货快半年了,问题是我在质检实验室里做完实验回来后才发现的,内容包括高低温老化,震荡,emc,emi等各项电子实验,说实话,如果不是有特殊的办法,这次实验就砸了,钱也就白交了。
“确实奇怪,但奇怪的不是有问题,而是楼主没说是什么程序造成的,”-------怎么说那,不是一个程序,虽然是8台机器,可是机型不一致,程序也不一样,但是现象是一样的。就是楼主位描述的那样。
我非常担心低温问题,现在北方冬天温度都到-40,由于设备不在室内,会不会低温导致问题。如果那样,我那就比较被动了。原先用的时avr的,还是蛮正常的,由于别的原因,才更换成stm32的。不是替avr打广告。
另外,我还忘记一个地方,有一台机器,就是用仿真器正常烧写程序以后,开始仿真运行时,不运行。我烧写多次以后,才开始运行,然后才发生中途死机问题,就是楼主位描述的
re:tsx1983
请问兄弟,你量产多少了,一台,两台不怕。我现在就是后怕批量出现这个问题
“会不会低温导致问题”------你在常温下做一次相同的实验,就知道是不是低温造成的了
回7楼:
1)楼主位说“在某个区域死循环”,请问这个区域是哪里?是否每片芯片都一样的区域,还是不一样的区域。
2)“发现利用step over到某个地方就死机,而利用step into就能顺利通过死机区域”,这里的“某个地方”与上述的某个区域有什么关联?什么程序?这种现象是只与地址有关,还是与指令有关,还是与操作有关?
3)高低温测试,高温是多少,低温是多少?
关于这个高低温测试问题,再请问你选择的芯片的工作温度范围是多少?
说实话,如果你希望大家帮你分析问题,就应该多给出一些具体的,甚至是量化的信息,这样分析才能有的放矢,如果只是“某个”“某种”,我们就只好瞎猜了,
版主分析的很精辟,希望解决问题的,就是需要多给些量化信息,这样才能对症下药
从两个方面一个考虑~~一个是你烧写的次数~~一个是开机的时间~~若果机子都是烧写一定次数以后机子好用,那是程序问题,这个问题不可能出现;如果机子都是开机后的某个时间点烧写~~哇~好了~~那就是硬件的问题~~就是有某个物理因素在影响机子~~
我遇到过的现象:
程序版本a:可正常运行
程序版本b:可正常运行,在a的基础上,比a复杂
程序版本c:在b的基础上,增加某功能,但执行此功能后程序死掉(后来发现是程序的问题)
然后,出现了奇怪的事
重复烧写几次c后(当时考虑可能是烧写错误导致死机),单片机上电后未运行后加入的功能也死机,是初始化等程序正常执行,lcd显示界面后死机;
于是烧入b程序,发现与上面同样的现象,显示出界面后死机
烧入a程序,程序正常运行
将改好的c程序烧入,程序正常运行
我想是原来的不正常的c程序由于bug而导致程序乱飞,“碰巧”修改了某处寄存器或是存储器,但是重新烧写程序却不能覆盖它,所以无法修改回来。
而原来的a恰好可以覆盖到被“碰巧”修改的地方,于是又正常了
我怀疑20楼的问题与程序的时序有关,可能程序中的某个地方的时序太紧凑,指令的位置移动后,造成在Flash中与地址的对齐错位,使得取指的时序发生变化而导致指令执行的时间变化。
这个问题说起来比较复杂,但与流水线和Flash的加速机制有关。