最近一个项目使用GD32F450VI+ESP8266需要做远程升级,基本参考正点原子IAP的那一章节,但是在GD32F450上却遇到了问题,无法跳转,然后使用正点原子的开发板stm32f429,以及stm32f103c8和gd32f103c8运行同样流程的程序,却又没有问题,于是咨询了一下GD的FAE后,才知道问题出在GD的FLASH的特殊性上。本文中就不对IAP的一般流程做介绍,只对GD32F4相较于stm32的特殊之处做出介绍。

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

在我的APP程序中,一直使用的200M频率,在自己的bootoloader程序中,使用主频最高可以为140M,程序中频率配置是使用stm32cube来配置的,实测72M、108M、120M都能够正常跳转。其他的都采用cube默认生成的配置就好。

我的FLASH分配如下图:

红圈中为全速运行,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运行区域。

至于怎么检查升级后的APP程序能否正常运行,我是在APP运行之后在flash后面某个固定地址写入一个特殊数值,bootloader程序每次去读取它,如果连续几次没有读取到正确的数值,则把扇区8、9中的程序恢复到扇区4、5中。目前经过我模拟,这种方式可行的。

本人第一次做IAP远程升级,还不知道这种方式实际使用中有没有考虑不周的地方,如果有什么错误欢迎指出。如果需要交流的,欢迎到GD32交流群205696642中来交流。

分享我的GD32F450的IAP过程的更多相关文章

  1. 不作伪分享者决定完整分享我自学Python3的全部过程细节

    不作伪分享者决定完整分享我自学Python3的全部过程细节   我不要作伪分享者 十六年前我第一次见到了电脑,并深深地爱上了它: 十二年前我第一次连上了网络,并紧紧地被它爱上. 十年前的网络是田园美景 ...

  2. unity 嵌入 百度分享 与 游戏内购物 iap

    原地址:http://blog.csdn.net/u012085988/article/details/18268869 最近老板让在unity项目里实现分享与内购功能,还要ios和android两个 ...

  3. 分享最新申请IDP账号的过程,包含duns申请的分享(2013年6月)

    5月份接到公司要申请开发者账号的任务,就一直在各个论坛找申请的流程,但都是一些09年10年的比较旧的流程,现在都已经不适用了,好不容易找到2012年分享的流程吧,才发现申请过程中少了DUNS编码的步骤 ...

  4. UI设计教程分享:关于海报的合成过程

    一张好的产品创意合成海报,能瞬间提升商品价值感,同时场景和相关元素的融入,让消费者瞬间明白商品属性及内涵.同时为商品营造的使用场景拥有更强的代入感,从而刺激转化.好的创意合成海报能为消费者带来视觉冲击 ...

  5. CMDB经验分享之 – 剖析CMDB的设计过程

    作为IT管理的核心,CMDB逐渐成为系统管理项目实施的热点.在很多的案例中,由于忽视了CMDB的因素,ITIL的深入应用受到了极大的挑战.同时,由于CMDB是IT管理信息的集中,CMDB也是一个重要的 ...

  6. 分享一下个人学PS的过程

    得知Photoshop这款软件是在上大学的时候,2010年.学校学生会的科技部纳新,要求新人会PPT.word.Excel和Photoshop.当时有一个Photoshop大神,成为了学生会科技部的主 ...

  7. 【干货】Kaggle 数据挖掘比赛经验分享(mark 专业的数据建模过程)

    简介 Kaggle 于 2010 年创立,专注数据科学,机器学习竞赛的举办,是全球最大的数据科学社区和数据竞赛平台.笔者从 2013 年开始,陆续参加了多场 Kaggle上面举办的比赛,相继获得了 C ...

  8. 【腾讯Bugly经验分享】程序员的成长离不开哪些软技能?

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57ce8068d4d44a246f72baf2 Dev Club 是一个交流移动 ...

  9. 分享几个.NET WinForm开源组件,纪念逐渐远去的WinForm。。。

    前面3个月的时间内,这些.NET开源项目你知道吗?系列文章已经发表了3篇,共计45个平时接触比较少,曾经默默无闻的.NET开源项目,展示给大家,当然不是每个人都能用得上,但也的确是有些人用了,反响还不 ...

随机推荐

  1. BZOJ 1878:[SDOI2009]HH的项链(莫队算法)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1878 题意:…… 思路:比上题还简单很多.数字很小,开一个数组哈希记录出现次数(记得数组要开1e6) ...

  2. 跟我学SpringCloud | 第十一篇:使用Spring Cloud Sleuth和Zipkin进行分布式链路跟踪

    SpringCloud系列教程 | 第十一篇:使用Spring Cloud Sleuth和Zipkin进行分布式链路跟踪 Springboot: 2.1.6.RELEASE SpringCloud: ...

  3. 字符串匹配问题(暴力,kmp)

    对于字符串的匹配问题,现在自己能够掌握的就只有两种方法, 第一种就是我们常用的暴力匹配法,那什么是暴力匹配法呢? 假设我们现在有一个文本串和一个模式串,我们现在要找出模式串在文本串的哪个位置. 文本串 ...

  4. c++ 逆序对

    c++ 求逆序对 例如数组(3,1,4,5,2)的逆序对有(3,1)(3,2)(4,2)(5,2)共4个 逆序对就是左边的元素比右边的大,那么左边的元素和右边的元素就能产生逆序对 代码跟归并排序差不多 ...

  5. Effective Java第三版(一) ——用静态工厂代替构造器

    此文做为<Effective Java>系列的第一篇,所以有必要大概说下此书的特点,当然很多人可能都看过,毕竟是有着Java四大名著之一的大名在外,不过总会有萌新不了解,例如我!<E ...

  6. [国家集训队2012]tree(陈立杰) 题解(二分+最小生成树)

    tree 时间限制: 3 Sec  内存限制: 512 MB 题目描述 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有need条白色边的生成树. 题目保证有解. 输入 第一行V, ...

  7. 第一章 Servlet

    JavaEEe技术包括Servlet/Jsp.Java Message Service(JMS).Enterprise JavaBeans(EJB).JavaServer Faces(JSF),以及J ...

  8. SSAS Tabular 数据表关系与join的映射

    才想起来总结这两天发现的一个有趣的现象: 在SSAS Tabular 模型中建立了关系之后,在excel中分析发现: 产品库龄作为量值:Aging Stock:=sum([DISTRIBUTOR_ST ...

  9. 深入了解数据校验:Bean Validation 2.0(JSR380)

    每篇一句 > 吾皇一日不退役,尔等都是臣子 对Spring感兴趣可扫码加入wx群:`Java高工.架构师3群`(文末有二维码) 前言 前几篇文章在讲Spring的数据绑定的时候,多次提到过数据校 ...

  10. Android问题解决

    1.clean之后R文件消失 clean之后R文件消失是因为布局的XML文件存在错误,无法编译你的资源文件,所以无法自动生成R文件,在Problem.LogCat等界面查看错误的原因,把错误改正即可: ...