首页> 中国专利> 一种用于车载系统基于移动网络实现IAP远程升级的方法

一种用于车载系统基于移动网络实现IAP远程升级的方法

摘要

本发明提供一种用于车载系统基于移动网络实现IAP远程升级的方法,车载平台通过移动网络从远端服务器下载升级文件至本地,然后车载平台通过接口将升级文件传送给待升级的嵌入式设备,实现嵌入式设备的远程升级,该升级方法以车载平台作为升级文件的传输中继,实现从远端服务器到本地嵌入式设备的IAP远程升级功能。同时在嵌入式设备内部升级实现中,将升级功能代码嵌入到用户功能代码中,将接收到的升级文件暂存于flash某个区域,并不覆盖掉正在运行的用户程序,当验证升级成功之后再将升级文件拷贝至用户程序区,这样可以保证即使在升级失败的情况下,用户程序仍然可以正常的运行,降低在升级过程中因发生意外事件导致升级失败的风险。

著录项

  • 公开/公告号CN106569847A

    专利类型发明专利

  • 公开/公告日2017-04-19

    原文格式PDF

  • 申请/专利权人 数源科技股份有限公司;

    申请/专利号CN201610895024.7

  • 申请日2016-10-14

  • 分类号G06F9/445(20060101);H04L29/08(20060101);

  • 代理机构33241 杭州斯可睿专利事务所有限公司;

  • 代理人周豪靖

  • 地址 310012 浙江省杭州市西湖区教工路一号

  • 入库时间 2023-06-19 01:56:43

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-03-31

    授权

    授权

  • 2019-12-03

    著录事项变更 IPC(主分类):G06F9/445 变更前: 变更后: 申请日:20161014

    著录事项变更

  • 2017-05-17

    实质审查的生效 IPC(主分类):G06F9/445 申请日:20161014

    实质审查的生效

  • 2017-04-19

    公开

    公开

说明书

技术领域

本发明是一种用于车载系统基于移动网络实现IAP远程升级的方法,属于车载系统升级技术领域。

背景技术

在现有技术中,随着电子技术、通信技术以及计算机技术的迅猛发展,嵌入式系统已经广泛应用于各领域,各种行业对嵌入式设备的系统功能、性能以及规模的要求都在日益提高,开发者必须能够针对客户的需求及时对系统进行远程维护和升级,以延长系统的使用周期及改善系统的性能等。

在当今的车载系统中,为了保证对维护成本的控制以及终端用户得到最佳的软件更新体验,车载电子行业已经将软件更新功能作为一个关键的竞争优势加入到其提供的服务中,甚至有企业提出一种车载软件管理策略,将其配置为在家使用wifi进行版本系统更新,在外通过移动网络进行即时更新。

然而,传统的系统升级只支持本地升级,需要有专业技术支持人员到设备现场进行升级维护工作,大大提高了设备的维护成本,例如中国专利申请201310754479.3“单片机的IAP方法及装置”、中国专利申请201210059474.4“在线更新智能水表应用程序的方法”、中国专利申请201210428285.X“用户程序在线升级系统和升级方法”等。涉及到远程升级方法的中国专利申请都没有具体给出应对升级过程中出现升级失败的防护措施,升级失败就有可能导致用户程序不能正常运行,例如中国专利申请201510481176.8“远程在线烧写方法、装置及远程在线烧写系统”只是描述了怎么通过移动互联网实现实现对目标终端的升级控制;中国专利申请201410320164.2“一种ATmega单片机程序网络远程升级方法及其系统”只是详细论述了整个升级的过程和严格的通信协议;结合当今互联网行业的快速发展,物联网技术的不断成熟的应用前景,本中国专利申请给出了一种基于移动网络实现的嵌入式IAP远程升级方法,设计上具有很强的针对性和实用性,大大提升了系统升级的安全性与可靠性。

发明内容

针对现有技术存在的不足,本发明目的是提供一种用于车载系统基于移动网络实现IAP远程升级的方法,以解决上述背景技术中提出的问题,本发明通过在嵌入式设备区域,即flash区域建立一个升级文件缓冲区,验证整个升级过程成功之后再将缓冲区内容复制到用户代码区,提高了升级过程的安全性与系统稳定性。

为了实现上述目的,本发明是通过如下的技术方案来实现:一种用于车载系统基于移动网络实现IAP远程升级的方法,基于车载系统,包括以下步骤:

步骤1,首先系统复位,触发复位源;

步骤2,产生复位信号,BootLoader程序启动;

步骤3:BootLoader从EEPROM数据区导入升级相关数据信息,包括升级标志、升级文件总大小,以及升级文件的CRC校验码;

步骤4:查看升级标志位是否置位,若升级标志置位则执行步骤5;否则跳转到步骤7;

步骤5:校验存储在用户代码2区的升级文件的大小和CRC校验码,检验正确则执行步骤6,否则跳转到步骤7;

步骤6:将用户代码2区的升级文件拷贝到用户代码1区,同时对升级标志位清零;防止下一次运行BootLoader时再次拷贝升级文件;

步骤7:跳转至用户代码1区,正常执行用户功能代码;

步骤8,执行正常功能,即用户功能代码;

步骤9,判断是否收到车载平台发送过来的升级指令,若没有接收到升级指令,则返回执行步骤8,若接收到升级指令,则执行步骤10;

步骤10,系统切换到升级模式;

步骤11,在升级之前车载平台会向嵌入式设备端发送命令来获取嵌入式设备当前运行软件的版本号,嵌入式设备返回当前运行软件版本号、文件大小以及校验码;

步骤12:判断升级版本是否过低,当前运行软件版本号与待升级文件版本号进行比较,若待升级软件版本号低于当前运行软件版本号,则进入步骤8,放弃升级过程,否则进入步骤13;

步骤13:若待升级文件的软件版本号低于当前运行软件的版本号则返回给车载平台版本太旧的命令,否则嵌入式设备切换到升级模式并返回收到数据正确的确认帧,车载平台发送擦除flash命令,嵌入式设备擦除用户代码2区flash并返回擦除flash确认命令,车载平台将待升级文件分成若干个大小固定的数据包,然后依次将这些数据包发送给嵌入式设备;

步骤14:嵌入式设备接收到一个数据包之后,对接收到的数据包进行校验,若检验正确,则将接收的数据包存储在用户代码2区并且返回给车载平台一个正确接收确认帧,否则返回一个接收数据包失败帧;

步骤15:若车载平台所有升级文件数据包发送完成,则发送数据包发送完成命令;否则返回到步骤13去执行;

步骤16:嵌入式设备端接收到数据包传送完成命令之后,开始对接收到的升级文件的总字节大小和CRC校验码进行验证,若验证正确则返回给车载平台一个升级成功的数据帧,同时会在EEPROM数据区存储设置升级标志位、升级文件的大小以及升级文件校验码;否则返回一个升级失败的数据帧;

步骤17:若车载平台接收到升级成功数据帧,则发送一个系统复位命令数据帧;否则返回步骤8继续尝试升级;在升级过程中只要发生错误,则返回步骤8继续尝试升级,这个尝试过程总共执行三次,若升级三次仍然不成功,则发送退出升级命令帧,若嵌入式设备端接收到系统复位命令帧,则产生一个软件系统复位,然后系统重新启动就可以运行刚升级的文件;若嵌入式设备接收到退出升级命令帧,则切回到正常运行模式,继续运行原先的功能代码。

进一步地,车载系统包括服务器、车载平台、设置在车载平台内的接口以及嵌入式设备,嵌入式设备作为车载平台的一个组成部分,通过接口与车载平台之间进行信息的交换,车载平台通过移动网络从服务器端下载bin格式的升级文件,然后将升级文件通过接口发送给嵌入式设备,完成嵌入式设备的升级过程。

进一步地,在升级之前车载平台通过移动网络从远端服务器下载升级文件至本地,然后车载平台通过接口将升级文件传送给待升级的嵌入式设备,实现嵌入式设备的远程升级;

嵌入式设备从结构上映射为至少四个存储体:BootLoader区、用户代码1区、用户代码2区以及EEPROM数据区;

BootLoader区用于存放BootLoader程序,实现系统的启动、数据的搬移和程序的跳转功能;用户代码1区作为主功能存储区,功能代码总是从这里开始运行,并且完成升级文件的编程工作;用户代码2区作为辅助功能区,实现升级文件的暂时存储;EEPROM数据区用于记录升级过程及升级文件的属性等相关信息。

本发明的有益效果:本发明的一种用于车载系统基于移动网络实现IAP远程升级的方法,将升级文件相关的功能放到了用户代码中,这与传统的IAP方式将升级文件功能代码放到BootLoader不同,这也是相对传统IAP方式非常重要的一个优点。传统的IAP升级方式在嵌入式设备接收到升级指令后的通常做法是产生一个系统软件复位使程序跳转到BootLoader处来处理后续升级相关的功能;本发明将升级相关的功能封装成一个软件模块,放到用户功能代码中,在正常执行用户代码过程中一旦接收到车载平台发送过来的升级命令,系统可以安全平稳的由正常工作模式切换到在线升级模式,执行升级功能模块;这样可以规避程序通过复位来实现程序的跳转,从某种意义上来说会显得更加的安全,同时BootLoader程序功能显得更加简洁,可以提高其在不同硬件平台之间的可移植性;更进一步说,在系统升级过程中无可避免的会发生一些意外事件导致升级失败,例如突然断电,车载平台突然死机等,传统的IAP升级方式在升级的过程中会覆盖掉原先的功能代码,如果升级失败将会导致系统不能正常工作,必须到设备现场进行处理,提高了系统维护的成本。但是本发明在升级的过程中会将升级文件暂存于用户代码2区,只有当验证升级成功之后才会将升级文件由用户代码2区搬移至主用户代码区,即使升级失败仍然可以继续运行原先的功能程序,不会影响系统的正常运行,这种升级方法可以将升级过程中的意外风险降至最低。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1 为车载系统整体框图;

图2 为车载平台与嵌入式设备之间进行升级文件传输的过程流程图;

图3 为嵌入式芯片片内flash结构划分图;

图4 为系统启动过程中BootLoader处理流程图;

图5 为嵌入式设备内部整体处理流程图。

具体实施方式

为使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体实施方式,进一步阐述本发明。

请参阅图1-图5,本发明提供一种技术方案:一种用于车载系统基于移动网络实现IAP远程升级的方法,基于车载系统,包括以下步骤:

步骤1,首先系统复位,触发复位源;

步骤2,产生复位信号,BootLoader程序启动;

步骤3:BootLoader从EEPROM数据区导入升级相关数据信息,包括升级标志、升级文件总大小,以及升级文件的CRC校验码;

步骤4:查看升级标志位是否置位,若升级标志置位则执行步骤5;否则跳转到步骤7;

步骤5:校验存储在用户代码2区的升级文件的大小和CRC校验码,检验正确则执行步骤6,否则跳转到步骤7;

步骤6:将用户代码2区的升级文件拷贝到用户代码1区,同时对升级标志位清零;防止下一次运行BootLoader时再次拷贝升级文件;

步骤7:跳转至用户代码1区,正常执行用户功能代码;

步骤8,执行正常功能,即用户功能代码;

步骤9,判断是否收到车载平台发送过来的升级指令,若没有接收到升级指令,则返回执行步骤8,若接收到升级指令,则执行步骤10;

步骤10,系统切换到升级模式;

步骤11,在升级之前车载平台会向嵌入式设备端发送命令来获取嵌入式设备当前运行软件的版本号,嵌入式设备返回当前运行软件版本号、文件大小以及校验码;

步骤12:判断升级版本是否过低,当前运行软件版本号与待升级文件版本号进行比较,若待升级软件版本号低于当前运行软件版本号,则进入步骤8,放弃升级过程,否则进入步骤13;

步骤13:若待升级文件的软件版本号低于当前运行软件的版本号则返回给车载平台版本太旧的命令,否则嵌入式设备切换到升级模式并返回收到数据正确的确认帧,车载平台发送擦除flash命令,嵌入式设备擦除用户代码2区flash并返回擦除flash确认命令,车载平台将待升级文件分成若干个大小固定的数据包,然后依次将这些数据包发送给嵌入式设备;

步骤12以及步骤13中的描述表明只有待升级文件的软件版本高于当前运行软件的版本才会继续后面的升级步骤,这样可以防止人为因素导致升级错误的文件;存储升级文件的大小和校验码则是防止数据包在传送过程中有丢包或者是漏包的现象发生。

步骤13则是基于片内flash的特点,在编程过程中只能写0不能写1,所以在编程前必须先擦除flash,将变成区域flash内容预置为1,然后在编程过程中只需将需要清0的位写0接好了。若在应用程序中启用了看门狗,则在擦除flash编程区域时需要隔一段时间去喂一次狗,因为擦除flash是一个相对比较耗时的过程,可能导致看门狗复位。

步骤14:嵌入式设备接收到一个数据包之后,对接收到的数据包进行校验,若检验正确,则将接收的数据包存储在用户代码2区并且返回给车载平台一个正确接收确认帧,否则返回一个接收数据包失败帧;

步骤15:若车载平台所有升级文件数据包发送完成,则发送数据包发送完成命令;否则返回到步骤13去执行;

步骤16:嵌入式设备端接收到数据包传送完成命令之后,开始对接收到的升级文件的总字节大小和CRC校验码进行验证,若验证正确则返回给车载平台一个升级成功的数据帧,同时会在EEPROM数据区存储设置升级标志位、升级文件的大小以及升级文件校验码;否则返回一个升级失败的数据帧;

步骤17:若车载平台接收到升级成功数据帧,则发送一个系统复位命令数据帧;否则返回步骤8继续尝试升级;在升级过程中只要发生错误,则返回步骤8继续尝试升级,这个尝试过程总共执行三次,若升级三次仍然不成功,则发送退出升级命令帧,若嵌入式设备端接收到系统复位命令帧,则产生一个软件系统复位,然后系统重新启动就可以运行刚升级的文件;若嵌入式设备接收到退出升级命令帧,则切回到正常运行模式,继续运行原先的功能代码。

在车载平台与嵌入式设备之间交互的通信协议中要有完善详尽的错误处理应答机制,一旦在升级过程中检测到错误(例如命令码无效、数据长度错误、校验码错误、未检测到帧结束符等),一定要让通信双方都知道具体是什么错误,然后各自针对具体的问题去做相应的处理,这在开发调试中具有重要的意义。在具体实施过程中采用如下通信格式:

车载平台发送数据格式如下表:

序号1234567起始符版本命令标志长度数据帧校验结束符字节数1111N字节(<255)21符号SOIVERCMDLTHINFOCRCEOI

嵌入式设备应答格式如下表:

序号12345678起始符版本命令标志应答状态长度数据帧校验结束符字节数11111N字节(0<=N<255)21符号SOIVERCMDRTNLTHINFOCRCEOI

SOI: 发送信息起始符=7EH (START OF INFORMATION)

EOI: 发送信息结束符=0DH (END OF INFORMATION)

VER:通信协议的版本(=10H,表示1.0)

CMD:命令内容,表示当前帧需要实现的功能

LTH: INFO数据段的长度,不大于255

INFO:传递的有效信息部分

RTN: 命令执行结果返回值,各种错误信息可以在该字节中定义

CRC: 传送一桢信息的16位CRC校验码

车载系统包括服务器、车载平台、设置在车载平台内的接口以及嵌入式设备,嵌入式设备作为车载平台的一个组成部分,通过接口与车载平台之间进行信息的交换,车载平台通过移动网络从服务器端下载bin格式的升级文件,然后将升级文件通过接口发送给嵌入式设备,完成嵌入式设备的升级过程。

在升级之前车载平台通过移动网络从远端服务器下载升级文件至本地,然后车载平台通过接口将升级文件传送给待升级的嵌入式设备,实现嵌入式设备的远程升级;

嵌入式设备从结构上映射为至少四个存储体:BootLoader区、用户代码1区、用户代码2区以及EEPROM数据区;

BootLoader区用于存放BootLoader程序,实现系统的启动、数据的搬移和程序的跳转功能;用户代码1区作为主功能存储区,功能代码总是从这里开始运行,并且完成升级文件的编程工作;用户代码2区作为辅助功能区,实现升级文件的暂时存储;EEPROM数据区用于记录升级过程及升级文件的属性等相关信息。

BootLoader区位于flash的起始位置,主要用来启动系统并且实现到用户代码的跳转。上电复位之后,车载系统首先运行BootLoader程序,BootLader根据EEPROM数据区中的升级标志位来做相应的处理:如果升级标志位置1,BoltLoader将校验用户代码2区中数据的正确性,如果校验正确,则将用户代码2区中的数据搬移到用户代码1区,然后跳转到用户代码1区去执行用户代码;如果升级标志位没有置1,则直接跳转到用户代码区1去执行用户。

由于默认中断向量表被BootLoader程序占用,用户代码要想正常响应中断,必须对中断向量表进行重映射,所以在用户功能代码中第一步就是要对中断向量表进行偏移设置。

用户代码1区作为主用户代码区,系统总是跳转到此处执行用户代码。应用程序可以工作在两种运行模式:正常工作模式和在线升级模式。正常工作模式是系统的默认工作模式,此时车载系统运行产品的功能代码,实现产品的正常功能;在线升级模式是指当程序运行在正常功能模式时,当嵌入式设备接收到车载平台的升级指令时,车载系统马上转为在线升级模式并且等待后续相关的升级指令。当车载平台发送升级命令后,应用程序进入升级模式,并将接收的代码数据包写入用户代码2区。在所有的数据包传送完成之后通过CRC循环冗余校验码来验证整个升级文件的完整性,如果整个升级文件传输正确,表示升级成功,在EEPROM数据区置升级成功标志位;否则程序退回到正常工作模式。整个升级过程在用户代码1区实现。

用户代码2区为用户文件暂存区,用于暂时存储升级文件。如果升级成功之后由BootLoader将用户代码2区中的数据搬移到用户代码1区。

EEPROM数据区用来存储升级文件的相关信息:升级标志、升级文件大小以及升级文件校验码。升级成功之后将上述陈列的信息更新到EEPROM区。然后当运行BootLoader时,对存储在用户代码2区的数据长度和校验码进行验证,如果验证通过则将用户代码2区的数据搬移到用户代码1区,然后跳转到用户代码1区去执行用户程序。

做为本发明的一个实施例:本发明的一种用于车载系统基于移动网络实现IAP远程升级的方法,将升级文件相关的功能放到了用户代码中,这与传统的IAP方式将升级文件功能代码放到BootLoader不同,这也是相对传统IAP方式非常重要的一个优点。传统的IAP升级方式在嵌入式设备接收到升级指令后的通常做法是产生一个系统软件复位使程序跳转到BootLoader处来处理后续升级相关的功能;本发明将升级相关的功能封装成一个软件模块,放到用户功能代码中,在正常执行用户代码过程中一旦接收到车载平台发送过来的升级命令,系统可以安全平稳的由正常工作模式切换到在线升级模式,执行升级功能模块;这样可以规避程序通过复位来实现程序的跳转,从某种意义上来说会显得更加的安全,同时BootLoader程序功能显得更加简洁,可以提高其在不同硬件平台之间的可移植性;更进一步说,在系统升级过程中无可避免的会发生一些意外事件导致升级失败,例如突然断电,车载平台突然死机等,传统的IAP升级方式在升级的过程中会覆盖掉原先的功能代码,如果升级失败将会导致系统不能正常工作,必须到设备现场进行处理,提高了系统维护的成本。但是本发明在升级的过程中会将升级文件暂存于用户代码2区,只有当验证升级成功之后才会将升级文件由用户代码2区搬移至主用户代码区,即使升级失败仍然可以继续运行原先的功能程序,不会影响系统的正常运行,这种升级方法可以将升级过程中的意外风险降至最低。

以上显示和描述了本发明的基本原理和主要特征和本发明的优点,对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号