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 检测到的任何错误;未发现错误 检查WRPPRAR寄存器;没有保护设置 检查勘误表 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)

STM32H7时钟树RCC分析--- HAL库配置

STM32H7时钟树RCC分析--- HAL库配置

STM32H7的DSP教程第33章 STM32H7不限制点数FFT实现

无法在STM32H7上正确设置Cortex M7 ITM