[STM32H7] H743内置双bank flash 并行处理异常问题

[复制链接]
3601|20
 楼主| laocuo1142 发表于 2024-4-24 09:11 | 显示全部楼层 |阅读模式
最近在使用STM32H743做一个项目,用到了内置的flash储存数据,查看参考手册,743的双bank flash是可以同时操作的,我的程序和数据都放在的bank1,在擦除bank2的sector时,发现我的程序像是暂停了,直到擦除完成。具体的表现是tcp连接断开了,usb vcp连接断开了,定时中断暂停了,擦除完成以上的处理都可以手动或自动恢复。在线仿真单步运行时,watch窗口的数据也变灰了,擦除完成后才继续刷新。我确认我的代码里在操作flash时没有关闭全局中断(查看hal库函数也能看到,确实没有开关中断的操作),能否帮忙分析一下,是否还有哪些原因会导致我说的现象,或者说我对743的双bank同时操作理解错了?
谢谢
附图是743参考手册里对双bank并行处理的说明

digit0 发表于 2024-4-24 19:39 | 显示全部楼层
感觉像擦除的时候,系统不跑了?
鹿鼎计 发表于 2024-4-24 20:10 | 显示全部楼层
没搞过双bank的,话说要这么大的Flash为啥不上SD卡?
夜阑风雨 发表于 2024-6-20 09:57 | 显示全部楼层
在使用STM32H743的Flash时,确实可以利用其双Bank特性进行同时操作,这样可以实现在一个Bank上执行代码的同时,在另一个Bank上进行擦除或编程操作,从而提高系统的响应性和实时性。
远山寻你 发表于 2024-6-20 12:00 | 显示全部楼层
尽管STM32H743的Flash支持双Bank操作,但在实际操作中,可能存在同步机制,即在一个Bank上的操作(如擦除)可能会阻塞另一个Bank上的操作(如执行代码)。这可能是由于内部总线或仲裁机制导致的。
一秒落纱 发表于 2024-6-20 14:00 | 显示全部楼层
在某些情况下,Flash操作可能具有较高的优先级,这可能会导致在执行Flash操作时,其他中断或任务被暂时挂起。
光辉梦境 发表于 2024-6-20 16:00 | 显示全部楼层
尽管您确认在操作Flash时没有显式关闭全局中断,但某些底层操作或库函数可能在执行Flash操作时隐式地关闭了全局中断。这可能是由于HAL库或其他库函数的实现细节。
淡漠安然 发表于 2024-6-20 18:00 | 显示全部楼层
检查您的时钟配置,确保在Flash操作期间,系统时钟没有被意外修改或关闭。
三生万物 发表于 2024-6-20 22:00 | 显示全部楼层
检查电源管理设置,确保在Flash操作期间,没有进入低功耗模式或电源管理策略没有影响系统运行。
江河千里 发表于 2024-6-21 02:00 | 显示全部楼层
如果使用了DMA来处理Flash操作,检查DMA配置和优先级设置,确保它们不会干扰其他中断或任务。
别乱了阵脚 发表于 2024-6-21 10:00 | 显示全部楼层
检查您的软件配置,包括中断优先级、任务调度等,确保它们不会在Flash操作期间导致系统暂停。
冰春彩落下 发表于 2024-6-21 12:00 | 显示全部楼层
使用调试工具(如ST-Link或J-Link)来监控系统状态,查看在Flash操作期间哪些中断或任务被挂起。
暖了夏天蓝了海 发表于 2024-6-21 16:00 | 显示全部楼层
尝试优化Flash操作的代码,例如使用更小的Sector进行擦除,或者在不影响系统性能的情况下,将Flash操作安排在系统空闲时段。
小小蚂蚁举千斤 发表于 2024-6-23 16:48 | 显示全部楼层
建议使用稳定的硬件进行设计
AdaMaYun 发表于 2024-6-24 23:19 | 显示全部楼层
STM32H743的Flash时,确实可以利用其双Bank特性进行同时操作
LOVEEVER 发表于 2024-6-25 19:29 | 显示全部楼层
743的双bank flash是可以同时操作的
l63t89 发表于 2024-6-30 23:07 | 显示全部楼层
即使你没有手动关闭全局中断,但在STM32中,不同的中断有不同的优先级。如果你的程序在擦除Flash时发生了中断,且这些中断的优先级高于你的应用程序的其他部分,可能会导致类似的暂停现象。
l63t89 发表于 2024-6-30 23:07 | 显示全部楼层
STM32的Flash访问有时序限制,特别是在执行擦除和写入操作时。如果这些操作没有按照时序进行,可能会导致CPU在等待Flash操作完成时暂停。尤其是在擦除大块数据时,这种影响可能更加显著。
雨果喝水 发表于 2024-8-29 12:42 | 显示全部楼层
如果系统中有高优先级的中断(如定时器中断)在进行 Flash 操作时,优先级不当可能会导致中断被阻塞或暂停。
雨果喝水 发表于 2024-8-29 12:42 | 显示全部楼层
STM32H743的双Bank Flash设计允许同时操作两个Flash Bank,这样可以在一个Bank执行程序时,另一个Bank进行擦除或编程,理论上应该可以提高操作效率。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1296

主题

6239

帖子

15

粉丝
快速回复 在线客服 返回列表 返回顶部