STM32H7 在复位后不久尝试擦除 bank 1、扇区 0 时挂起
Posted
技术标签:
【中文标题】STM32H7 在复位后不久尝试擦除 bank 1、扇区 0 时挂起【英文标题】:STM32H7 hangs when trying to erase bank 1, sector 0 shortly after reset 【发布时间】:2019-11-19 05:50:34 【问题描述】:使用 STM32H753,我在 bank 1、sector 0 (0x08000000
) 中有引导代码,它检测并跳转到 bank 2、sector 0 (0x08100000
) 中的应用程序代码。在应用程序代码中,我试图擦除和重写 bank 1 扇区 0,但是当我在复位后过早设置 FLASHH7_CR_START
时,MCU 锁定(没有故障处理程序输出)。
应用程序代码非常复杂,支持芯片的许多功能,但既不支持存储交换也不支持 FLASH CRC。已知故障处理程序可以工作。
我尝试过的事情:
在擦除前忙等待50-100ms从复位;成功 将擦除/重写重定向到bank 1,sector 5;成功(无需等待) 应用程序代码禁用缓存;仍然失败 在复位时和 100ms 后比较 FLASHH7 寄存器组;没有变化 检查SR
中的错误并清除使用CCR
检测到的任何错误;未发现错误
检查WRP
和PRAR
寄存器;没有保护设置
检查勘误表 rev6(2019 年 6 月 19 日);没有相关问题
引导代码不启用任何中断或缓存,应用程序代码写入VTOR
。
擦除 STM32H7 引导扇区(或最近执行的扇区)似乎还有其他时间敏感的问题。我错过了什么?
【问题讨论】:
IMO 它是一个非常新鲜的微观结构,也相当复杂。如果硅片中没有错误,我会感到惊讶。你检查勘误表了吗?向 STM 报告 @P__J__ 谢谢,我已经查看了勘误表 rev6(现在在上面提到),因此避免了银行掉期和 CRC 所有中断处理程序都在 RAM 中? @GuillaumePetitjean 不,他们在银行 2 闪存 您是否尝试将闪存擦除代码复制到 RAM 中? 【参考方案1】:因为图片而发布作为答案。
正如我所怀疑的那样。可能是硅虫
这来自勘误表。检查您的 uC 模型(实际上是隐藏的 :))并为您的模型下载勘误表。
【讨论】:
问题明确指出银行交换未启用。 但它看起来还是另一个错误 这是一个 STM32H753,我检查了勘误 rev6。已经避免银行交换。将尝试编写最少的重现代码。 您是否直接联系 STMicro 支持?它们可能对此类主题很有帮助。 @GuillaumePetitjean 是的,等待 STM 的回复以上是关于STM32H7 在复位后不久尝试擦除 bank 1、扇区 0 时挂起的主要内容,如果未能解决你的问题,请参考以下文章
STM32H7教程第14章 STM32H7的电源,复位和时钟系统
BSP视频教程STM32H7视频教程第4期:从启动到运行过程全解析,电源域,复位,时钟,软硬件启动流程到堆栈,map和htm文件分析(2022-01-26)