embedded
data_error
ai_generated
partial
NVM:地址0x08010000处发生不可纠正的ECC错误,检测到数据损坏
NVM: ECC uncorrectable error at address 0x08010000, data corruption detected
ID: embedded/nvm-ecc-uncorrectable-error
78%修复率
88%置信度
1证据数
2024-06-01首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| STM32Cube_FW_G4 v1.5.0 | active | — | — | — |
| ARM GCC v13.2.1 | active | — | — | — |
| HAL NVM driver v1.0.0 | active | — | — | — |
根因分析
闪存单元发生多次位翻转,超出ECC纠错能力(SEC-DED),表明永久性硬件退化或辐射引起的单粒子翻转。
English
Flash memory cell has experienced multiple bit flips exceeding ECC correction capability (SEC-DED), indicating permanent hardware degradation or radiation-induced single event upset.
官方文档
https://www.st.com/resource/en/application_note/an5340-ecc-management-on-stm32-mcus.pdf解决方案
-
映射出坏闪存扇区:使用闪存控制器将扇区标记为坏块表中的坏块,然后将应用程序数据重定位到备用扇区。示例:HAL_FLASHEx_Erase()擦除该扇区并将其地址存储在专用坏块区域中。
-
对关键数据使用Reed-Solomon码实现软件ECC,并在ECC错误时重试读取,从存储在单独扇区中的冗余副本重建数据。
无效尝试
常见但无效的做法:
-
Re-flash the entire firmware to overwrite corrupted data
90% 失败
Re-flashing writes new data but does not repair the underlying bad flash cell; ECC error will recur at same address.
-
Disable ECC checking in flash controller
95% 失败
Disabling ECC allows silent data corruption to propagate, leading to undefined behavior and potential system crashes.