ST意法半导体
直播中

刘秀英

7年用户 1319经验值
私信 关注
[问答]

STM32G070选项字节修改/恢复后启动问题求解

我正在使用 X-CUBE-CLASSB 包和 IAR EWARM IDE V8.32.4 在 MCU STM32G070CB 上开发家用电器应用程序。我使用 NUCLEO-G070RB 进行早期开发。该应用程序运行良好,直到我在选项字节中打开 SRAM 奇偶校验。
启用 SRAM 奇偶校验:
应用程序在启动时调用 __iar_data_init3 初始化 RAM 变量时跳转到 hart 故障处理程序然而,对我来说更糟糕的是,当禁用 SRAM 奇偶校验(恢复选项字节)时,应用程序不再运行。
SRAM 奇偶校验禁用:
STL_StartUp 方法从启动时调用,它执行启动自检,包括看门狗自检,它执行由两个看门狗中的每一个调用的复位(总共两次复位)。然而,尽管 nBOOT_SEL = 1 和 nBOOT0 = 1 的设置应确保从主闪存 (0x08000000) 启动,但 MCU 未正确复位,程序反而丢失在系统闪存 (0x1FFF 0000 - 0x1FFF 7000) 的某个位置BOOT0 引脚状态。
现在我有两个具有相同设置(比较选项字节内存位置)的 MCU,一个工作正常而第二个不工作。强制 MCU 再次工作的唯一方法是设置 BOOT_LOCK = 1。
这是什么原因?




回帖(1)

朱瑞平

2022-12-1 15:54:06
原则上,当由于某种原因执行未初始化 RAM 位置的读取序列时(通过任何程序,尽管没有正确的代码应该在没有预先初始化该位置的情况下执行这样的读取)在内存内容(包括奇偶校验信息)完全是偶然的。请阅读 AN4435 第 3.3 章的建议。一旦你用任何内容填充 RAM 区域,奇偶校验信息就会被初始化,并且每次从此 RAM 区域读取都应该正确通过(假设内存逻辑中既没有硬件错误,也没有以后由于任何攻击导致的位置被破坏)存储单元内容的交换)。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分