请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32G系列ECC校验错误,进入NMI中断后,如何处理

[复制链接]
Zero Lee 提问时间:2021-12-29 14:13 / 未解决

请教一下,目前我们有用STM32G0B1VE系列的芯片,由于应用需求,在机器开机时,会有大约2个page的flash操作。但是在做上下电测试时,经常会发现,在测试的过程中,会造成整台机器变成砖头,断电重启无法恢复。 经过一系列的排查,应该是由于在上下电的过程中,Flash数据更新的过程中,造成ECC未写入,造成最终读Flash时,ECC错误,造成了NMI中断。。 由于G系列比较新,我们只是搜到了一片CSDN上的老兄有遇到过相同的情况。

https://blog.csdn.net/qq_29083043/article/details/107891658 发这个帖子,一来感谢下这位仁兄。。二来还是想确认下,除了将Flash擦除,重写之外,是否还有其他解决的方式?104713x82famy3l6ss2yyd.png.thumb.jpg

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

135859a7mjmfmoooour75z.png.thumb.jpg

收藏 评论2 发布时间:2021-12-29 14:13

举报

2个回答
xmshao 回答时间:2021-12-29 16:01:21
第一个问题,当出现ECC错误时会触发NMI中断,的确会这样,这点在手册中也明确出来了。你期望有针对FLASH进行重写的其它办法,目前没有。


至于你提到的第二个问题,你看得很仔细。认同你关于这点的分析,初步怀疑是手册在这个地方是基于128KB BANK的型号来描述的。


首先,STM32G0系列里面,1个BANK有128KB的,也有256KB的。具体到你现在的STM32G0B1,它的1个BANK是256KB.


其中,FLASH_ECCR和FLASH_ECCR2 分别 存放对应于BANK1和BANK2里ECC出错的双字地址。这样的话,FLASH_ECCR里存放地址偏移量的位宽为14的确


不满足256KB存储空间的用于记录ECC出错的偏移地址所需宽度了。关于这点,我们继续跟踪之。
Zero Lee 回答时间:2021-12-31 15:50:50

感谢。。

假如有确认是文档错误的话,也请帮忙更新下帖子哦。。

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版