STM32F103RCT6自动擦除FLASH问题
本人最近在使用STM32F103RCT6这款芯片做产品,但是发现有个别芯片出现在掉点瞬间有上电时,MCU自动擦除了第一个FLASH扇区现象,导致产品变砖.而且这个现象是可以复现的.而恰巧这个又是发个顾客的样品....我将出现问题的产品更换过MCU, 此现象没有复现.把更换下来的MCU换到另一个正常的产品上, 此现象复现.由此推测此问题是跟随MCU的.请问有人遇到过这个现象吗?怎么破?
代码应该避开意外掉电时去执行写flash的操作 从上下文推测,你说的Flash应该是MCU内部Flash,而不是外挂Flash。
以前从没出现过Flash内容丢失问题,那么你的Flash内容丢失大概是多大机率?
原理图、程序工程请附上。一般是不按套路出牌导致的。 这一段话错字有点多啊,你程序有写flash的地方看一下,有什么意外事件 wenyangzeng 发表于 2018-12-13 11:59
代码应该避开意外掉电时去执行写flash的操作
这个如何避免? 本帖最后由 wenyangzeng 于 2018-12-17 10:09 编辑
ldptest 发表于 2018-12-17 09:55
这个如何避免?
1、避免频繁对Flash写大量数据,2、双重数据备份
wenyangzeng 发表于 2018-12-17 10:00
1、避免频繁对Flash写大量数据,2、双重数据备份
这只能降低风险,而不能避免。
看来还是要从硬件上去解决。 看一下程序区的代码量,如果用到了内部FLASH存储,查看一下是不是占用了程序的代码。 看别人的问题能提高经验。但是Flash被擦除的问题,还没有发现过。
好了言归正传,因为不了解你的项目。下面的只是讲一些思路。
1、你的程序中是否有擦除Flash的程序。或者说你的程序中是否有IAP和模拟EEPROM的程序?我认为MCU缺陷导致擦除Flash的情况可能性不大。
如果里面有对Flash的擦除操作。那么问题很大一部分就出现在这里。基本上变砖的机理是:我擦除了旧的。新的写入故障。然后程序又是从故障那里执行的。
2、想必你应该是用工具把Flash 读回比较了吧?确定是0X08000000的第一个片区错误了吗。这个扇区存储了中断向量表。我认为不可能删除的。请提供一下删除的位置。
好吧,我来说下,凭良心说,每个大公司的产品应当是完美无缺,但是事实上每一批都和其他批次有小的差异,所有产品不可能是100%良好的,即使国家印刷的钞票,能用于流通的,都发现了有瑕疵的,你恰巧碰到了千年不遇的有瑕疵的产品,别扔了这个芯片,也许将来因为它的稀有性,而变得有价值。最后说下,希望你没有买到假的芯片,毕竟国产的相同内核,功能完全一样,引脚完全一致的芯片价格上是有差异的。现在技术在芯片上重新打个标,我也能做到。
页:
[1]
2