基于stm32单片机的IAP方法及系统.pdf

上传人:倪** 文档编号:12175039 上传时间:2021-11-29 格式:PDF 页数:12 大小:626.22KB
收藏 版权申诉 举报 下载
基于stm32单片机的IAP方法及系统.pdf_第1页
第1页 / 共12页
基于stm32单片机的IAP方法及系统.pdf_第2页
第2页 / 共12页
基于stm32单片机的IAP方法及系统.pdf_第3页
第3页 / 共12页
文档描述:

《基于stm32单片机的IAP方法及系统.pdf》由会员分享,可在线阅读,更多相关《基于stm32单片机的IAP方法及系统.pdf(12页完成版)》请在专利查询网上搜索。

1、(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 201910042144.6 (22)申请日 2019.01.17 (71)申请人 南京品畅科技发展有限公司 地址 210000 江苏省南京市建邺区汉中门 大街151号西城广场A座5楼5223室- 012B (72)发明人 吴灵焱 (74)专利代理机构 南京汇恒知识产权代理事务 所(普通合伙) 32282 代理人 王月霞 (51)Int.Cl. G06F 8/65(2018.01) G06F 8/61(2018.01) (54)发明名称 一种基于stm32单片机的IAP方法及系统。

2、 (57)摘要 本发明公开了一种基于stm32单片机的IAP 方法及系统, 该方法包括: 烧写BootLoader程序 至单片机; 烧写APP程序至单片机; 运行所述 BootLoader程序以更新APP程序, 本发明提供的 方法可以远程控制程序的升级; 无需机械性得操 作, 例如: 连接烧录器, 设置跳线帽等; 可重复性 编程; 当机器外壳封死, 无法拆机, 可以使用IAP 升级方案进行更新迭代。 权利要求书1页 说明书6页 附图4页 CN 109871223 A 2019.06.11 CN 109871223 A 1.一种基于stm32单片机的IAP方法, 其特征在于, 包括: 烧写Boo。

3、tLoader程序至单片机; 烧写APP程序至单片机; 运行所述BootLoader程序以更新APP程序。 2.根据权利要求1所述的一种基于stm32单片机的IAP方法, 其特征在于, 所述烧写 BootLoader程序至单片机, 包括: 在PC端安装KeiluVision5软件, 并根据单片机型号创建工程; 在创建的工程中按照需要编写BootLoader程序; 搭载stn32的电路板通过J-Link连接至PC端; BootLoader程序编写完后, 在KeiluVision5点击烧录, 将KeiluVision5程序烧录到 stm32的flash的初始存储区域中。 3.根据权利要求1所述的一。

4、种基于stm32单片机的IAP方法, 其特征在于, 所述烧写APP 程序至单片机, 包括: 编写APP程序, APP程序在KeiluVision5中生成Bin文件, 将Bin文件保存在主控板指定 位置中; 主控板接收升级指令, 根据定义的协议, 通过串口将Bin文件每次发送512个字节到单 片机, 单片机收到512个字节后, 进行校验, 如果无误, 则反馈接收成功指令到主控板; 主控接收到成功指令后, 则继续发送下一个512字节, 如此循环, 直到bin全部发送完 成, 最终将APP程序烧录到单片机的固件存储区域中。 4.根据权利要求1所述的一种基于stm32单片机的IAP方法, 其特征在于,。

5、 所述运行所述 BootLoader程序以更新APP程序, 包括: 单片机上电, PC指针指向BootLoader程序中的起始地址, 执行APP跳转程序, 之后对 GPIO口, 时钟和串口进行初始化; 读取Flash中的升级标志位对应的地址, 将该地址的值与预先设定的值进行比较; 如果两值相等, 则跳转到APP程序; 如果两值不等, 则进行APP程序更新。 5.根据权利要求1-4任一项所述的一种基于stm32单片机的IAP方法, 其特征在于, 所述 APP程序, 还用于: 判断是否接受IAP升级信号; 如果是, 则启动BootLoader程序。 6.一种基于stm32单片机的IAP系统, 其特。

6、征在于, 包括; BootLoader程序烧写模块, 用于烧写BootLoader程序至单片机; APP程序更新模块, 用于运行所述BootLoader程序以更新APP程序。 权利要求书 1/1 页 2 CN 109871223 A 2 一种基于stm32单片机的IAP方法及系统 技术领域 0001 本发明涉及单片机软件升级技术领域, 具体涉及一种基于stm32单片机的IAP方法 及系统。 背景技术 0002 IAP, 全称是 “In-Application Programming” , 中文释为 “在程序中编程” 。 IAP 是 一种对通过微控制器的对外通信接口 (如 USART, IIC,。

7、 CAN, USB等通讯端口) 对正在运行程 序的微控制器进行实时更新的技术。 目前市面上存在的升级方式基本上都是ICP (In- Circuit Programming) 技术即通过在线仿真器对单片机进行程序烧写, 而ISP技术则是通 过单片机内bootloader程序引导的烧写技术。 0003 无论是ICP技术还是ISP技术, 都需要有机械性的操作如连接下载线, 设置跳线帽 等, 若产品的电路板已经层层密封在外壳中, 要对其进行程序更新无疑困难重重, 若产品安 装于狭窄空间等难以触及的地方, 更是一场灾难, 但若进引入了IAP技术, 则完全可以避免 上述尴尬情况, 而且若使用远距离或无线的。

8、数据传输方案, 甚至可以实现远程编程和无线 编程, 这绝对是ICP或ISP技术无法做到的。 0004 某种微控制器支持IAP技术的首要前提是其必须是基于可重复编程闪存的微控制 器, STM32微控制器带有可编程的内置闪存, 同时STM32拥有在数量上和种类上都非常丰富 的外设通信接口, 因此在STM32上实现IAP技术是完全可行的。 发明内容 0005 为了增加电子产品的更新迭代功能, 可以通过无线编程来实现电子产品的更新功 能, 解决产品因为层层密封在外壳中或者无法距离分散而无法更新和升级的问题, 为此, 本 发明提供一种基于stm32单片机的IAP方法及系统。 0006 一种基于stm32。

9、单片机的IAP方法, 包括: 烧写BootLoader程序至单片机; 烧写APP程序至单片机; 运行所述BootLoader程序以更新APP程序。 0007 作为本发明的进一步优选, 所述烧写BootLoader程序至单片机, 包括: 在PC端安装KeiluVision5软件, 并根据单片机型号创建工程; 在创建的工程中按照需要编写BootLoader程序; 搭载stn32的电路板通过J-Link连接至PC端; BootLoader程序编写完后, 在KeiluVision5点击烧录, 将KeiluVision5程序烧录到 stm32的flash的初始存储区域中。 0008 作为本发明的进一步优。

10、选, 所述烧写APP程序至单片机, 包括: 编写APP程序, APP程序在KeiluVision5中生成Bin文件, 将Bin文件保存在主控板指定 位置中; 说明书 1/6 页 3 CN 109871223 A 3 主控板接收升级指令, 根据定义的协议, 通过串口将Bin文件每次发送512个字节到单 片机, 单片机收到512个字节后, 进行校验, 如果无误, 则反馈接收成功指令到主控板。 主控 接收到成功指令后, 则继续发送下一个512字节, 如此循环, 直到bin全部发送完成, 最终将 APP程序烧录到单片机的固件存储区域中。 0009 作为本发明的进一步优选, 所述运行所述BootLoad。

11、er程序以更新APP程序, 包括: 单片机上电, PC指针指向BootLoader程序中的起始地址, 执行APP跳转程序, 之后对 GPIO口, 时钟和串口进行初始化; 读取Flash中的升级标志位对应的地址, 将该地址的值与预先设定的值进行比较; 如果两值相等, 则跳转到APP程序; 如果两值不等, 则进行APP程序更新。 0010 作为本发明的进一步优选, 所述 APP程序, 还用于: 判断是否接受IAP升级信号; 如果是, 则启动BootLoader程序。 0011 一种基于stm32单片机的IAP系统, 包括; BootLoader程序烧写模块, 用于烧写BootLoader程序至单片。

12、机; APP程序更新模块, 用于运行所述BootLoader程序以更新APP程序。 0012 本发明的有益效果: 利用STM32单片机带有的可编程内置闪存, 同时 STM32 拥有 在数量上和种类上都非常丰富的外设通信接口; 一、 可以远程控制程序的升级; 二、 无需机械性得操作, 例如: 连接烧录器, 设置跳线帽等; 三、 可重复性编程。 当机器外壳封死, 无法拆机, 可以使用IAP升级方案进行更新迭代。 附图说明 0013 图1为单片机的Bootloader程序烧写示意图; 图2为stm32的IAP指针跳转详细流程图; 图3为本发明的通信协议流程图; 图4为Bootloader程序的功能框。

13、架图; 图5为keil uvision5 集成开发环境软件窗口图。 具体实施方式 0014 本发明的核心是自行烧写Bootloader程序至单片机中, 运行Bootloader程序对单 片机进行IAP升级。 0015 下面将结合本发明实施例中的附图, 对本发明实施例中的技术方案进行清楚、 完 整的描述, 显然, 所描述的实施例仅仅是本发明一部分实施例, 而不是全部的实施例, 基于 本发明中的实施例, 本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例, 都属于本发明保护的范围。 0016 一种基于stm32单片机的IAP方法, 包括如下步骤: 步骤S1: 烧写Bootload。

14、er程序至单片机。 0017 为了实现单片机的IAP功能, 单片机需要具有完整的Bootloader工程, Bootloader 说明书 2/6 页 4 CN 109871223 A 4 工程一般包含两部分, 一部分为中断向量表, 另一部分为Bootloader代码, Bootloader代码 的功能是接收新的APP程序并把它存储在FLASH的特定位置, 然后加载新的APP程序, Bootloader代码中含有单片机与串口进行USART通信的协议, USART是一种通用同步异步收 发机模块, 是电脑硬件的一部分, USART通常被集成在其他通信接口的连结上。 0018 本实施例中, 所选用的单。

15、片机型号为STM32F072CBT6, 为一款STM32 F0入门级 Cortex -M0 MCU, 最高频率达48MHz, 内置128KB flash + 16KB SRAM, 该型号单片机没有 提供BootLoader程序, 需要自己按需求进行编写, 并设定其存放位置。 0019 进一步的 , 为了在单片机启动时能够先运行Bootloader程序, 需要烧写 Bootloader程序至单片机的起始存储位置; 具体的, 如图1所示, 图1为单片机的Bootloader程序烧写示意图, 在PC端安装 KeiluVision5软件, 并根据单片机型号创建工程; 在创建的工程中按照需要编写 Boo。

16、tLoader程序; 搭载stn32的电路板通过J-Link连接至PC端; BootLoader程序编写完后, 在KeiluVision5点击烧录, 将KeiluVision5程序烧录到stm32的flash的初始存储区域中 进一步的, 请参考图2, 图2为stm32的IAP指针跳转详细流程图, 单片机上电后, 指针指 向0 x08000000 (单片机的复位中断向量的地址, 由硬件决定) 中断向量表表紧随其后, 执行 中断向量中断程序完成启动后, 临时stm32的内部硬件机制自动的将PC指针指向 “中断向量 表” 处, 跳转至0 x8000004开始运行程序代码, 由于Bootloader程。

17、序要先于APP程序运行, 因 此从0 x8000004开始存放Bootloader程序代码是合理的, Keil uVision5从构建到调试应用 代码到微控制器编程提供了简易且高效的开发环境, 在Keil uVision5开发环境下编写 Bootloader程序, 经过编译后, 生成.Bin文件, 然后通过J-Link烧写至单片机中。 0020 一般的, 对于型号为STM32F072CBT6的单片机来说, 其中断向量表的地址是硬件机 制固定的, 单片机产生中断时, 指针首先会跳转到中断向量表 (0 x8000004-0 x8000000n) 中的某个地址 (硬件决定) 然后跳转到对应的中断函数。

18、入口。 0021 步骤S2: 烧写APP程序至单片机。 0022 Bootloader程序通过J-Link烧写到单片机之后, App程序在Keil uVision5中生成 Bin文件, 将bin文件保存在主控板指定位置中, 当主控板收到升级指令时, 根据定义的协 议, 通过串口将bin每次发送512个字节, 单片机收到512个字节后, 进行校验, 如果无误, 则 反馈接收成功指令到主控板。 主控接收到成功指令后, 则继续发送下一个512字节, 如此循 环, 直到bin全部发送完成。 APP程序同样由两部分构成, 分别为中断向量表和APP代码。 0023 继续参考图2所示, 一般的, Bootl。

19、oader程序和APP程序为两个独立的部分, 各自具 有中断向量表, 当APP程序正常运行时, 单片机产生中断后, 指针依然会跳转到0 x8000004- 0 x8000000n中的某个地址, 即Bootloader程序的中断向量表, 而没有跳转APP程序的中断 向量表, 因此, 需要把APP程序的中断向量表映射到APP程序的中断向量表中来解决该问题, 也就是当单片机产生中断时, PC指针指向Bootloader程序的中断向量表, 然后更具指令跳 转至APP程序的中断向量表地址, 在APP程序的中断向量表中执行指令跳转至APP程序中对 应的中断函数入口。 0024 请参考图3, 图3为本发明的。

20、具体实施方式所提供的一种基于stm32单片机的IAP方 法的通信协议流程图, 具体通信协议如下: 起始命令: 0 x3B 说明书 3/6 页 5 CN 109871223 A 5 长度: 总长度 : 两个byte (单位: byte) 设备编号: 0 x01 命令: 0 xF1: 查询IAP、 0 xF2: 发送升级包、 0 xF3:结束; 参数: 0 xF1和0 xF3参数为: 0 x00、 0 xF2: 第几个512byte; 数据: 0 xF1和0 xF3: 不发送、 0 xF2: bin文件的512byte; 校验码: 除去校验码和换行符的前面所有的字节的和的低8位; 换行符: 0 x。

21、0A。 0025 按照上述通信协议, 具体的IAP升级步骤如下: 进入升级: 20 21 06 01 F0 00 返回: 30 31 06 01 F0 00 查询IAP: 3B 00 08 01 F1 00 CRC 0A 成功返回: 3B 00 09 01 F1 00 01 CRC 0A 失败返回: 3B 00 09 01 F1 00 02 CRC 0A 发送升级包: (第0批) 3B 02 08 01 F2 00 XX XX XX CRC 0A 512个字节 成功返回: 3B 00 09 01 F2 00 01 CRC 0A 失败返回: 3B 00 09 01 F2 00 02 CRC 0A。

22、 (第1批)3B 02 08 01 F2 01 XX XX XX CRC 0A 512个字节 成功返回: 3B 00 09 01 F2 01 01 CRC 0A 失败返回: 3B 00 09 01 F2 01 02 CRC 0A (第N-1批)3B 02 08 01 F2 n-1 XX XX XX CRC 0A 512个字节 成功返回: 3B 00 09 01 F2 n-1 01 CRC 0A 失败返回: 3B 00 09 01 F2 n-1 02 CRC 0A 如果(N-1)不是4的倍数, 则需要继续发: (第N批)3B 02 08 01 F2 n FF FF FF CRC 0A 512个字。

23、节 成功返回: 3B 00 09 01 F2 n 01 CRC 0A 失败返回: 3B 00 09 01 F2 n 02 CRC 0A 如果(N)是4的倍数, 则停止发送, 否则需要继续发送, 直到下一批是4的倍数。 0026 注意: (N-1)一定得是4的倍数, 如果不是, 则需要继续发0 xFF。 如果 (N-1) 是4的倍 数, 并且第N-1批不够512bytes , 则后面也需要补0 xFF。 0027 结束: 3B 00 08 01 F3 00 CRX 0A 成功返回: 3B 00 09 01 F3 00 01 CRC 0A 失败返回: 3B 00 09 01 F3 00 02 CR。

24、C 0A 通过上述指令就可以完成APP程序的IAP升级。 0028 值得指出的是, 当单片机正常工作时运行的是APP程序, 这时如果需要进行IAP升 级, 就需要在APP程序中加入跳转至Bootloader程序的判断条件。 说明书 4/6 页 6 CN 109871223 A 6 0029 APP程序中条件跳转代码如下: 参考图4, 图4为Bootloader程序的功能框架图, APP程序跳转过程如下: App跳转程序在BootLoader的主函数中; 当STM32f072CBT6上电时, 首先启动BootLoader程序BootLoader的起始地址 (0 x080000000) 执行, 即。

25、跳到上图程序的主函数中执行; 对需要用到的功能进行初始化, 这里需要GPIO口, 时钟和串口初始化。 0030 获取Flash中APPLICATION_CHECK_ADDRESS对应地址的值, 如果该值为 0 x12345678, 则进入While循环, 等待App程序的更新, 如果该值不等于0 x12345678, 则跳转 到App程序的起始地址 (0 x08004000) , 执行App程序。 0031 进一步的, 继续参考图5所示, 在使用 IAP过程写入的程序要满足2个要求: 新程 序必须从 IAP 程序之后的某个偏移量为 x 的地址开始; 必须将新程序的中断向量表相 应的移动, 移动。

26、的偏移量为x; 而设置程序起始位置的方法是 (keil uvision5 集成开发环 境) 在工程的 “Option for Target.” 界面中的 “Target” 页里将 “IROM” 的 “Start” 列改为 欲使程序起始的地方, 如下图中将程序起始位置设为 0 x8004000。 0032 本发明利用STM32单片机带有的可编程内置闪存以及STM32上拥有的数量上和种 类上都非常丰富的外设通信接口, 可以实现以下功能: 一、 可以远程控制程序的升级; 二、 无需机械性得操作, 例如: 连接烧录器, 设置跳线帽等; 三、 可重复性编程。 当机器外壳封死, 无法拆机, 可以使用IAP。

27、升级方案进行更新迭代。 0033 本发明还提供一种基于stm32单片机的IAP系统, 包括; BootLoader程序烧写模块, 用于烧写BootLoader程序至单片机; 说明书 5/6 页 7 CN 109871223 A 7 APP程序更新模块, 用于运行所述BootLoader程序以更新APP程序。 0034 尽管参照特定的优选实施例已经表示和表述了本发明, 但其不得解释为对本发明 自身的限制, 在不脱离所附权利要求定义的本发明的精神和范围前提下, 可对其在装置形 式上、 材质上、 细节上作出各种组合变化。 说明书 6/6 页 8 CN 109871223 A 8 图1 说明书附图 1/4 页 9 CN 109871223 A 9 图2 图3 说明书附图 2/4 页 10 CN 109871223 A 10 图4 说明书附图 3/4 页 11 CN 109871223 A 11 图5 说明书附图 4/4 页 12 CN 109871223 A 12 。

展开阅读全文
内容关键字: 基于 stm32 单片机 IAP 方法 系统
关于本文
本文标题:基于stm32单片机的IAP方法及系统.pdf
链接地址:https://www.zhuanlichaxun.net/pdf/12175039.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1