GD32F4xx IAP 升级思路及调试遇到的问题记录

1、IAP

  我们生活中使用的手机、智能手表等,更新软件时都是通过在设备上进行软件版本的检测和升级触发就可以升级软件。在目前这个网络时代产品的这项功能是必不可少的。但用单片机开发的产品由于芯片资源等的限制往往缺失这部分功能。其实资源足够的MCU是可以通过IAP的方式实现上述的升级功能。

  IAP( In Application Programming) , 指用户应用程序在运行过程中向Flash中烧写程序的功能。主要目的是在产品正式发布之后可以方便的通过预留的通信端口对产品进行固件程序升级。

2、GD32F4xx MCU IAP思路

  IAP的实现主要和内核相关,本文中提到的 GD32F4xx系列器件是基于ARM® Cortex™-M4处理器的32位通用微控制器。 GD32D 内部Flash起始地址为 0x08000000,固件程序一般就此地址开始写入。Cortex™-M4内核的MCU,其内部通过一张中断向量表来响应中断,程序启动后,首先从中断向量表中取出复位中断向量,执行复位中断程序完成启动进入Main() 函数运行。这张中断向量表的起始地址为0x08000004。当中断来临时,GD32 MCU的内部硬件机制会自动将PC指针定位到中断向量表位置,再根据中断源取出对应的中断向量执行中断服务程序,完成后再回到Main()函数中。
  根据以上描述,要实现IAP的功能需要将GD32的固件程序分为2个部分,一部分用于向Flash中烧写程序(命名为user_boot),另一部分为用户的应用程序。(命名为user_app)。GD32上电后首先执行user_boot, 将新的固件程序烧写到Flash中。烧写完成后从user_boot程序中跳转到烧写的程序(user_app)中执行,这样就实现了IAP功能。

你可能感兴趣的:(GD32,MCU,GD32,IAP,Arm,Cortex,M4)