RSU设备bootloader程序升级的方法、装置与流程

文档序号:11133685阅读:473来源:国知局
RSU设备bootloader程序升级的方法、装置与制造工艺

本发明涉及数据处理技术领域,特别涉及一种RSU设备中bootloader程序升级的方法、装置及RSU设备。



背景技术:

目前,在电子设备的应用中,用户应用程序会经常改变,为了电子设备可以方便的进行应用程序的更新,设计上会将用户应用程序与另外一个程序分离,通过另一个程序来加载、升级用户应用程序,一般叫这个程序为bootloader程序,其中一个重要的功能,就是通过它来升级应用层软件。bootloader和用户应用层会处于ROM的不同区间。bootloader支持串口和网络通信,当用户应用程序需求改变或者存在bug需要更新时,就可以通过网络和bootloader通信,对用户应用软件进行升级更新。

通过bootloader来对用户应用程序进行升级,将对工程应用产生很大的方便。bootloader一般会是比较可靠、不经常改变的。bootloader是设备出厂时,烧写完成的。很少会出现问题,但当其出现问题后,一般通过下载器重新烧写软件。对于在线的设备,工程维护就显得非常困难。例如在智能交通ETC领域中,RSU设备一般都安装在比较高的支架上,并且应用于不同地区时,每个地区可能对设备功能需求不一样,或者随着时间会提出不同的需求。当bootloader出现问题后,如果需要将设备拆下来进行烧写软件升级,将非常困难,需要消耗比较大的人力、物力;所以,对RSU设备软件升级的方便、智能,提出了很高的要求,若RSU设备中的bootloader出现故障的话,下载器重新烧写软件会异常艰难。

目前,也有少数采用双bootloader的方法对bootloader程序进行升级,但是需要将程序分为3部分即第一bootloader、第二bootloader、用户应用程序。通过第一bootloader来更新第二bootloader和用户应用程序,当第一bootloader出现问题后,通过第二bootloader来更新第一bootloader。但是双bootloader必然会占用大量的存储空间,造成存储空间的浪费,且进行bootloader程序升级时逻辑复杂。

因此,如何对bootloader程序进行升级时即简单又节省硬件资源,是本领域技术人员需要解决的技术问题。



技术实现要素:

本发明的目的是提供一种RSU设备中bootloader程序升级的方法、装置及RSU设备,利用软件更新原始bootloader程序,无需拆卸设备,大大减少了工程维护上人力、物力的投入,且利用单bootloader方式,节省存储资源,提高升级过程的可靠性。

为解决上述技术问题,本发明提供一种RSU设备中bootloader程序升级的方法,包括:

原始bootloader程序判断是否进入升级应用层软件模式;

若是,接收用户发送的数据包,所述数据包包括目标bootloader程序和替换程序;

执行所述替换程序,使所述目标bootloader程序替换所述原始bootloader程序。

其中,使所述目标bootloader程序替换所述原始bootloader程序之后,还包括:

设置应用层状态为无效。

其中,设置应用层状态为无效之后,还包括重置MCU。

其中,执行所述替换程序之前,还包括:

检测所述数据包是否有效;

若无效,设置应用层状态为无效,并重置MCU,并再次接收用户发送的数据包。

本发明还提供一种RSU设备中bootloader程序升级的装置,包括:

bootloader模块,用于根据原始bootloader程序判断是否进入升级应用层软件模式;

接收模块,用于若进入升级应用层软件模式,则接收用户发送的数据包,所述数据包包括目标bootloader程序和替换程序;

替换模块,用于执行所述替换程序,使所述目标bootloader程序替换所述原始bootloader程序。

其中,该装置还包括:

应用层状态设置模块,用于设置应用层状态为无效。

其中,该装置还包括MCU重置模块,用于重置MCU。

其中,该装置还包括:

检测模块,用于检测所述数据包是否有效;

其中,若所述检测模块检测为无效,则所述应用层状态设置模块设置应用层状态为无效,所述MCU重置模块重置MCU,且所述接收模块再次接收用户发送的数据包。

本发明还提供一种RSU设备,包括:根据上述任一项所述的RSU设备中bootloader程序升级的装置。

本发明所提供的RSU设备中bootloader程序升级的方法,包括:原始bootloader程序判断是否进入升级应用层软件模式;若是,接收用户发送的数据包,所述数据包包括目标bootloader程序和替换程序;执行所述替换程序,使所述目标bootloader程序替换所述原始bootloader程序;

可见,该方法利用软件更新原始bootloader程序,无需拆卸设备,大大减少了工程维护上人力、物力的投入,且利用单bootloader方式,节省存储资源,升级逻辑简单,提高升级过程的可靠性;本发明还提供了RSU设备中bootloader程序升级的装置及RSU设备,具有上述有益效果,在此不再赘述。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例所提供的RSU设备中bootloader程序升级的方法的流程图;

图2为本发明实施例所提供的单片机启动过程的流程示意图;

图3为本发明实施例所提供的另一RSU设备中bootloader程序升级的方法的流程图;

图4为本发明实施例所提供的RSU设备中bootloader程序升级的装置的结构框图;

图5为本发明实施例所提供的RSU设备中bootloader程序升级的装置的结构框图。

具体实施方式

本发明的核心是提供一种RSU设备中bootloader程序升级的方法、装置及RSU设备,利用软件更新原始bootloader程序,无需拆卸设备,大大减少了工程维护上人力、物力的投入,且利用单bootloader方式,节省存储资源,提高升级过程的可靠性。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在嵌入式操作系统中,bootloader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。因此整个系统的加载启动任务就完全由bootloader来完成。在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的bootloader程序。

请参考图1,图1为本发明实施例所提供的RSU设备中bootloader程序升级的方法的流程图;该方法可以包括:

S100、原始bootloader程序判断是否进入升级应用层软件模式;

S110、若是,接收用户发送的数据包,所述数据包包括目标bootloader程序和替换程序;

S120、执行所述替换程序,使所述目标bootloader程序替换所述原始bootloader程序。

其中,终端(例如含单片机的设备)启动时,会先进入到bootloader中执行原始bootloader程序,其会判断是否接收到用户指令进行应用层更新即是否进入到升级应用层软件模式(如串口下载模式);例如通过检测检测用户是否输入特定字符如A,若检测到则表明用户要进行应用层更新即进入升级应用层软件模式。若未接收到用户指令,则会检测应用层是否有效,当应用层有效时跳转到应用层执行应用层程序。

当原始bootloader程序根据接收到的用户指令判断出进入升级应用层软件模式后,则进入升级应用层软件模式下等待用户输入下载的数据。下面以单片机为例,请参考图2,APP即表示应用层,即bootloader加载应用层会先校验应用层是否为正确的应用层。当应用层有问题、无效时,不会跳到应用层执行。

本实施例即利用原始bootloader程序判断是否进入升级应用层软件模式,若是,则接收包括目标bootloader程序和替换程序的数据包,通过下载和执行该数据包最终实现对原始bootloader程序更新的目的。

其中,上述数据包中包含有替换程序以及目标bootloader程序即新bootloader可执行文件,具体的,本实施例提供的数据包中目标bootloader程序和用目标bootloader程序替换原始bootloader程序的执行程序即上述替换程序。通过执行该替换程序来用目标bootloader程序更换原始bootloader程序。实现对存在错误的原始bootloader程序的替换,即完成了对bootloader程序的升级。

基于上述技术方案,本发明实施例提供的RSU设备中bootloader程序升级的方法,在单bootloader的基础上,利用软件更新原始bootloader程序,无需拆卸设备,大大减少了工程维护上人力、物力的投入,且利用单bootloader方式,节省存储资源,特别对于嵌入式设备来讲,例如单片机为主控的设备,存储资源是非常有限的,若应用层如果太过复杂就会导致存储空间不够;升级逻辑简单,提高升级过程的可靠性,即利用替换程序(完成原始bootloader程序更新的逻辑)相对来说,逻辑比较简单,升级过程的可靠性会比较好;进一步,将替换程序(完成原始bootloader程序更新的逻辑)和目标bootloader可执行文件即目标bootloader程序合成一个数据包,通过原始bootloader程序升级后,替换程序自动完成对原始bootloader程序的更新,对原始bootloader程序更新的过程中,无需上位机参与,大大增加升级的速度(升级速度越快越好,避免升级过程中,设备突然掉电,导致对原始bootloader程序升级不成功,又对其已经产生了破坏,使设备无法恢复)和可靠性。

基于上述实施例,为了进一步提升升级过程中设备的可靠性,该方法使所述目标bootloader程序替换所述原始bootloader程序之后,还包括,设置应用层状态为无效。

因为在该替换过程中原始应用层被数据包替换,因此,需要在替换完成后设置应用层状态为无效,这样在终端执行完替换程序后不会再次进入该替换程序继续执行更换操作,直到用户下载执行新的正常使用的应用层程序。若在替换完成后不设置应用层状态为无效(例如设置应用层无效位为1,或者是设置应用层有效位为0等),则在用户下载执行新的正常使用的应用层程序之前,若启动设备,则系统操作系统会进入应用层重复执行该替换程序,一直进行bootloader升级操作,则会降低系统的可靠性。

下面通过具体例子说明该实施例,通过原始bootloader程序升级该数据包,然后原始bootloader程序跳转到替换程序执行。替换程序读取目标bootloader程序的内容,替换掉原始bootloader程序的内容。这样就完成了原始bootloader程序更新为目标bootloader程序。然后替换程序清除应用层有效位。因此MCU重启后进入bootloader存储区,因为此时应用层有效位为不正确即无效,设备处于bootloader存储区,不会跳转到应用层,并且目前的bootloader已经是升级后的最新bootloader程序了。那么就可以通过该目标bootloader程序重新升级用户需要的在线的实际应用层程序。

基于上述实施例,还可以通过重置MCU(例如复位MCU)实现在更新bootloader程序后,及时重启MCU,使MCU处于可以稳定状态即等待下载新的应用层程序的状态,减少MCU因为自身的问题,使设备增加不可靠的隐患。

基于上述技术方案,本发明实施例提供的RSU设备中bootloader程序升级的方法,实现自动更新bootloader的数据包,在实现原始bootloader更新完成后,就会被设置为无效,用户下载执行新的正常应用层程序时该数据包就会被清除掉,不会存在于设备中。节省存储资源,并且不会因为自身的问题,使设备增加不可靠的隐患。

请参考图3,图3为本发明实施例所提供的另一RSU设备中bootloader程序升级的方法的流程图;该方法可以包括:

S200、原始bootloader程序判断是否进入升级应用层软件模式;

S210、若是,接收用户发送的数据包,所述数据包包括目标bootloader程序和替换程序;

S220、检测所述数据包是否有效;

S230、若有效,执行所述替换程序,使所述目标bootloader程序替换所述原始bootloader程序;

S240、若无效,设置应用层状态为无效,并重置MCU,并再次接收用户发送的数据包。

具体的,当目标bootloader程序和替换程序组成的数据包后,具体执行过程如下:终端(例如MCU)启动,跳转到原始bootloader程序执行,原始bootloader程序跳转到替换程序执行,替换程序读取目标bootloader程序的数据,替换掉原始bootloader程序,设置应用层状态为无效(例如设置应用层有效位标识为无效)并重置终端(例如复位MCU)。终端重新启动,跳转到新的bootloader执行,等待用户升级用户应用程序。用户进行用户应用程序升级后,完成bootloader升级的数据包已经被清除,被用户应用程序覆盖了。设备进入用户应用程序的正常工作状态。

该实施例保证了数据包中数据的有效性,提高更新过程的可靠性,更新逻辑简单,且替换程序等不会占用存储空间。

基于上述技术方案,本发明实施例提的RSU设备中bootloader程序升级的方法,利用软件更新原始bootloader程序,无需拆卸设备,大大减少了工程维护上人力、物力的投入,且利用单bootloader方式,节省存储资源,提高升级过程的可靠性。

下面对本发明实施例提供的RSU设备中bootloader程序升级的装置及RSU设备进行介绍,下文描述的RSU设备中bootloader程序升级的装置及RSU设备与上文描述的RSU设备中bootloader程序升级的方法可相互对应参照。

请参考图4,图4为本发明实施例所提供的RSU设备中bootloader程序升级的装置的结构框图;该装置可以包括:

bootloader模块100,用于根据原始bootloader程序判断是否进入升级应用层软件模式;

接收模块200,用于若进入升级应用层软件模式,则接收用户发送的数据包,所述数据包包括目标bootloader程序和替换程序;

替换模块300,用于执行所述替换程序,使所述目标bootloader程序替换所述原始bootloader程序。

基于上述实施例,该装置还包括:

应用层状态设置模块,用于设置应用层状态为无效。

基于上述实施例,该装置还包括:MCU重置模块,用于重置MCU。

基于上述实施例,请参考图5,该装置还包括:

检测模块600,用于检测所述数据包是否有效;

其中,若所述检测模块600检测为无效,则所述应用层状态设置模块400设置应用层状态为无效,所述MCU重置模块500重置MCU,且所述接收模块200再次接收用户发送的数据包;若所述检测模块600检测为有效,则所述替换模块300执行所述替换程序,使所述目标bootloader程序替换所述原始bootloader程序。

本发明实施例还提供一种RSU设备,包括:根据上述任一实施例所述的RSU设备中bootloader程序升级的装置。

在ETC系统中,由于RSU设备安装在龙门架等高空支架上,当bootloader出现问题时,非常方便地进行软件的升级,无需拆卸设备,大大减少了工程上人力、物力的投入。其中,ETC(Electronic Toll Collection)不停车收费系统是目前世界上最先进的路桥收费方式。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的一种RSU设备中bootloader程序升级的方法、装置及RSU设备进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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