打印

【转载】分享我的GD32F450的IAP过程

[复制链接]
3123|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jerow|  楼主 | 2019-3-30 16:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
最近一个项目使用GD32F450VI+ESP8266需要做远程升级,基本参考正点原子IAP的那一章节,但是在GD32F450上却遇到了问题,无法跳转,然后使用正点原子的开发板stm32f429,以及stm32f103c8和gd32f103c8运行同样流程的程序,却又没有问题,于是咨询了一下GD的FAE后,才知道问题出在GD的FLASH的特殊性上。本文中就不对IAP的一般流程做介绍,只对GD32F4相较于stm32的特殊之处做出介绍。

使用特权

评论回复
沙发
jerow|  楼主 | 2019-3-30 16:42 | 只看该作者
在GD的F4的用户册中提到,“在闪存的前512K字节空间内,CPU执行指令零等待(在闪存大小等于256K或512K时,闪存全片执行指令零等待);在此范围外,CPU读取指令存在较长延时;”,GD的FAE告诉我,我使用的这款GD32F450VI只有前256K能够实现零等待的,后面的速度都比较慢,所以需要在bootloader程序和APP程序的时钟初始化中添加 RCC->CFGR |= RCC_CFGR_HPPE_DIV2; 这一句,并且APP程序需要在前256K之内,但是我用这个方式也没有成功,不能从bootloader跳转到app程序。后来我就自己重新试了一种方式,下面说明。

使用特权

评论回复
板凳
jerow|  楼主 | 2019-3-30 16:42 | 只看该作者
在我的APP程序中,一直使用的200M频率,在自己的bootoloader程序中,使用主频最高可以为140M,程序中频率配置是使用stm32cube来配置的,实测72M、108M、120M都能够正常跳转。其他的都采用cube默认生成的配置就好。

使用特权

评论回复
地板
jerow|  楼主 | 2019-3-30 16:42 | 只看该作者
我的FLASH分配如下图:

使用特权

评论回复
5
jerow|  楼主 | 2019-3-30 16:43 | 只看该作者
红圈中为全速运行,bootloader程序一般占用很小,大部分情况下16KB都能放下,我原来的程序是88K左右,考虑到以后升级的需要,虽然目前估计不会超过128K,但还是把扇区4和5都作为APP运行区,总共192K,应该能够满足大部分情况。APP为什么没有从扇区1开始呢?因为从程序下载区copy到APP运行区,如果从扇区1开始,跨越的扇区太多,程序结构上复杂一些,我怕扇区越多越容易出错,所以就固定使用扇区4和5,参考我**的朋友可以根据自己的需求更改。在APP运行的时候,下载的bin文件将存放到扇区6、7,bootloader程序检查之后把bin文件更新到APP运行的扇区4、5。 为了保证安全,我还把扇区8、9作为程序备份区,在出厂烧写的时候,就把扇区4、5中的程序在扇区8、9也备份一下,万一以后升级失败,还能把扇区8、9中的程序恢复到APP运行区域。

使用特权

评论回复
6
jerow|  楼主 | 2019-3-30 16:43 | 只看该作者
至于怎么检查升级后的APP程序能否正常运行,我是在APP运行之后在flash后面某个固定地址写入一个特殊数值,bootloader程序每次去读取它,如果连续几次没有读取到正确的数值,则把扇区8、9中的程序恢复到扇区4、5中。目前经过我模拟,这种方式可行的。

使用特权

评论回复
7
tomyoct| | 2019-3-31 11:17 | 只看该作者
支持下,谢谢分享!

使用特权

评论回复
8
xdzys2008| | 2019-4-9 14:17 | 只看该作者
GD450Z(FX07系列)已经全面支持国产100M以太网PHY SR8201F啦~  影响政府号召,有国产化需求的朋友们有福啦~

使用特权

评论回复
9
遇惊魂| | 2020-4-1 09:03 | 只看该作者
楼主可以简单分享一下esp8266升级的原理吗

使用特权

评论回复
10
hua_ren| | 2020-4-3 15:31 | 只看该作者
在线升级是趋势,是产品必须做的。正在研究中。已经实现,但还不很满意。

使用特权

评论回复
11
cfmcfm| | 2020-4-6 09:56 | 只看该作者
本帖最后由 cfmcfm 于 2020-4-8 10:27 编辑

您好,感谢楼主分享。谢谢

使用特权

评论回复
12
cfmcfm| | 2020-4-6 11:28 | 只看该作者
本帖最后由 cfmcfm 于 2020-4-8 10:27 编辑
hua_ren 发表于 2020-4-3 15:31
在线升级是趋势,是产品必须做的。正在研究中。已经实现,但还不很满意。 ...


使用特权

评论回复
13
ywd_Linux| | 2021-6-15 18:34 | 只看该作者
楼主能不能分享一下代码,求教啊,哪怕几个文件都行,几个接口函数都行啊

使用特权

评论回复
14
Fenley| | 2021-6-15 19:48 | 只看该作者
求IAP

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

72

主题

520

帖子

3

粉丝