CH32v307 中的代码是否从 RAM 运行

CH32v307 中的代码是否从 RAM 运行?程序可以在FLASH中删除自己并上传新代码吗?我想实现 IAP 但没有单独的区域(没有第二个应用程序)。我希望应用程序自行更新。

可能吗 ?

在 STM32 中,我将升级过程复制到 RAM(设置适当的函数属性)并从 RAM 启动。


是否有如何从 RAM 运行代码的示例?


谢谢你。


您好,

1、CH32V307可以配置从RAM启动运行,从RAM启动需要注意以下几点:

(1)需要配置BOOT为RAM启动(BOOT0接VCC,BOOT1接VCC)

(2)需要修改ld文件,使得编译器编译的代码位置为RAM,如下图1,修改了FLASH的起始地址

(3)需要修改启动文件,如下图2圈出位置

(4)此外,程序若要下载到RAM运行,需要进调试模式下载,勾选debug in RAM,且添加配置操作,如下图3

-c "wlink_set_address 0x08000000"

2、关于IAP升级,建议你直接将FLASH分成两块区域,一块给IAP使用,一块给APP使用,通过IAP程序接收APP程序固件进行升级。

附件为从RAM启动运行的例程,你可以参考一下。后续若有问题,可通过邮箱和我沟通(lzs@wch.cn)。

icon_rar.gifCH32V307 从RAM启动.zip

image.png

图1

image.png

图2

image.png

图3



只有登录才能回复,可以选择微信账号登录