gpt4 book ai didi

embedded - Cortex-M3 STM32F103 内核在闪存页删除期间是否会因为 FPEC 繁忙且无法从闪存中获取更多指令而停止?

转载 作者:行者123 更新时间:2023-12-03 09:36:37 25 4
gpt4 key购买 nike

在 STM32F103 上,闪存页的删除需要 20 毫秒,在此期间内核停止。从 ST PM00042 Flash 编程手册中并不清楚在删除闪存页面时内核是否总是会停止,或者它是否只是因为指令流本身在闪存中(在我的项目中)而停止,而 FPEC(闪存接口(interface))是忙,无法获取更多指令。

问这个问题的另一种方法是“从 RAM 运行我的闪存编程代码会避免闪存页面删除停滞吗?”。

谢谢,

最佳答案

我相信在闪存编程期间,任何尝试访问闪存都会使 CPU 停止。

因此,您要做的是确保关键代码(可能是中断处理程序、看门狗启动器等)可以在程序操作期间用完 RAM。我最后一次使用 STM32(可能是大约 2 年前)正是我所做的。

因此,为了清楚起见,回答您帖子末尾的问题:

Another way to ask this question is "would running my flash programming code from RAM avoid the flash page erasing stall?".



我相信答案是“不”。闪存编程驱动程序位于何处并不重要,重要的是您的代码做了什么 当删除/编程操作正在进行时 .如果 CPU 在操作期间尝试访问闪存,甚至是读取程序指令或读取常量表,我相信它会停止。

我知道这就是 NXP 闪存在其 ARM uC 上的工作方式,但我也想引用 STM32 的章节和诗句。由于某种原因,flash 编程手册现在似乎不可用,但我在类似的文档中找到了以下语言(我相信是 PM0068):

An ongoing Flash memory operation will not block the CPU as long as the CPU does not access the Flash memory.





If a read/write operation [to flash] is initiated during programming, (BSY bit set), the CPU stalls until the ongoing main Flash memory programming is over.

关于embedded - Cortex-M3 STM32F103 内核在闪存页删除期间是否会因为 FPEC 繁忙且无法从闪存中获取更多指令而停止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3445598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com