GD32F4XX IAP升级

这篇具有很好参考价值的文章主要介绍了GD32F4XX IAP升级。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这里使用的是GD32F405RG,flash 为1M(0x08000000 - 0x080FFFFF),具体参考官方手册

gd32 iap,单片机,stm32

因为每个芯片的falsh大小不一样,地址划分根据实际flash大小和自己的设计去分配就好, 自己的址划分如下 :

BOOT_ADDRESS:0x08000000 - 0x08003FFF     16k(扇区0)

APP_ADDRESS:0x08004000 - 0x0807FFFF     512k-16k=496k(扇区1-7)

Buffer_ADDRESS:0x08080000 - 0x080FEFFF    512k-4k=508k(扇区8-11)

Flags_ADDRESS :0x80FF000 -0x80FFFFF        4k(扇区11的最后4k)

gd32 iap,单片机,stm32

IAP的升级思路基本是一样的,如图所示(懒得画图了,此图盗用(doge))

gd32 iap,单片机,stm32

 简单做了个usart接收的IAP升级方式,主要是USART+DMA+空闲中断接收,上位机发送上机命令,板子接收到升级命令后开始进行升级,上位机把bin文件按一帧1024个字节的方式进行传输,板子每接收到一帧就把数据写入到缓存区,上位机传输完发后发送一个结束命令。板子接收完毕则写入升级标志,然后跳转到boot执行复制,把Buffer的代码复制到APP地址,最后把PC指针指向APP。

以上是基本的思路,下面是代码过程

首先得写好写入和读出flash的代码,具体可参考官方的例程,兆易创新 (gd32mcu.com)

gd32 iap,单片机,stm32

gd32 iap,单片机,stm32

 需要注意的是想要写入flash,必须先擦除,擦除flash按扇区擦除,官方的写入例程里包含了每次写入前的擦除对应扇区的操作,如果直接使用会导致把同个扇区之前的代码给擦除掉。

gd32 iap,单片机,stm32

 对此我们可以稍作修改,在写入前统一擦除buffer的扇区,然后可以一帧一帧地写入flash了

gd32 iap,单片机,stm32

升级的接收模块:

gd32 iap,单片机,stm32

 当接收完成后,写入升级标志,然后跳转到boot进行复制

BootLoader:

gd32 iap,单片机,stm32

 vJumpToApplication():gd32 iap,单片机,stm32

 USART 的配置就不附加,参考官方例程即可。

还需要注意的细节:

1、keil烧录时需要分配好烧录的地址,以免被覆盖掉

gd32 iap,单片机,stm32

 2、传输的文件是bin格式,flash上的类型是一个字,所以写入时记得以字的格式去写入

gd32 iap,单片机,stm32

有任何问题可以留言交流,谢谢!文章来源地址https://www.toymoban.com/news/detail-532033.html

到了这里,关于GD32F4XX IAP升级的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32单片机实现固件在线升级(IAP)

    单片机的固件升级方式有很多种, 1、ICP:In Circuit Programing,简单说就是在单片机开发时使用烧录器升级程序,比如使用J-Link烧录单片机程序。 2、ISP:In System Programing,在单片机内部实现了基于通信接口(如串口、I2C、SPI等等)的FLASH引导程序,配合厂家提供的烧录软件工具

    2024年02月13日
    浏览(56)
  • GD32单片机远程升级下载,手机在线升级下载程序,GD32在线固件下载升级,手机下载程序固件方法

            GD32、STM32单片机,是我们最常见的一种MCU。通常我们在使用STM32单片机都会遇到程序在线升级下载的问题。         GD32/STM32单片机的在线下载通常需要以下几种方式完成:       1、使用ST/GD提供的串口下载工具,本地完成固件的升级下载。        2、自行完成系统

    2024年02月02日
    浏览(59)
  • [GD32F4]基于GD32固件库移植cherryusb[STM32F4]

    [GD32F4]基于GD32固件库移植cherryusb[STM32F4] 使用开发板是淘宝买的不知名开发板,没什么好说的,具体的型号是GD32F450VET6。 使用的cherryusb版本是0.9.0版本。 使用的GD32官方固件库版本是:GD32F4xx_Firmware_Library_V3.0.4 cherryusb最牛的地方在于抛弃掉所有的依赖,只需要知道芯片的usb中断

    2024年02月06日
    浏览(52)
  • 基于STM32单片机BOOTLOADER通过串口升级程序IAP——APP方案

                            此方法前提是你得有一个EEPROM         我用的单片机是STM32F103ZET6 , 此单片机FLASH容量为512KB; 在此单片机里面FLASH的起始地址是0X8000000,BOOT作为引导加载程序一般都是从这个地址开始,单片机一上点默认会从这个地址开始运行,所以将自己

    2024年02月04日
    浏览(63)
  • GD32F4(9):GD32f4出现上电不工作,必须按复位程序才能跑起来

    绘制一个gd32450的pcb板子,结果烧录程序后发生下面事情: 上电程序不能正常启动或者偶尔可以正常启动一次,很随机。 当上电后程序不启动的时候,我再按一下mcu的reset按键,程序就能正常启动了。 当我debug调试的时候,回回都能正常启动,根本定位不到问题 首先在板子里

    2023年04月08日
    浏览(71)
  • GD32F4移植STM32F4

    近期在项目中采用了GD32F407VET6替换原项目中的STM32F407VET6,网传GD的兼容性很好,之前也用F1系统的替换了一下,按照CSND各位大佬的经验一步步改进了代码,测试直接通过,现在也一直在项目中实际应用了,一直没有出问题。 所以这SMT时,嘉立创没有STM的货果断换成了GD,可换时

    2024年02月16日
    浏览(83)
  • STM32F4 IAP 跳转 APP问题

      IAP 的作用,网上其他资料已经有很多介绍了,这里放一个链接,不进行深入的介绍。本文的关注重点是Bootloader在跳转APP程序中出现的问题。 IAP的实现原理讲解以及中断向量表的偏移   本人主要做应用层的开发,所有Bootloader和APP程序使用的是STM32CubeMX工具生成代码后,

    2024年02月11日
    浏览(48)
  • STM32-IAP基本原理及应用 | ICP、IAP程序下载流程 | 程序执行流程 | 配置IAP到STM32F4xxx

    ①在线编程(ICP,In-Circuit Programming) :通过JTAG/SWD协议或者系统加载程序(Bootloader, 串口 )下载用户应用程序到微控制器中。 ②在程序中编程(IAP,In Application Programming) :通过任何一种通信接口(如IO端口,USB,CAN,UART,I2C,SPI等)下载程序或者应用数据到存储器中( 需要在此前通过在线编

    2024年02月07日
    浏览(45)
  • 【极海APM32F4xx Tiny】学习笔记07-串口使用框架

    mcu 串口外设简介 该芯片内置多达 6 个通用同步/异步收发器,USART1/6 接口通信速率可达 10.5Mbit/s,其它USART/UART 的通信速率可达 5.25Mbit/s,所有 USART/UART 可配置波特率、奇偶校验位、停止位、数据位长度,都可以支持 DMA 函数库 源文件

    2024年02月16日
    浏览(41)
  • 单片机GD32F303RCT6 (Macos环境)开发 (二十)—— 光感芯片veml7700的使用

    1、veml有7个寄存器,每个十六位,见图。 00是config寄存器, 01 02 是中断设置的阈值 03是节能模式的设置 04 是得到的光的亮度值 05是得到的data of whole WHITE 06是中断设置值。 2、我们只测试得到光的亮度值,所以veml寄存器设置如下: 设置gain,integration time ,power save mode ,interrup

    2024年02月04日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包