一种基于CAN总线的ARM应用程序在线升级的方法与流程

文档序号:24160144发布日期:2021-03-05 15:38阅读:128来源:国知局
一种基于CAN总线的ARM应用程序在线升级的方法与流程
一种基于can总线的arm应用程序在线升级的方法
技术领域
[0001]
本发明涉及电子电路设计领域,尤其是一种应用程序在线升级的方法。


背景技术:

[0002]
arm是一个32位精简指令集的处理器架构,arm广泛应用于许多嵌入式系统设计中。具有指令长度固定、执行效率高、体积小、低功耗、低成本、高性能等特点。arm通常由控制单元、算数逻辑单元和寄存器组成。arm广泛应用于商业微控制器、汽车控制系统、电机控制系统、大型家用电器控制器、医疗设备、网络设备和机载设备等产品。由于arm低成本和高性能等特点,arm被应用的越来越广泛。
[0003]
arm通常片内集成flash存储器,用于存储代码和数据。程序更新过程是对flash存储的应用程序更新的过程。arm常用程序更新模式存在两种方式,仿真器烧写通过串行jtag接口升级,串口升级通过串口在系统编程。两种方式都需升级人员到达现场通过升级设备对arm程序进行更新,升级存在一定的不便性。


技术实现要素:

[0004]
为了克服现有技术的不足,本发明提供一种基于can总线的arm应用程序在线升级的方法,通过can总线接口实现arm应用程序的在线升级的目的。
[0005]
本发明解决其技术问题所采用的技术方案包括如下步骤:
[0006]
步骤1:arm上电后,进入boot程序中,首先对升级指示信号进行判断,当升级指示信号为高电平时,对应不升级,程序跳转到应用程序,当升级指示信号为低电平时,进入在线升级模式;
[0007]
步骤2:在线升级模式下,arm等待can总线在线升级指令,当在规定时间t内未接收到升级指令时,arm通过总线上报升级失败消息,升级失败;当在规定时间t内通过总线接收到在线升级指令时,完成升级握手,arm等待总线发送升级数据包;
[0008]
步骤3:arm通过总线接受在线升级数据,通过头文件获知升级数据包的数量,开始计数操作,同时将接收到数据写入片外sram;
[0009]
为确保升级数据传输过程未发生改变,数据写入sram后,arm对升级数据进行crc校验,并将crc校验结果与升级文件结尾的crc校验结果进行比对,当比对一致时,证明数据未发生改变;如比对不一致时,则总线上报升级失败;
[0010]
步骤4:arm对片内应用程序执行擦除操作,擦除完成后将sram中存储的应用升级数据写入片内存储;
[0011]
写入完成后,arm将片内写入的升级数据回读并与片外sram中的升级数据进行对比校验,对比无误后通过总线上报升级成功消息,至此完成arm应用程序的在线升级。
[0012]
所述升级数据包组成如图2所示,由3部分组成,规定每8个字节为1包数据,升级数据由头文件、升级数据和crc校验结果组成,头文件对应为在线升级数据包的数量,数据包结尾为crc校验结果。
[0013]
所述规定时间t为2s。
[0014]
本发明的有益效果在于由于采用了基于can总线的arm在线升级方案,解决了arm应用程序远程在线升级的问题,简化了基于arm的产品应用程序升级流程,有效提高产品升级效率,节省了人力、物力和时间成本。
附图说明
[0015]
图1为本发明arm在线升级原理框图。
[0016]
图2为本发明升级数据包组成。
[0017]
图3为本发明arm在线升级流程图。
具体实施方式
[0018]
下面结合附图和实施例对本发明进一步说明。
[0019]
arm内的程序分为boot程序和应用程序,boot程序负责完成总线通信、升级状态判断、arm应用程序升级数据写入、数据校验、状态上报等工作。arm上电进入boot程序,根据can总线指令完成升级数据包接收、数据crc校验、程序数据更新、数据比对等功能,当写入程序数据校验完成后说明arm应用程序升级成功。
[0020]
图1为在线升级的原理框图,arm通过总线接收升级所需数据并完成自身应用程序的升级,具体升级流程如下:
[0021]
arm中同时存在boot程序和应用程序,两者存储位置不同,在线升级所用到的程序存储在boot程序中,二者在存储中存储位置不同,通过boot中的升级程序可完成对应用程序的升级。
[0022]
在线升级流程图如图3所示,详细步骤为:
[0023]
步骤1:arm上电后,进入boot程序中,首先对升级指示信号进行判断,当升级指示信号为高电平时,对应不升级,程序跳转到应用程序,当升级指示信号为低电平时,进入在线升级模式;
[0024]
步骤2:在线升级模式下,arm等待can总线在线升级指令,当在2s内未接收到升级指令时,arm通过总线上报升级失败消息,升级失败;当在2s内通过总线接收到在线升级指令时,完成升级握手,arm等待总线发送升级数据包;
[0025]
步骤3:arm通过总线接受在线升级数据,通过头文件获知升级数据包的数量,开始计数操作,同时将接收到数据写入片外sram;
[0026]
为确保升级数据传输过程未发生改变,数据写入sram后,arm对升级数据进行crc校验,并将crc校验结果与升级文件结尾的crc校验结果进行比对,当比对一致时,证明数据未发生改变;如比对不一致时,则总线上报升级失败;
[0027]
步骤4:arm对片内应用程序执行擦除操作,擦除完成后将sram中存储的应用升级数据写入片内存储;
[0028]
写入完成后,arm将片内写入的升级数据回读并与片外sram中的升级数据进行对比校验,对比无误后通过总线上报升级成功消息,至此完成arm应用程序的在线升级。
[0029]
所述升级数据包组成如图2所示,由3部分组成,规定每8个字节为1包数据,升级数据由头文件、升级数据和crc校验结果组成,头文件对应为在线升级数据包的数量,数据包
结尾为crc校验结果。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1