打印
[STM32G0]

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

[复制链接]
1814|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


使用特权

评论回复
沙发
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 (260.41 KB )

8396761cbf923cd189.png

5551561cbf9ab800e2.png (122.49 KB )

5551561cbf9ab800e2.png

使用特权

评论回复
板凳
香水城| | 2021-12-29 16:09 | 只看该作者
发生了ECC错误,触发NMI是芯片硬件机制决定了的。擦除重写Flash是正常操作。

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

毕竟,G0系列里单个BANK有128KB的也有256KB的。

使用特权

评论回复
地板
zyj213| | 2021-12-31 15:01 | 只看该作者
为啥会造成ECC校验失败呢

使用特权

评论回复
5
shjuturt| | 2021-12-31 15:30 | 只看该作者
是不是你的操作2页flash的时间预留的时间比较短呢?加点儿时间试试

使用特权

评论回复
6
ksjdisa| | 2021-12-31 16:12 | 只看该作者
听你的意思好像是预留擦除时间比较短导致呢

使用特权

评论回复
7
ppaakala| | 2021-12-31 16:12 | 只看该作者
这个你可以去请教一下ST的FAE,他们可能会有解决方法

使用特权

评论回复
8
shskaoanc| | 2021-12-31 16:39 | 只看该作者
属实没遇到过ECC校验失败方面,我觉得你可以外置数据,把数据放在外部flash芯片里,这样是不是能好一些呢

使用特权

评论回复
9
hfaouhfoa| | 2021-12-31 16:39 | 只看该作者
可以不放在芯片的flash里呀,外加一个存储芯片,开机读取就好啦

使用特权

评论回复
10
hdahd| | 2021-12-31 17:07 | 只看该作者
G系列属实不好搞,资料不是很多

使用特权

评论回复
11
qqjmjso| | 2021-12-31 17:07 | 只看该作者
好像只能重新擦除数据,校验都错了,只能重置了

使用特权

评论回复
12
lalhdo| | 2021-12-31 17:25 | 只看该作者
断电还操作flash干啥?是要记录数据?

使用特权

评论回复
13
gshhkkk| | 2021-12-31 17:25 | 只看该作者
断电可以加个法拉电容,可以缓冲一下断电时间,把数据存完之后再断电

使用特权

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

本版积分规则

14

主题

79

帖子

3

粉丝