使用Bootload升级相关的开发笔记

项目使用两款不同的芯片完成Boot到APP之间的升级,此处仅作为日常开发笔记。(作者忘性大)

1.GD32F403相关的boot升级 

要实现boot升级主要分为IAP和APP两部分程序。

IAP实际就是Boot相关的配置。

①首先创建一个工程,将GD32F403原先的flash改为0x4000大小(16K)。此时已经将IAP的大小配置为16K,存储位置在0X8000000-0X8004000。

②添加从Boot跳到APP的指令

JumpTOApp函数里的APP_ADDRESS为APP的开始地址,CONFIG_ADDRESS为预留的配置地址,可以存放自己程序需要的配置信息。

关闭全局中断是为了防止在跳转地址时,中断的运行导致寻址错误。

不管是GD32还是AC781都可以直接调用这个函数。

③完成芯片的读写flash操作

 2.AC781相关的boot升级

fmc_unlock();

fmc_page_erase();

fmc_lock();

都是GD32固件库里的函数

flash_program()函数中嵌套的fmc_word_program也是GD32固件库的函数。此函数实现GD32多字节写入flash的操作。

同理,写入完成后先测试是否写入正确。

④在主循环前添加升级标志位

此时已经写完boot到APP的升级demo。while里的内容主要是通讯APP相关传输的。

⑤更新完IAP的程序后,完成APP的相关配置

默认GD32为512K的内存,减去IAP占用的16K和配置区的4K后剩余492K(0X7B000)内存

添加使能全局中断和重映射向量表,APP_ADDRESS地址为0X8005000

其余则是在主程序里添加系统中断重启,如果IAP的条件符合则跳转到APP,否则始终在IAP

其余参考程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值