搜索
bottom↓
回复: 44

stm32固件局部损坏,重刷固件后OK,请问有遇到过的么?

[复制链接]

出20入128汤圆

发表于 2019-1-21 10:59:50 | 显示全部楼层 |阅读模式
本帖最后由 z123 于 2019-1-21 11:49 编辑

stm32固件局部损坏,重刷固件后OK,请问有遇到过的么?
1、表现在某个功能异常,其它功能都是OK的;比如can输出乱码,其它驱动各复杂外设,都是ok的;会不会与固件在flash中的存储个别位错乱有关,类似硬盘坏道?
2、重刷固件后,全部恢复正常,没有任何硬件损坏;

-----------------------------------------------------------------------------
板卡是在正常使用一段时间后出现的偶发固件局部损坏的现象的
-----------------------------------------------------------------------------

有遇到过的大神说说看么?谢谢!

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出130入129汤圆

发表于 2019-1-21 11:36:38 来自手机 | 显示全部楼层
程序有bug,久了暴露出来,这可能性估计还大点。

出0入4汤圆

发表于 2019-1-21 11:39:19 | 显示全部楼层
68336016 发表于 2019-1-21 11:36
程序有bug,久了暴露出来,这可能性估计还大点。

+1                                         

出0入0汤圆

发表于 2019-1-21 11:40:38 | 显示全部楼层
68336016 发表于 2019-1-21 11:36
程序有bug,久了暴露出来,这可能性估计还大点。

+1           

出0入0汤圆

发表于 2019-1-21 11:42:08 | 显示全部楼层
1.该产品是发生在老产品上?还是新产品上?是老产品近期才发现的问题?还是新产品正在测试时测出的问题?这类信息很重要。

2.先不要怀疑CPU的品质问题,优先怀疑程序bug的问题。

3.对有问题的功能,最好再详细表述一下。软件人员是否跟过代码?

4.产品是否有bootloader?是否有跳转类的写法?功能异常时,能否判断出CPU是否出现复位的情况等等...

5.产品电路的供电情况是否有观察过?建议测量一下。也许会有所发现。重要的信号也可测量,如RESET信号,或功能出现异常的模块单元信息等。

6.再补充描述一下。。。

出0入0汤圆

发表于 2019-1-21 11:45:02 | 显示全部楼层
如果你数据存在mcu的代码段,有可能是操作时序的问题,比如某个操作过程中被代码改写,或者低电压时操作flash

出0入362汤圆

发表于 2019-1-21 11:45:20 | 显示全部楼层
既然重刷固件就正常了, 那把有问题的固件读出来, 和正常固件diff一下看看.

估计是有iap之类功能, 写flash时写飞了吧.

出20入128汤圆

 楼主| 发表于 2019-1-21 11:49:31 | 显示全部楼层
sy_lixiang 发表于 2019-1-21 11:42
1.该产品是发生在老产品上?还是新产品上?是老产品近期才发现的问题?还是新产品正在测试时测出的问题?这 ...

回大神

-----------------------------------------------------------------------------
板卡是在正常使用一段时间后出现的偶发固件局部损坏的现象的
-----------------------------------------------------------------------------

出20入128汤圆

 楼主| 发表于 2019-1-21 11:53:40 | 显示全部楼层
tomzbj 发表于 2019-1-21 11:45
既然重刷固件就正常了, 那把有问题的固件读出来, 和正常固件diff一下看看.

估计是有iap之类功能, 写flash ...

回大神

1、既然重刷固件就正常了, 那把有问题的固件读出来, 和正常固件diff一下看看.
————这个后面遇到,会保存此有问题的,来对比比较,感谢提醒!

2、估计是有iap之类功能, 写flash时写飞了吧.
————这个软件的人员,说没有iap功能

出0入0汤圆

发表于 2019-1-21 12:05:39 | 显示全部楼层
z123 发表于 2019-1-21 11:49
回大神

-----------------------------------------------------------------------------

1.你的描述中有个疑问,你是如何确定是“部分固件损坏”的?这个是如何判断出来的?表现出什么具体的功能失效了吗?这个失效故障品是否具有一致性?还是比较随机?

2.如果是可以判断是固件损坏,和楼上的想法一样,把故障品的固件读出来,和正常品做下对比,观测是否真的是固件区发生了实质变化。

出0入442汤圆

发表于 2019-1-21 12:22:52 来自手机 | 显示全部楼层
sy_lixiang 发表于 2019-1-21 12:05
1.你的描述中有个疑问,你是如何确定是“部分固件损坏”的?这个是如何判断出来的?表现出什么具体的功能 ...

很有可能是程序bug,把部分地址给写坏了,比如存config写到progrom里了。

出20入128汤圆

 楼主| 发表于 2019-1-21 13:10:32 | 显示全部楼层
sy_lixiang 发表于 2019-1-21 12:05
1.你的描述中有个疑问,你是如何确定是“部分固件损坏”的?这个是如何判断出来的?表现出什么具体的功能 ...

目前发现的是CAN输出的引脚数据错乱,因为一旦出现问题,重新上下电之类,故障依旧,就像固件被改写了一般,所以我描述是部分固件损坏的感觉,就像磁盘坏道一般;

目前比较偶发,且偶发集中在can的输出引脚上面

出0入4汤圆

发表于 2019-1-21 13:10:51 | 显示全部楼层
如果是固件损坏,不大可能程序还能运行。极大地可能是隐藏的比较深的BUG

出20入128汤圆

 楼主| 发表于 2019-1-21 13:12:29 | 显示全部楼层
yunqing_abc 发表于 2019-1-21 13:10
如果是固件损坏,不大可能程序还能运行。极大地可能是隐藏的比较深的BUG
...

因为一旦出现问题,重新上下电之类,故障依旧,就像固件被改写了一般,所以我描述是部分固件损坏的感觉,就像磁盘坏道一般;

出0入0汤圆

发表于 2019-1-21 13:14:55 | 显示全部楼层
估计是程序的BUG,数组越界啊,野指针之类。。。

出0入0汤圆

发表于 2019-1-21 13:17:31 | 显示全部楼层
z123 发表于 2019-1-21 13:10
目前发现的是CAN输出的引脚数据错乱,因为一旦出现问题,重新上下电之类,故障依旧,就像固件被改写了一 ...

你说的情况应该是:发生故障时,重启设备故障依旧,但重新刷一下固件,故障即消失。

这种情况去把故障品的固件读出来,然后做对比吧~!无论读出来的数据是否发生变化,都怀疑是程序bug引起。

这种情况,可能查起来还挺麻烦。

出0入0汤圆

发表于 2019-1-21 13:23:41 | 显示全部楼层
关注这个现象,没遇到过,如果真的如此,对产品影响巨大,期望早点确认原因

出0入0汤圆

发表于 2019-1-21 13:25:07 | 显示全部楼层
设备是否有电池一直供电?如果有的话可能重新上下电并不能复位。

出20入128汤圆

 楼主| 发表于 2019-1-21 13:25:51 | 显示全部楼层
罗小蘑菇 发表于 2019-1-21 13:25
设备是否有电池一直供电?如果有的话可能重新上下电并不能复位。

没有的,完全外部电源供电

出0入0汤圆

发表于 2019-1-21 13:26:20 | 显示全部楼层
另外程序里有操作内部Flash的代码吗?比如操作内部FLASH升级程序或者保存参数等

出20入128汤圆

 楼主| 发表于 2019-1-21 13:31:46 | 显示全部楼层
罗小蘑菇 发表于 2019-1-21 13:26
另外程序里有操作内部Flash的代码吗?比如操作内部FLASH升级程序或者保存参数等 ...

按照软件人员的说法,正常工作时候,是没有写flash的操作的

出0入42汤圆

发表于 2019-1-21 13:33:13 | 显示全部楼层
考虑一下是不是配置数据被修改出的问题,重刷固件正好把配置恢复出厂了

出30入54汤圆

发表于 2019-1-21 13:47:46 | 显示全部楼层
基本上认为是软件bug,逃不掉的

出0入0汤圆

发表于 2019-1-21 13:48:31 | 显示全部楼层
本帖最后由 laoshuhunya 于 2019-1-21 14:05 编辑
z123 发表于 2019-1-21 13:31
按照软件人员的说法,正常工作时候,是没有写flash的操作的


意思是“不正常工作”时有写FLASH的操作
只要软件中存在写FLASH的代码,几乎可以肯定是软件问题,不要轻易怀疑FLASH。
编辑补充:这种情况可以把FLASH操作完成中断打开,在FLASH操作完成中断中把入栈的PC值保存到一个指定的FLASH位置,然后while(1);  这样可能可以定位异常程序位置。

出20入128汤圆

 楼主| 发表于 2019-1-21 14:56:55 | 显示全部楼层
laoshuhunya 发表于 2019-1-21 13:48
意思是“不正常工作”时有写FLASH的操作
只要软件中存在写FLASH的代码,几乎可以肯定是软件问 ...

经过再问软件的,软件的说,有写一次flash,检测到某些位为0的时候,会写操作一次flash;之后的都在读,没有再写了~~~

现在软件的再排查看看

出20入128汤圆

 楼主| 发表于 2019-1-21 14:57:59 | 显示全部楼层
sy_lixiang 发表于 2019-1-21 13:17
你说的情况应该是:发生故障时,重启设备故障依旧,但重新刷一下固件,故障即消失。

这种情况去把故障品 ...

经过再问软件的,软件的说,有写一次flash,检测到某些位为0的时候,会写操作一次flash;之后的都在读,没有再写了~~~

现在软件的再排查看看

------------------------------------------------------------------------------------------------------------------
并且那个固件,写入之后,是关闭了swd那些功能的,不能直接再读出单片机里面的固件了

出20入128汤圆

 楼主| 发表于 2019-1-21 15:10:57 | 显示全部楼层
sy_lixiang 发表于 2019-1-21 13:17
你说的情况应该是:发生故障时,重启设备故障依旧,但重新刷一下固件,故障即消失。

这种情况去把故障品 ...

请问老大,程序运行时,频繁读mcu内部的flash,会不会导致一些异常?

出20入128汤圆

 楼主| 发表于 2019-1-21 15:28:38 | 显示全部楼层


http://www.openedv.com/posts/list/51479.htm

感觉跟这个有点像的现象,不过它的是串口

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入4汤圆

发表于 2019-1-21 15:55:52 | 显示全部楼层
读FLASH 的时候有没有数据安全性判断,读出的数据出错会引起程序执行异常。

出0入0汤圆

发表于 2019-1-21 16:53:29 | 显示全部楼层
有的,这个原因很多,大体分为两个方面,一个是编程器的问题,建议及时更新官方最新固件,老固件新单片机可能会有麻烦,前两天刚解决430一个类似的问题;二是本身的软件问题,这个就要反读出代码,自己去分析了,这个要有较强的逻辑思维和丰富的经验,不是一朝一夕的事。前面430的问题就是通过反读代码分析的,代理商想扯皮,最后被扇了一个响亮的耳光,最后自己承认当初配送的编程器代码有bug,现已免费换新

出10入8汤圆

发表于 2019-1-21 17:24:37 | 显示全部楼层
有可能写FLASH,把固件应用代码位置的数据改写了。

出0入0汤圆

发表于 2019-1-21 17:32:20 | 显示全部楼层
以前用C8051F340的时候遇到过掉固件的问题,复位电路用了电源管理芯片就好了,哦,对了,程序中就是有写flash的操作,如果把写flash的屏蔽掉也没问题了

出0入0汤圆

发表于 2019-1-21 17:49:34 来自手机 | 显示全部楼层
arm 发表于 2019-1-21 17:32
以前用C8051F340的时候遇到过掉固件的问题,复位电路用了电源管理芯片就好了,哦,对了,程序中就是有写fla ...

看来是跑飞了跑到写flash的程序了

出0入0汤圆

发表于 2019-1-21 17:56:35 | 显示全部楼层
怀疑是有数据记忆在flash里面,然后出现某些异常情况的时候,数据没有写对,然后can部分又是要这个数据来判断功能什么的
所以就算你断电上电,还是不对,
所以1、写flash一定要保证安全
2、CAN软件部分,发现异常的flash变量数据,一定要强制恢复成默认值

出0入0汤圆

发表于 2019-1-21 19:09:22 | 显示全部楼层
一定要使用一整块page存放数据,定义一个大数组把这个page全部占用,注意这个数组不要被优化掉;
否则,编译器可能会把代码和你的flash数据放在一个page,当你改写数据要擦的时候就会把代码擦掉;
即使你把数据定义在了最后一个page,也可能出现代码擦掉的情况;

另外,
1,校验flash数据完整性,否则如果改写时掉电就。。。。。
2,校验失败恢复默认设置;

以上3点,应该可以解释你的问题

出0入0汤圆

发表于 2019-1-21 23:08:07 | 显示全部楼层
写falsh的操作可能某些时候没写对,把内容写到别的地址了,从而影响了can的某些寄存器被改写。建议去掉相应的flash操作,把数据存储到外部存储器去,除非你加上各种判断能保证读写flash是完全正确的。

出20入128汤圆

 楼主| 发表于 2019-1-22 08:20:52 | 显示全部楼层
cocalli 发表于 2019-1-21 23:50
1、掉固件,这个会有,比如仿真器、烧录器,一般这种情况,都是有自写flash导致。
2、IC,散新IC等,可能会 ...

感谢老哥的意见和建议,将逐个排查看看!

出0入0汤圆

发表于 2019-1-22 08:39:46 | 显示全部楼层
本帖最后由 farfar 于 2019-1-22 15:04 编辑
z123 发表于 2019-1-21 13:31
按照软件人员的说法,正常工作时候,是没有写flash的操作的


那是不是代碼中還是有寫FLASH的代碼段,如果有那很可能是程式無意中錯誤的執行了寫FLASH段的造成的。

出0入0汤圆

发表于 2019-1-22 09:55:10 | 显示全部楼层
如果只有1个出现这样的问题,可能烧录或硬件问题。超过1个基本上是还是程序的因素。

出20入128汤圆

 楼主| 发表于 2019-1-22 13:13:06 | 显示全部楼层
剑舞 发表于 2019-1-21 16:53
有的,这个原因很多,大体分为两个方面,一个是编程器的问题,建议及时更新官方最新固件,老固件新单片机可 ...

如果是烧录器的问题,应该烧录完,当时立刻就能发现问题吧?还是经过一段时间使用后,暴露的问题?

出0入0汤圆

发表于 2019-1-22 17:23:55 | 显示全部楼层
既然重刷固件就正常了, 那把有问题的固件读出来, 和正常固件diff一下看看.
+1

出20入128汤圆

 楼主| 发表于 2019-1-22 20:33:10 | 显示全部楼层
bigharpoon 发表于 2019-1-22 17:23
既然重刷固件就正常了, 那把有问题的固件读出来, 和正常固件diff一下看看.
+1 ...

然后这个,用下载器,固件烧录进去,默认就断掉了读取出来的功能。。。。。

看来得再烧个进去hex进去,不断读取功能的那种

出0入0汤圆

发表于 2019-1-23 13:08:31 | 显示全部楼层
不清楚你用的是什么下载器和配套的烧写软件。
市面上的脱机烧写器,通常配套专业烧写软件,具有编辑选项字节的功能。
将读功能对应的选项字节使能,用J-Flash之类的工具就可以读目标芯片二进制文件了。
7楼的方法,有一个前提,就是你的应用程序运行期间没有改写过flash。如果有,那这种方法就没必要尝试了。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-28 23:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表