GalaxyStroll 发表于 2025-6-29 10:04

APM32E103的Flash编程步骤疑问

极海工业级MCU,基于Cortex-M3内核的APM32E103系列MCU性价比相当之高。基于55nm制程的优势还是非常明显。在学习APM32E103的时候看到SDK在IAP的例程,擦写和编程Flash还是挺方便的,我这里还是有些疑问?
我看公司之前的IAP代码,第一步是要将程序运行到SRAM,然后再进行升级操作,如擦除Flash,编程flash。
这是为什么啊?

HeartbeatEcho 发表于 2025-6-29 16:07

我们也是把代码运行SRAM中,再擦除Flash。
感觉有点浪费SRAM空间。我们将其独立出来了,正常应用跑起来的时候这块RAM空间也不使用。

FrostShimmer 发表于 2025-6-29 16:53

无所谓吧!
只要不在擦除的时候读取正在操作的flash页应该就没有事情吧!

GalaxyStroll 发表于 2025-7-21 18:25

FrostShimmer 发表于 2025-6-29 16:53
无所谓吧!
只要不在擦除的时候读取正在操作的flash页应该就没有事情吧!

明白了。
谢谢大佬的回复。

FrostShimmer 发表于 2025-7-23 10:52

客气了。
我们的项目这么设计一直没有出现过问题

星空魔法师 发表于 2025-7-24 16:32

将程序运行到SRAM的原因是为了保证在Flash更新过程中,当前运行的程序不会受到影响。这样可以避免在更新过程中发生程序中断或崩溃的情况。

GalaxyStroll 发表于 2025-8-6 19:42

星空魔法师 发表于 2025-7-24 16:32
将程序运行到SRAM的原因是为了保证在Flash更新过程中,当前运行的程序不会受到影响。这样可以避免在更新过 ...

明白了。
谢谢大佬指点

我是一颗胖蘑菇 发表于 2025-8-8 09:24

将程序运行到SRAM的原因是,MCU在执行Flash编程操作时,不能同时运行Flash中的代码。因此,将代码临时运行在SRAM中,可以保证在Flash擦写和编程过程中,MCU能够正常工作。

星云避风港 发表于 2025-10-5 09:37

Flash在擦除与写入过程,不能读取。
如果读取,直接进入Hardfault了

幻想收藏家 发表于 2025-10-21 14:06

在进行Flash擦写和编程时,如果程序还在运行,可能会导致数据不一致或程序崩溃

水之呢喃 发表于 2025-10-21 19:48

在擦写与写入时,不能读取flash操作。
是连操作都不可以的
页: [1]
查看完整版本: APM32E103的Flash编程步骤疑问