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

其他格式: JSON · Markdown 中文 · English
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.

generic

官方文档

https://www.st.com/resource/en/application_note/an5340-ecc-management-on-stm32-mcus.pdf

解决方案

  1. 映射出坏闪存扇区:使用闪存控制器将扇区标记为坏块表中的坏块,然后将应用程序数据重定位到备用扇区。示例:HAL_FLASHEx_Erase()擦除该扇区并将其地址存储在专用坏块区域中。
  2. 对关键数据使用Reed-Solomon码实现软件ECC,并在ECC错误时重试读取,从存储在单独扇区中的冗余副本重建数据。

无效尝试

常见但无效的做法:

  1. 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.

  2. Disable ECC checking in flash controller 95% 失败

    Disabling ECC allows silent data corruption to propagate, leading to undefined behavior and potential system crashes.