[研电赛技术支持] 基于GD32F4xx+网口的一种IAP方法

[复制链接]
2046|8
 楼主| Sean_JianLong 发表于 2021-12-14 20:51 | 显示全部楼层 |阅读模式
因项目需要,基于GD32F4xx的核心板需要支持通过网口的在线升级嵌入软件
1)通过网口将嵌入软件下载到外挂FLASH;
2)然后将外挂FLASH中的软件写入到GD32F4xx的内部FLASH中。

其中1)很常规,不详细描述了;实现2)必将麻烦,因为实现2)的代码已经在MCU的内部FLASH中,
需要在擦除MCU内部FLASH过程中,这部分代码必能被擦除,所以使用了#pragma default_function_attributes = @ "MY_FUNC"
将该部分代码固定到MCU内部FLASH的某个扇区中,例如:
define region FUNC_region  = mem:[from 0x080E0000 to 0x080FFFFF];
place in FUNC_region { readonly section MY_FUNC };


这样在擦除MCU内部FLASH时,避免擦除该扇区,这样就可以顺利实现2)。
考虑到实现2)的代码也可能存在升级的问题,所以在完成其它代码升级后,在检测实现2)的代码是否需要升级,
如果需要再将该扇区擦除,并将外挂FLASH中的相应部分代码写入到该扇区。

评论

不是很懂,是否有更详细的流程说明,感谢楼主  发表于 2021-12-16 13:00
 楼主| Sean_JianLong 发表于 2021-12-17 10:25 | 显示全部楼层
IAP流程

IAP流程

IAP流程
tpgf 发表于 2022-1-6 15:20 | 显示全部楼层
交互信息多啊
观海 发表于 2022-1-6 15:28 | 显示全部楼层
握手次数比较多
guanjiaer 发表于 2022-1-6 15:35 | 显示全部楼层
这个都是硬件底层自动完成的吧
heimaojingzhang 发表于 2022-1-6 15:40 | 显示全部楼层
直接寄存器配置不就可以了吗
keaibukelian 发表于 2022-1-6 15:49 | 显示全部楼层
如果不是图片就更好了
labasi 发表于 2022-1-6 15:53 | 显示全部楼层
那些需要人工介入呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

53

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部