CH32v307 中的代码是否从 RAM 运行?程序可以在FLASH中删除自己并上传新代码吗?我想实现 IAP 但没有单独的区域(没有第二个应用程序)。我希望应用程序自行更新。
可能吗 ?
在 STM32 中,我将升级过程复制到 RAM(设置适当的函数属性)并从 RAM 启动。
是否有如何从 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)。
图1
图2
图3