打印
[STM32H7]

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

[复制链接]
2177|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上进行擦除或编程操作,从而提高系统的响应性和实时性。

使用特权

评论回复
5
远山寻你| | 2024-6-20 12:00 | 只看该作者
尽管STM32H743的Flash支持双Bank操作,但在实际操作中,可能存在同步机制,即在一个Bank上的操作(如擦除)可能会阻塞另一个Bank上的操作(如执行代码)。这可能是由于内部总线或仲裁机制导致的。

使用特权

评论回复
6
一秒落纱| | 2024-6-20 14:00 | 只看该作者
在某些情况下,Flash操作可能具有较高的优先级,这可能会导致在执行Flash操作时,其他中断或任务被暂时挂起。

使用特权

评论回复
7
光辉梦境| | 2024-6-20 16:00 | 只看该作者
尽管您确认在操作Flash时没有显式关闭全局中断,但某些底层操作或库函数可能在执行Flash操作时隐式地关闭了全局中断。这可能是由于HAL库或其他库函数的实现细节。

使用特权

评论回复
8
淡漠安然| | 2024-6-20 18:00 | 只看该作者
检查您的时钟配置,确保在Flash操作期间,系统时钟没有被意外修改或关闭。

使用特权

评论回复
9
三生万物| | 2024-6-20 22:00 | 只看该作者
检查电源管理设置,确保在Flash操作期间,没有进入低功耗模式或电源管理策略没有影响系统运行。

使用特权

评论回复
10
江河千里| | 2024-6-21 02:00 | 只看该作者
如果使用了DMA来处理Flash操作,检查DMA配置和优先级设置,确保它们不会干扰其他中断或任务。

使用特权

评论回复
11
别乱了阵脚| | 2024-6-21 10:00 | 只看该作者
检查您的软件配置,包括中断优先级、任务调度等,确保它们不会在Flash操作期间导致系统暂停。

使用特权

评论回复
12
冰春彩落下| | 2024-6-21 12:00 | 只看该作者
使用调试工具(如ST-Link或J-Link)来监控系统状态,查看在Flash操作期间哪些中断或任务被挂起。

使用特权

评论回复
13
暖了夏天蓝了海| | 2024-6-21 16:00 | 只看该作者
尝试优化Flash操作的代码,例如使用更小的Sector进行擦除,或者在不影响系统性能的情况下,将Flash操作安排在系统空闲时段。

使用特权

评论回复
14
小小蚂蚁举千斤| | 2024-6-23 16:48 | 只看该作者
建议使用稳定的硬件进行设计

使用特权

评论回复
15
AdaMaYun| | 2024-6-24 23:19 | 只看该作者
STM32H743的Flash时,确实可以利用其双Bank特性进行同时操作

使用特权

评论回复
16
LOVEEVER| | 2024-6-25 19:29 | 只看该作者
743的双bank flash是可以同时操作的

使用特权

评论回复
17
l63t89| | 2024-6-30 23:07 | 只看该作者
即使你没有手动关闭全局中断,但在STM32中,不同的中断有不同的优先级。如果你的程序在擦除Flash时发生了中断,且这些中断的优先级高于你的应用程序的其他部分,可能会导致类似的暂停现象。

使用特权

评论回复
18
l63t89| | 2024-6-30 23:07 | 只看该作者
STM32的Flash访问有时序限制,特别是在执行擦除和写入操作时。如果这些操作没有按照时序进行,可能会导致CPU在等待Flash操作完成时暂停。尤其是在擦除大块数据时,这种影响可能更加显著。

使用特权

评论回复
19
雨果喝水| | 2024-8-29 12:42 | 只看该作者
如果系统中有高优先级的中断(如定时器中断)在进行 Flash 操作时,优先级不当可能会导致中断被阻塞或暂停。

使用特权

评论回复
20
雨果喝水| | 2024-8-29 12:42 | 只看该作者
STM32H743的双Bank Flash设计允许同时操作两个Flash Bank,这样可以在一个Bank执行程序时,另一个Bank进行擦除或编程,理论上应该可以提高操作效率。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1191

主题

5214

帖子

12

粉丝