因项目需要,基于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中的相应部分代码写入到该扇区。
|
不是很懂,是否有更详细的流程说明,感谢楼主