[STM32G0] STM32G系列ECC校验错误,进入NMI中断

[复制链接]
2889|12
 楼主| gainst 发表于 2021-12-28 10:47 | 显示全部楼层 |阅读模式
请教一下,目前我们有用STM32G0B1VE系列的芯片,由于应用需求,在机器开机时,会有大约2个page的flash操作。但是在做上下电测试时,经常会发现,在测试的过程中,会造成整台机器变成砖头,断电重启无法恢复。
经过一系列的排查,应该是由于在上下电的过程中,Flash数据更新的过程中,造成ECC未写入,造成最终读Flash时,ECC错误,造成了NMI中断。。
由于G系列比较新,我们只是搜到了一片CSDN上的老兄有遇到过相同的情况。
发这个帖子,一来感谢下这位仁兄。。二来还是想确认下,除了将Flash擦除,重写之外,是否还有其他解决的方式?
感谢感谢。
https://blog.csdn.net/qq_29083043/article/details/107891658

3404061ca7ab17f2f3.png
 楼主| gainst 发表于 2021-12-29 14:02 | 显示全部楼层
本帖最后由 gainst 于 2021-12-29 14:04 编辑

另外,查看芯片手册,针对FLASH_ECCR的描述,似乎有误。。
在手册里,针对FLASH_ECCR->ADDR_ECC的描述,应该是该地址乘以8,应该就是Flash ECC错误的地方。但是ADDR_ECC只有14bit,乘以8也就17bit,总共为128KB。 但是我们用的G0B1VE是两个Bank, 每个Bank为256KB,所以,文档这里是否描述有误?个人觉得,手册是不是针对128KB/Bank的型号所做的?


8396761cbf923cd189.png
5551561cbf9ab800e2.png
香水城 发表于 2021-12-29 16:09 | 显示全部楼层
发生了ECC错误,触发NMI是芯片硬件机制决定了的。擦除重写Flash是正常操作。

至于那个寄存器里的ECC出错地址记录位宽,认同你的分析,感觉这个地方只是针对128K bank来描述的。

毕竟,G0系列里单个BANK有128KB的也有256KB的。
zyj213 发表于 2021-12-31 15:01 | 显示全部楼层
为啥会造成ECC校验失败呢
shjuturt 发表于 2021-12-31 15:30 | 显示全部楼层
是不是你的操作2页flash的时间预留的时间比较短呢?加点儿时间试试
ksjdisa 发表于 2021-12-31 16:12 | 显示全部楼层
听你的意思好像是预留擦除时间比较短导致呢
ppaakala 发表于 2021-12-31 16:12 | 显示全部楼层
这个你可以去请教一下ST的FAE,他们可能会有解决方法
shskaoanc 发表于 2021-12-31 16:39 | 显示全部楼层
属实没遇到过ECC校验失败方面,我觉得你可以外置数据,把数据放在外部flash芯片里,这样是不是能好一些呢
hfaouhfoa 发表于 2021-12-31 16:39 | 显示全部楼层
可以不放在芯片的flash里呀,外加一个存储芯片,开机读取就好啦
hdahd 发表于 2021-12-31 17:07 | 显示全部楼层
G系列属实不好搞,资料不是很多
qqjmjso 发表于 2021-12-31 17:07 | 显示全部楼层
好像只能重新擦除数据,校验都错了,只能重置了
lalhdo 发表于 2021-12-31 17:25 | 显示全部楼层
断电还操作flash干啥?是要记录数据?
gshhkkk 发表于 2021-12-31 17:25 | 显示全部楼层
断电可以加个法拉电容,可以缓冲一下断电时间,把数据存完之后再断电
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

79

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部