基于STM32IAP的在线程序更新方法与流程

文档序号:12718984阅读:2726来源:国知局
基于STM32 IAP的在线程序更新方法与流程

本发明涉及在线程序更新方法,尤其是涉及基于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,不一致则校验不通过;校验通过后,微控制器下发应用程序跳转,下位机首先判断应用程序标志位存放区是否写入更新成功标志字,若已写入,则跳转至应用程序,若未写入,则跳转失败。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1