打印
[AT32F403/403A]

编程期间进行读闪存的操作,将导致CPU被暂停????

[复制链接]
479|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wllhhu|  楼主 | 2022-4-18 11:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
雅特立的芯片以及STM32的,在flash擦写的时候都有明确提醒:  编程期间进行读闪存的操作,将导致 CPU 会被暂停直到编程完成才处理读闪存操作..

这种怎么理解, 程序IAP升级的时候不都要运行的时候接受数据包写到内部flash, 等待升级程序接收完成后升级嘛?

使用特权

评论回复
沙发
chenwenf75| | 2022-4-21 16:46 | 只看该作者
我也很困惑。但我测试at32f403A,擦除扇区40ms期间是可以中断响应的,可以读闪存呀。一下是我在网上搜的:
https://www.sekorm.com/faq/122694.html

AT32F403A在操作零等待Flash区域有哪些需要注意的点?

KenPeng Lv5  (0)
FLASH擦除操作,如果满足以下两个条件会导致程序跑飞出错:
1. 擦除的是零等待区
2. 擦除过程中CPU有以下顺序的动作,零等待区取指令->非零等待区取指令。
例如:擦除一个零等待区扇区,擦除开始后,程序会去检查FLASH忙的标志(检查标志这句代码位于零等待区),然后中断正常响应,如果中断函数有非零等待区的代码,此时就会出错
解法1:调用擦除操作前后,操作中断使能的开关,如下:
_disable_irq();
Erase();
_enable_irq();
解法2:保证芯片在擦除期间所有执行的函数代码都位于零等待区

使用特权

评论回复
板凳
muyichuan2012| | 2022-4-21 18:05 | 只看该作者
本帖最后由 muyichuan2012 于 2022-4-21 18:06 编辑

其实ST103是一样的,因为只有一片flash,不可能既要运行程序,又要进行flash program。
肯定只能做一件事啊。
除非你使用ST 最新具备的 dual bank的型号。至于IAP怎么操作,你可以参考bsp  utility文件夹下IAP 案例。

使用特权

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

本版积分规则

3

主题

6

帖子

0

粉丝