CN106874049A - 基于stm32 iap的在线程序更新方法 - Google Patents
基于stm32 iap的在线程序更新方法 Download PDFInfo
- Publication number
- CN106874049A CN106874049A CN201710085620.3A CN201710085620A CN106874049A CN 106874049 A CN106874049 A CN 106874049A CN 201710085620 A CN201710085620 A CN 201710085620A CN 106874049 A CN106874049 A CN 106874049A
- Authority
- CN
- China
- Prior art keywords
- slave computer
- circuit plate
- application program
- program
- computer circuit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于STM32 IAP的在线程序更新方法,一、在上位计算机中加载需要更新的下位机电路板的应用程序hex文件,解析应用程序hex文件结构,提取需要写入下位机flash的十六进制数据通过以太网通信传送给微控制器;二、微控制器接收到上位计算机传送的指令后,开启程序更新时序;三、下位机电路板MCU首先运行bootloader程序,通过bootloader程序接收微控制器程序更新相关指令,对本下位机进行应用程序擦除、应用程序数据下传、应用程序数据校验、应用程序跳转,将所述十六进制数据写入应用程序存放区。本发明解决了现有通过仿真器进行下位机电路板程序更新所存在的不足。
Description
技术领域
本发明涉及在线程序更新方法,尤其是涉及基于STM32 IAP的在线程序更新方法。
背景技术
目前,传统的程序更新方法多为通过仿真器进行下位机电路板的程序更新。通过仿真器进行下位机电路板的程序更新,需要使用专业的仿真器,价格昂贵;程序更新不仅需要使用专业的编程软件,而且需要设定MCU型号,专业性较强;另外此种方式还需要拆卸机箱,所需人力成本较高。
发明内容
本发明目的在于提供一种基于STM32 IAP的在线程序更新方法。
为实现上述目的,本发明采取下述技术方案:
本发明所述基于STM32 IAP的在线程序更新方法,包括下述步骤:
基于STM32IAP的在线程序更新方法,其特征在于:包括下述步骤:
第一步、在上位计算机中加载需要更新程序的下位机电路板的应用程序hex文件并加载需要更新程序的下位机电路板ID,上位计算机解析所述应用程序hex文件结构,从中提取需要写入所述下位机flash的十六进制数据,并从加载的hex文件名中提取所述下位机电路板代号,然后将所述十六进制数据和需要更新程序的下位机电路板ID通过以太网通信传送给微控制器;
第二步、所述微控制器接收到所述上位计算机传送的指令后,开启所述下位机程序更新时序;首先通过CAN指令向需要更新程序的下位机电路板发送查询电路板代号指令,获取所述下位机电路板代号并和第一步中所述的下位机电路板代号进行对比,如果不一致则向上位计算机报告hex文件加载错误,如果一致,则通过CAN指令向所述下位机电路板下发程序更新相关指令;
第三步、所述下位机电路板MCU的flash分为bootloader程序存放区、应用程序存放区、应用程序标志位存放区;所述下位机电路板MCU上电后首先运行bootloader程序,通过bootloader程序接收所述微控制器程序更新相关指令,对本下位机进行flash解锁定、应用程序擦除、应用程序数据下传、应用程序数据校验、flash锁定、应用程序跳转,将所述十六进制数据写入应用程序存放区,每一条指令写入4个字节数据或8个字节数据,并将已写入应用程序存放区的数据进行异或校验,与所述微控制器的校验结果进行对比,一致则校验通过,向应用程序标志位存放区写入更新成功标志字,不一致则校验不通过。
本发明解决了现有通过仿真器进行下位机电路板程序更新所存在的不足。下位机电路板程序需要更新时,工作人员只需使用U盘携带需更新的下位机电路板的程序hex文件,直接在上位计算机上进行操作,通过以太网、CAN通信进行下位机电路板的程序更新,方便快捷。具体表现为:
1、本发明通过对比从加载的hex文件的文件名中提取的电路板代号与向需要更新程序的下位机电路板发送查询电路板代号指令获取电路板代号,检验加载的hex文件是否正确,解决了由于人为加载hex文件错误导致的程序更新错误问题。
2、本发明通过在程序更新过程中解锁flash、在程序更新完毕后锁定flash,避免了存放程序的flash被误擦除的风险。
附图说明
图1是本发明的硬件构架示意图。
图2是本发明所述下位机电路板MCU的flash空间分配图。
图3是本发明所述下位机电路板bootloader程序流程图。
具体实施方式
下面结合附图对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述实施例。
本发明所述基于STM32 IAP的在线程序更新方法,硬件设备如图1所示,由上位计算机、微控制器、STM32下位机电路板构成。上位计算机主要加载和解析需要更新的下位机电路板的应用程序hex文件、加载需要更新程序的下位机电路板ID、从加载的hex文件名中提取电路板代号,将数据和控制指令传输给微控制器;微控制器接收上位计算机下发的指令后,检验加载的hex是否正确,并通过CAN指令向下位机电路板下发程序更新相关指令;下位机电路板接收微控制器程序更新相关指令后,将十六进制数据写入(烧录至)应用程序存放区。
上位计算机加载应用程序hex文件、输入需更新程序的下位机电路板ID,首先从加载的hex文件名中提取电路板代号(hex文件名按照固定格式包含对应的电路板代号),然后解析应用程序hex文件,解析规则为:应用程序hex文件第二行至倒数第二行的数据中,每一行从“:”后的第9位至倒数第3位为需要写入下位机flash的十六进制数据,将数据提取出之后通过以太网传输给微控制器。
微控制器接收到上位计算机的指令后,开启下位机程序更新时序,首先通过CAN指令向需要更新程序的下位机电路板发送查询电路板代号指令,获取电路板代号,将该获取的电路板代号和所述提取的电路板代号进行对比,如果不一致则向上位计算机报告hex文件加载错误,如果一致,则通过CAN指令向对应下位机电路板下发程序更新相关指令;即:首先下发应用程序擦除指令,擦除下位机应用程序存放区的flash;然后下发应用程序下传指令,将需要写入下位机的十六进制数据划分为每4个字节数据为一组,每一组数据通过1条CAN指令发送给下位机电路板;最后下发应用程序数据校验指令,将微控制器下发的数据进行异或校验,将校验结果发送给下位机,进行数据校验;若校验成功,下发跳转指令,使下位机电路板跳转至其应用程序,若校验失败,提示报错。
下位机电路板MCU的flash空间分配图如图2所示,下位机电路板MCU的flash分为bootloader程序存放区和应用程序存放区、应用程序标志位存放区;下位机电路板MCU上电后首先运行bootloader程序,通过bootloader程序接收微控制器程序更新相关指令,将十六进制数据写入(烧录至)应用程序存放区;其主要功能是更新应用程序,如果无需更新,则接收上位计算机跳转指令后跳转至应用程序,由应用程序实现下位机电路板实际控制功能。
下位机电路板bootloader程序流程图如图3所示,程序运行后即等待接收微控制器CAN指令。如果不需进行程序更新,微控制器直接下发应用程序跳转指令,下位机首先判断应用程序标志位存放区是否写入更新成功标志字,若已写入,则跳转至应用程序,若未写入,则跳转失败;如果需要进行程序更新,微控制器首先会下发应用程序擦除指令,下位机将flash解锁定,然后将应用程序存放区的所有FLASH空间进行擦除;然后微控制器下发应用程序下传指令,下位机将微控制器下发的应用程序的十六进制数据写入应用程序存放区,每一条指令写入4个字节数据;数据下传完成后,微控制器下发应用程序数据校验指令,下位机将已写入应用程序存放区的数据进行异或校验,与微控制器的校验结果进行对比,一致则校验通过,向应用程序标志位存放区写入更新成功标志字,并锁定flash,不一致则校验不通过;校验通过后,微控制器下发应用程序跳转,下位机首先判断应用程序标志位存放区是否写入更新成功标志字,若已写入,则跳转至应用程序,若未写入,则跳转失败。
Claims (1)
1.一种基于STM32IAP的在线程序更新方法,其特征在于:包括下述步骤:
第一步、在上位计算机中加载需要更新程序的下位机电路板的应用程序hex文件并加载需要更新程序的下位机电路板ID,上位计算机解析所述应用程序hex文件结构,从中提取需要写入所述下位机flash的十六进制数据,并从加载的hex文件名中提取所述下位机电路板代号,然后将所述十六进制数据和需要更新程序的下位机电路板ID通过以太网通信传送给微控制器;
第二步、所述微控制器接收到所述上位计算机传送的指令后,开启所述下位机程序更新时序;首先通过CAN指令向需要更新程序的下位机电路板发送查询电路板代号指令,获取所述下位机电路板代号并和第一步中所述的下位机电路板代号进行对比,如果不一致则向上位计算机报告hex文件加载错误,如果一致,则通过CAN指令向所述下位机电路板下发程序更新相关指令;
第三步、所述下位机电路板MCU的flash分为bootloader程序存放区、应用程序存放区、应用程序标志位存放区;所述下位机电路板MCU上电后首先运行bootloader程序,通过bootloader程序接收所述微控制器程序更新相关指令,对本下位机进行flash解锁定、应用程序擦除、应用程序数据下传、应用程序数据校验、flash锁定、应用程序跳转,将所述十六进制数据写入应用程序存放区,每一条指令写入4个字节数据或8个字节数据,并将已写入应用程序存放区的数据进行异或校验,与所述微控制器的校验结果进行对比,一致则校验通过,向应用程序标志位存放区写入更新成功标志字,不一致则校验不通过。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710085620.3A CN106874049A (zh) | 2017-02-17 | 2017-02-17 | 基于stm32 iap的在线程序更新方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710085620.3A CN106874049A (zh) | 2017-02-17 | 2017-02-17 | 基于stm32 iap的在线程序更新方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106874049A true CN106874049A (zh) | 2017-06-20 |
Family
ID=59167096
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710085620.3A Pending CN106874049A (zh) | 2017-02-17 | 2017-02-17 | 基于stm32 iap的在线程序更新方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106874049A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109358886A (zh) * | 2018-12-03 | 2019-02-19 | 南宁举医疗电子设备股份有限公司 | 一种高压发生器远程升级控制系统及远程升级方法 |
CN109753044A (zh) * | 2017-11-07 | 2019-05-14 | 北京长城华冠汽车科技股份有限公司 | 电池管理系统控制器升级方法及装置 |
CN112181446A (zh) * | 2020-09-04 | 2021-01-05 | 中国船舶重工集团公司第七0七研究所 | 一种基于stm32的软件在线升级方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105955764A (zh) * | 2016-04-22 | 2016-09-21 | 佛山市南海区欧谱曼迪科技有限责任公司 | 一种stm32单片机iap串口程序烧录的改进方法 |
CN205750767U (zh) * | 2016-04-01 | 2016-11-30 | 西北师范大学 | 基于iap技术和gprs模块的仪器仪表在线升级装置 |
-
2017
- 2017-02-17 CN CN201710085620.3A patent/CN106874049A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN205750767U (zh) * | 2016-04-01 | 2016-11-30 | 西北师范大学 | 基于iap技术和gprs模块的仪器仪表在线升级装置 |
CN105955764A (zh) * | 2016-04-22 | 2016-09-21 | 佛山市南海区欧谱曼迪科技有限责任公司 | 一种stm32单片机iap串口程序烧录的改进方法 |
Non-Patent Citations (1)
Title |
---|
佟国香 等: ""基于CAN 总线的STM32应用编程及实现"", 《信息技术》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109753044A (zh) * | 2017-11-07 | 2019-05-14 | 北京长城华冠汽车科技股份有限公司 | 电池管理系统控制器升级方法及装置 |
CN109358886A (zh) * | 2018-12-03 | 2019-02-19 | 南宁举医疗电子设备股份有限公司 | 一种高压发生器远程升级控制系统及远程升级方法 |
CN112181446A (zh) * | 2020-09-04 | 2021-01-05 | 中国船舶重工集团公司第七0七研究所 | 一种基于stm32的软件在线升级方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102999350B (zh) | 一种数字信号处理平台中fpga程序升级在线下载方法 | |
CN102662701B (zh) | Cpld在线升级方法、装置及业务单板 | |
CN100428174C (zh) | 一种嵌入式故障注入系统及其方法 | |
CN106874049A (zh) | 基于stm32 iap的在线程序更新方法 | |
CN104679559B (zh) | 单片机在线编程的方法 | |
CN109634600B (zh) | 一种基于安全扩展SysML和AADL模型的代码生成方法 | |
CN110209419A (zh) | 一种基于can总线的嵌入式dsp设备升级方法及装置 | |
CN107957874B (zh) | 可恢复的驻留式星载软件在轨编程方法 | |
CN107562437A (zh) | 一种基于MicroBlaze软核的FPGA在线升级的系统及方法 | |
CN104820586A (zh) | 一种航天器嵌入式软件在轨维护方法 | |
CN104732151A (zh) | 一种Linux系统下远程安全批量更新BIOS的方法 | |
CN108108193A (zh) | 一种安全易用的固件升级方法及系统 | |
CN107704258A (zh) | Uboot升级方法、系统及终端设备 | |
CN107301128A (zh) | 基于Petri网模型的系统仿真验证方法 | |
CN106843938A (zh) | Fpga和dsp程序升级和在线重构系统和方法 | |
CN104077166A (zh) | 基于fpga中ip核的epcs与epcq存储器在线升级方法 | |
CN107729040A (zh) | 一种单片机的iap方法及系统 | |
CN112152846A (zh) | 一种基于物联网的计量仪表远程升级方法 | |
CN108182078A (zh) | 一种优化的弹载设备不拆弹软件在线升级方法 | |
CN110083378A (zh) | 一种基于文件系统的软件自动升级方法及装置 | |
CN106919426A (zh) | 一种多路服务器fpga版本同步的方法 | |
CN104133743A (zh) | 一种将文件烧录到emmc芯片的方法及装置 | |
CN106445504A (zh) | 一种移动终端设备驱动的升级方法及系统 | |
CN111459496B (zh) | 一种防篡改的程序文件的生成方法、设备的升级方法 | |
CN109271199A (zh) | 一种用于数据库持续集成与脚本文件管理的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170620 |
|
RJ01 | Rejection of invention patent application after publication |