GD32F3开发进阶教程 课件 ch17IAP在线升级应用实验_第1页
GD32F3开发进阶教程 课件 ch17IAP在线升级应用实验_第2页
GD32F3开发进阶教程 课件 ch17IAP在线升级应用实验_第3页
GD32F3开发进阶教程 课件 ch17IAP在线升级应用实验_第4页
GD32F3开发进阶教程 课件 ch17IAP在线升级应用实验_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

IAP在线升级应用实验“第十七章《GD32F3开发进阶教程——基于GD32F303ZET6》01实验内容本章实验的主要内容是学习通过IAP实现微控制器程序的在线升级,首先了解ICP和IAP两种不同的微控制器编程方式的区别,以及二者对应的程序执行流程,进而掌握IAP的原理,最后,根据本章实验中介绍的用户程序生成方法,基于GD32F3苹果派开发板设计一个IAP在线升级应用实验,先将Bootloader程序烧录进微控制器中,然后将用户程序存放于SD卡的固定路径下,最后通过Bootloader将SD卡中的用户程序下载到微控制器的Flash中,以实现用户程序对应的功能。实验内容02实验原理微控制器编程方式根据代码下载方法不同可分为两种,分别是在线编程(ICP,InCircuitProgramming)和在程序中编程(IAP,InApplicationProgramming)ICP编程,即通过JTAG或SWD等接口下程序到微控制器中,ICP编程首先将Boot0拉高,Boot1拉低,然后触发芯片复位。芯片复位后跳转到系统存储器的位置,即0xIFFFBO00(芯片硬件自带的Bootloader)行引导装程序,将TAG或SWD等接口传输的程序下载到Flash中。微控制器编程方式IAP编程需要两份程序代码,通常将第一份程序代码称为Bootloader程序,第二份程序代码称为用户程序,Bootloader程序不执行正常的功能,而是通过某种接口(如USB、UART或SDIO接口)获取用户程序,用户程序才是真正的功能代码,两份代码都存储于主闪存存储器中。Bootloader程序一般存储于主闪存存储器的最低地址区,即从0x08000000开始,而用户程序存储地址相对于闪存的最低地址区存在一个相对偏移量X注意,如果Flash容量足够,可以实现设计多个用户程序。微控制器编程方式微控制器编程方式IAP编程中闪存的空间分配情况如图17-1所示。在中断向量表中最先存放的为栈顶地址,通常占4字节。程序执行流程1.ICP编程如图17-2所示,由于闪存物理地址的首地址为0x08000000,因此通过ICP下载的程序从0x08000000开始。ICP程序的运行流程为:①根据复位中断向量跳转至复位中断服务程序并执行,复位微控制;②复位结束后,先调用SystemInit函数进行系统初始化,包括RCU配置等,然后执行main函数,main函数是编译系统提供的一个函数,负责完成库函数的初始化和初始化应用程序执行环境,完成后自动跳转到main函数开始执行;③当出现中断请求时,程序将在中断向量表中查找对应的中断向量:④根据查找到的中断向量,跳转到对应的中断服务程序并执行;⑤当中断服务程序运行结束后,跳转到main函数继续运行。程序执行流程程序执行流程2.IAP编程如图17-3所示,通过IAP编程方式下载程序时,闪存中存放着Botloader程序及用户程序。Bootloader程序的运行流程起初与ICP程序相同:①根据复位中断向量跳转至复位中断服程序并执行,复位微控制器;②复位结束后调用SystemInit和main函数,然后跳转到main函数执行。不同之处在于,Bootloader程序在main函数中会执行相应的语句,跳转到用户程序中继续执行:③检查是否需要更新用户程序,如果需要更新则首先执行用户程序更新操作,不需要更新则进行下一步;④跳转至用户程序的复位中断服务程序并执行。程序执行流程⑤复位结束后调用SystemInit和main函数,然后跳转到用户程序的main函数中执行;⑥~⑦当发生中断时,程序将在中断向量表中查找对应的中断向量,再根据相对偏移量X,跳转至用户程序对应的中断服务程序并执行:⑧当中断程序运行结束后,跳转至用户程序的main函数继续运行。程序执行流程用户程序同样是一个完整的工程,与ICP编程方式所需要的工程相同,但用户程序需要经过特定的配置,配置步骤如下。用户程序生成用户程序生成步骤1.设置用户程序的起始地址和存储空间用户程序生成步骤2.设置中断向量表偏移量用户程序生成步骤3.设置bin文件生成03实验代码解析0102IAP.h文件:在IAPh文件的“宏定义”区,定义了APP起始地址APPBEGINADDRBi文件信息储存地址APPVERSIONBEGINADDRbi文件最大长度MAXBINNAMELEN及数据缓冲区的长度FILEBUFSIZE。在“API函数声明”区,声明了3个API函数。IAP.c文件:在“包含头文件”区,包含了ff.h和SerialString.h等头文件。在“内部函数声明”区,声明了3个内部函数。IAP文件对IAP文件对IAP文件对IAP文件对在CheckAppVersion函数实现区后为SystemReset函数的实现代码,如程序清单17-9所示。Main.c文件在main函数中调用CheckAppVersion和GotoApp函数,如程序清单17-10所示,这样就实现了从Bootloader程序到App程序的升级。Main.c文件实验结果下载Bootloader程序并进行复位,若开发板未插入SD卡,则串口助手显示信

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论