文档库 最新最全的文档下载
当前位置:文档库 › 启动加载程序更新方法和设备的制作流程

启动加载程序更新方法和设备的制作流程

启动加载程序更新方法和设备的制作流程
启动加载程序更新方法和设备的制作流程

本申请实施例提供一种启动加载程序更新方法和装置,启动加载程序更新方法包括:接收外部更新请求;判断第一启动加载程序是否有效,若第一启动加载程序有效,则根据更新请求对第二启动加载程序进行更新,若第一启动加载程序无效,则判断第二启动加载程序是否有效,若第二启动加载程序是有效,则根据更新请求对第一启动加载程序进行更新,能够通过设置第一启动加载程序和第二启动加载程序,改善启动加载程序更新失败导致的车载电脑刷死的问题。

权利要求书

1.一种启动加载程序更新方法,其特征在于,应用于车载电脑,所述车载电脑的内存中存储有第一启动加载程序和第二启动加载程序,所述方法包括:

接收外部更新请求;

判断所述第一启动加载程序是否有效,若所述第一启动加载程序有效,则根据所述更新请求对所述第二启动加载程序进行更新,若所述第一启动加载程序无效,则判断所述第二启动加载程序是否有效,若所述第二启动加载程序有效,则根据所述更新请求对所述第一启动加载程序进行更新。

2.根据权利要求1所述的方法,其特征在于,判断所述第一启动加载程序是否有效的步骤包括:

判断所述第一启动加载程序的标识信息是否有效,若所述标识信息有效,则判断所述第一启动加载程序是否完整;若所述标识信息无效,则判断所述第二启动加载程序是否有效;

若所述第一启动加载程序完整,则判断所述第一启动加载程序的程序地址是否正确;若所述第一启动加载程序不完整,则判断所述第二启动加载程序是否有效;

若所述第一启动加载程序的程序地址正确,则判定所述第一启动加载程序有效;若所述第一启动加载程序的程序地址不正确,则判断所述第二启动加载程序是否有效。

3.根据权利要求2所述的方法,其特征在于,所述车载电脑的内存中存储有第一启动加载程序的第一数据头,所述第一数据头中包括第一启动加载程序的启动确认码,所述判断所述第一启动加载程序的标识信息是否有效的步骤包括:

判断所述第一启动加载程序的启动确认码是否与预设启动确认码一致,若是,则判定所述第一启动加载程序的标识信息有效,若否,则判定所述第一启动加载程序的标识信息无效。

4.根据权利要求3所述的方法,其特征在于,所述第一数据头中还包括第一启动加载程序的校验起始地址和校验结束地址,所述判断所述第一启动加载程序是否完整的步骤包括:

根据所述第一启动加载程序的校验起始地址和校验结束地址计算得到所述第一启动加载程序的程序循环冗余校验值,判断所述第一启动加载程序的程序循环冗余校验值与预设的程序校验循环冗余校验值是否一致,若是,则判定所述第一启动加载程序完整,若否,则判定所述第一启动加载程序不完整。

5.根据权利要求3所述的方法,其特征在于,所述第一数据头中还包括第一启动加载程序的程序起始地址,所述判断所述第一启动加载程序的程序地址是否正确的步骤包括:

根据所述第一启动加载程序的程序起始地址,计算得到所述第一启动加载程序的地址循环冗余校验值,判断所述第一启动加载程序的地址循环冗余校验值与预设的地址校验循环冗余校验值是否一致,若是,则判定所述第一启动加载程序的程序地址正确,若否,则判定所述第一启动加载程序的程序地址不正确。

6.根据权利要求3所述的方法,其特征在于,所述车载电脑的内存中存储有第二启动加载程序的第二数据头,所述根据所述更新请求对所述第二启动加载程序进行更新的步骤包括:

擦除所述第二数据头的数据;

接收程序更新文件,并用所述程序更新文件覆盖所述第二启动加载程序原有的文件,并更新所述第二数据头,得到更新后的第二启动加载程序。

7.根据权利要求6所述的方法,其特征在于,所述方法还包括:

获取所述第一启动加载程序和所述更新后的第二启动加载程序的版本号,判断所述第一启动加载程序的版本号和所述更新后的第二启动加载程序的版本号是否不一致,若是,则根据版本号较高的启动加载程序更新版本号较低的启动加载程序。

8.一种启动加载程序更新装置,其特征在于,应用于车载电脑,所述车载电脑的内存中存储有第一启动加载程序和第二启动加载程序,所述装置包括:

接收模块,用于接收外部更新请求;

更新模块,用于判断所述第一启动加载程序是否有效,若所述第一启动加载程序有效,则根据所述更新请求对所述第二启动加载程序进行更新,若所述第一启动加载程序无效,则判断所述第二启动加载程序是否有效,若所述第二启动加载程序有效,则根据所述更新请求对所述第一启动加载程序进行更新。

9.一种计算机设备,其特征在于,所述计算机设备与终端设备通信连接,所述计算机设备包括处理器及存储有计算机指令的非易失性存储器,所述计算机指令被所述处理器执行时,所

述计算机设备执行权利要求1-7中任意一项所述的启动加载程序更新方法。

10.一种可读存储介质,其特征在于,所述可读存储介质包括计算机程序,所述计算机程序运行时控制所述可读存储介质所在计算机设备执行权利要求1-7中任意一项所述的启动加载程序更新方法。

技术说明书

启动加载程序更新方法和装置

技术领域

本申请涉及汽车安全领域,具体而言,涉及一种启动加载程序更新方法和装置。

背景技术

目前,车载电脑(Electronic Control Unit,简称ECU)已经普及,在ECU运行之前,都会运行启动加载程序(Bootloader)来初始化硬件设备、建立内存空间映射图,从而将ECU的软硬件环境带到一个合适状态。然而现有的ECU大多都是具备单层的Bootloader,当在开发阶段或者量产阶段软件因缺陷、法规等原因,需要升级Bootloader时,更新过程中若出现断电或其他故障导致更新中断,会使ECU刷死,无法自行恢复,只能将ECU拆卸返厂维修,十分不便。

有鉴于此,如何提供一种可靠的Bootloader更新方案,是本领域技术人员需要解决的。

技术内容

本申请一种启动加载程序更新方法、装置、计算机设备和可读存储介质。

本申请的实施例可以这样实现:

第一方面,本申请实施例提供一种启动加载程序更新方法,应用于车载电脑,所述车载电脑的内存中存储有第一启动加载程序和第二启动加载程序,所述方法包括:

接收外部更新请求;

判断所述第一启动加载程序是否有效,若所述第一启动加载程序有效,则根据所述更新请求对所述第二启动加载程序进行更新,若所述第一启动加载程序无效,则判断所述第二启动加载程序是否有效,若所述第二启动加载程序有效,则根据所述更新请求对所述第一启动加载程序进行更新。

在可选的实施方式中,判断所述第一启动加载程序是否有效的步骤包括:

判断所述第一启动加载程序的标识信息是否有效,若所述标识信息有效,则判断所述第一启动加载程序是否完整;若所述标识信息无效,则判断所述第二启动加载程序是否有效;

若所述第一启动加载程序完整,则判断所述第一启动加载程序的程序地址是否正确;若所述第一启动加载程序不完整,则判断所述第二启动加载程序是否有效;

若所述第一启动加载程序的程序地址正确,则判定所述第一启动加载程序有效;若所述第一启动加载程序的程序地址不正确,则判断所述第二启动加载程序是否有效。

在可选的实施方式中,所述车载电脑的内存中存储有第一启动加载程序的第一数据头,所述第一数据头中包括第一启动加载程序的启动确认码,所述判断所述第一启动加载程序的标识信息是否有效的步骤包括:

判断所述第一启动加载程序的启动确认码是否与预设启动确认码一致,若是,则判定所述第一启动加载程序的标识信息有效,若否,则判定所述第一启动加载程序的标识信息无效。

在可选的实施方式中,所述第一数据头中还包括第一启动加载程序的校验起始地址和校验结束地址,所述判断所述第一启动加载程序是否完整的步骤包括:

根据所述第一启动加载程序的校验起始地址和校验结束地址计算得到所述第一启动加载程序的程序循环冗余校验值,判断所述第一启动加载程序的程序循环冗余校验值与预设的程序校验循环冗余校验值是否一致,若是,则判定所述第一启动加载程序完整,若否,则判定所述第一启动加载程序不完整。

在可选的实施方式中,所述第一数据头中还包括第一启动加载程序的程序起始地址,所述判断所述第一启动加载程序的程序地址是否正确的步骤包括:

根据所述第一启动加载程序的程序起始地址,计算得到所述第一启动加载程序的地址循环冗余校验值,判断所述第一启动加载程序的地址循环冗余校验值与预设的地址校验循环冗余校验值是否一致,若是,则判定所述第一启动加载程序的程序地址正确,若否,则判定所述第一启动加载程序的程序地址不正确。

在可选的实施方式中,所述车载电脑的内存中存储有第二启动加载程序的第二数据头,所述根据所述更新请求对所述第二启动加载程序进行更新的步骤包括:

擦除所述第二数据头的数据;

接收程序更新文件,并用所述程序更新文件覆盖所述第二启动加载程序原有的文件,并更新所述第二数据头,得到更新后的第二启动加载程序。

在可选的实施方式中,所述方法还包括:

获取所述第一启动加载程序和所述更新后的第二启动加载程序的版本号,判断所述第一启动加载程序的版本号和所述更新后的第二启动加载程序的版本号是否不一致,若是,则根据版本号较高的启动加载程序更新版本号较低的启动加载程序。

第二方面,本申请实施例提供一种启动加载程序更新装置,应用于车载电脑,所述车载电

脑的内存中存储有第一启动加载程序和第二启动加载程序,所述装置包括:

接收模块,用于接收外部更新请求;

更新模块,用于判断所述第一启动加载程序是否有效,若所述第一启动加载程序有效,则根据所述更新请求对所述第二启动加载程序进行更新,若所述第一启动加载程序无效,则判断所述第二启动加载程序是否有效,若所述第二启动加载程序有效,则根据所述更新请求对所述第一启动加载程序进行更新。

第三方面,本申请实施例提供一种计算机设备,所述计算机设备与终端设备通信连接,所述计算机设备包括处理器及存储有计算机指令的非易失性存储器,所述计算机指令被所述处理器执行时,所述计算机设备执行前述实施方式中任意一项所述的启动加载程序更新方法。

第四方面,本申请实施例提供一种可读存储介质,所述可读存储介质包括计算机程序,所述计算机程序运行时控制所述可读存储介质所在计算机设备执行前述实施方式中任意一项所述的启动加载程序更新方法。

本申请实施例的有益效果包括,例如:

采用本申请实施例提供的启动加载程序更新方法、装置、计算机设备及可读存储介质,通过将启动加载程序巧妙地分层,改善了现有技术中单层启动加载程序在更新过程中出现意外导致车载电脑刷死,用户无法自行恢复的问题。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本申请实施例提供的启动加载程序更新方法的步骤流程示意图;

图2为图1中步骤S202的子步骤流程示意图;

图3为本申请实施例提供的启动加载程序更新装置的结构示意框图;

图4为本申请实施例提供的计算机设备的结构示意框图。

图标:100-计算机设备;110-启动加载程序更新装置;1101-接收模块;1102-更新模块;111-存储器;112-处理器;113-通信单元。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

在本申请的描述中,需要说明的是,若出现术语“上”、“下”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该技术产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。

此外,若出现术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

需要说明的是,在不冲突的情况下,本申请的实施例中的特征可以相互结合。

目前,车载电脑(Electronic Control Unit,简称ECU)中的启动加载程序(Bootloader)都是单层设置,当Bootloader需要升级时,一般是由用户使用外部设备与ECU连接更新Bootloader,而在更新过程中,若出现意外故障(例如,断电)会导致ECU被刷死,用户无法自行修复,只能将ECU拆卸下来或者将车辆返厂维修,十分的不便。为了解决这个问题,本实施例提供了一种启动加载程序更新方法,如图1所示,启动加载程序更新方法包括步骤S201至步骤S206。

步骤S201,接收外部更新请求。

步骤S202,判断所述第一启动加载程序是否有效,若所述第一启动加载程序有效,则执行步骤S203,若所述第一启动加载程序无效,则执行步骤S204。

步骤S203,根据所述更新请求对所述第二启动加载程序进行更新。

步骤S204,判断所述第二启动加载程序是否有效,若所述第二启动加载程序有效,则执行步骤S205,若所述第二启动加载程序无效,则执行步骤S206。

步骤S205,根据所述更新请求对所述第一启动加载程序进行更新。

步骤S206,提示无法更新。

可以对Bootloader进行分层操作,将其分为第一启动加载程序和第二启动加载程序,第一启动加载程序和第二启动加载程序都能作为独立的程序完成ECU的初始化硬件设备等功能。在收到外部设备发送的外部更新请求时,可以先判断第一启动加载程序是否有效,即第一启动加载程序是否能正常的运行,若第一启动加载程序可以正常运行,可以开始根据外部更新请求,对第二启动加载程序进行更新,此时即使出现意外情况,也只会导致第二启动加载程序无法使用,第一启动加载程序不会受到影响,可以正常使用。若第一启动加载程序无效,即第一启动加载程序当前不能正常使用,可以判断第二启动加载程序是否能正常运行,若第二启动加载程序可以正常运行,可以根据外部更新请求对第一启动加载程序进行更新,此时即

使更新过程中出现问题,也不会影响第二启动加载程序的正常运行。通过对第一启动加载程序和第二启动加载程序进行是否有效的判断,为了保证两者中至少存在一个能够正常运行,以保证在另一个启动加载程序更新中出现意外时,ECU也能够正常使用以及恢复更新失败的启动加载程序。在判断出第一启动加载程序和第二启动加载程序都不能正常使用时,此时为了防止ECU被刷死而无法恢复,可以提示用户此时无法更新,可以先排查出无法正常运行的原因,在至少一个启动加载程序能够正常使用时,可以采用前述步骤进行更新的操作。

在此基础上,判断所述第一启动加载程序是否有效可以通过步骤S2021至步骤S2027实现,如图2所示。

步骤S2021,判断所述第一启动加载程序的标识信息是否有效,若所述标识信息有效,则执行步骤S2022,若所述标识信息无效,则执行步骤S2023。

步骤S2022,判断所述第一启动加载程序是否完整。

步骤S2023,判断所述第二启动加载程序是否有效。

若所述第一启动加载程序完整,则执行步骤S2024,若所述第一启动加载程序不完整,则执行步骤S2025。

步骤S2024,判断所述第一启动加载程序的程序地址是否正确。

步骤S2025,判断所述第二启动加载程序是否有效。

若所述第一启动加载程序的程序地址正确,则执行步骤S2026,若所述第一启动加载程序的程序地址不正确,则执行步骤S2027。

步骤S2026,判定所述第一启动加载程序有效。

步骤S2027,判断所述第二启动加载程序是否有效。

可以通过判断第一启动加载程序的标识信息是否有效、第一启动加载程序是否完整和第一启动加载程序的程序地址来判断第一启动加载程序是否能正常运行,其中,第一启动加载程序的标识信息可以是预先设置的,当标识信息被改变时,可以直观的判断出第一启动加载程序此时不能使用,不需要进行下一步判断,节约了整个判断流程的时间。第一启动加载程序是否完整是指第一启动加载程序本身是否完成,如果有代码缺失,那么第一启动加载程序便不能够正常运行,而在第一启动加载程序完整的情况下,若第一启动加载程序不在正确的位置上存储,也不能正常运行,因此还可以对第一启动加载程序的程序地址进行判断,只有第一启动加载程序在正确的位置,第一启动加载程序才能够正常运行,通过上述三个步骤,能够较为准确的判断第一启动加载程序是否有效,降低了误判的概率,当判断出第一启动加载程序不能正常运行时,可以开始对第二启动加载程序进行判断,判断流程可以与判断第一启动加载程序的步骤一致。

在车载电脑的内存中可以存储有第一启动加载程序的第一数据头,第一数据头中可以包括第一启动加载程序的启动确认码,具体可以参照表一,表一为第一数据头中存储的信息。

表一

在前述基础上,本实施例体用一种判断所述第一启动加载程序的标识信息是否有效的示例,可以通过以下步骤实现:

判断所述第一启动加载程序的启动确认码是否与预设启动确认码一致,若是,则判定所述第一启动加载程序的标识信息有效,若否,则判定所述第一启动加载程序的标识信息无效。

可以用启动确认码ConfirmationCode作为标识信息作为初步判断第一启动加载程序是否有效的依据,若ConfirmationCode不完整,可以认为第一启动加载程序无效。

请再次参照表一,第一数据头中还包括第一启动加载程序的校验起始地址CheckStartAdderss 和校验结束地址CheckEndAddress,本实施例还提供一种判断所述第一启动加载程序是否完整的示例,可以通过以下步骤实现:

可以根据所述第一启动加载程序的校验起始地址和校验结束地址计算得到所述第一启动加载程序的程序循环冗余校验值,判断所述第一启动加载程序的程序循环冗余校验值与预设的程序校验循环冗余校验值是否一致,若是,则判定所述第一启动加载程序完整,若否,则判定所述第一启动加载程序不完整。

可以通过第一启动加载程序的校验起始地址CheckStartAdderss和校验结束地址CheckEndAddress计算得到第一启动加载程序的程序循环冗余校验值(CRC32值),然后可以将计算得到的程序循环冗余校验值与预设的程序校验循环冗余校验值(CodeCRC)进行比较,若一致,则说明第一启动加载程序是完整的。

请再次参照表一,所述第一数据头中还包括第一启动加载程序的程序起始地址StartAddress,所述判断所述第一启动加载程序的程序地址是否正确的步骤包括:

根据所述第一启动加载程序的程序起始地址,计算得到所述第一启动加载程序的地址循环冗余校验值,判断所述第一启动加载程序的地址循环冗余校验值与预设的地址校验循环冗余校验值是否一致,若是,则判定所述第一启动加载程序的程序地址正确,若否,则判定所述第一启动加载程序的程序地址不正确。

可以通过第一启动加载程序的程序起始地址StartAddress计算第一数据头中前24个字节的CRC值,然后用该CRC值与预存的HeadCRC值进行比较,若相同,则说明第一启动加载程序的程序起始地址正确。

车载电脑的内存中还存储有第二启动加载程序的第二数据头,第二数据头中存储的内容可以与第一数据头存储的内容对应,在判断完成第一启动加载程序后,本实施例提供了一种根据外部更新请求对所述第二启动加载程序进行更新的示例,可以通过以下步骤实现:

擦除所述第二数据头的数据。

接收程序更新文件,并用所述程序更新文件覆盖所述第二启动加载程序原有的文件,并更新所述第二数据头,得到更新后的第二启动加载程序。

在判断出第一启动加载程序可以正常使用后,可以开始对第二启动程序进行更新,此时更新过程中即使出现问题,也不会对第一启动加载程序造成影响,可以先将第二数据头中的数据擦除,然后接收外部设备传输的程序更新文件,用程序更新文件覆盖原有的文件,并且将第二数据头中的信息对应更新,可以得到更新后的第二启动加载程序。

在第二启动加载程序更新完成后,本实施例还提供一种对第一启动加载程序进行更新的示例,可以通过如下步骤实现:

获取所述第一启动加载程序和所述更新后的第二启动加载程序的版本号,判断所述第一启动加载程序的版本号和所述更新后的第二启动加载程序的版本号是否不一致,若是,则根据版本号较高的启动加载程序更新版本号较低的启动加载程序。

请返回参照表1,第一数据头中可以存储有第一启动加载程序的版本号BLVersion,第二数据头中也可以对应存储第二启动加载程序的版本号BLVersion,可以通过比较第一启动加载程序和第二启动加载程序的BLVersion来判断第一启动加载程序和第二启动加载程序的版本的高低,在判断出二者的版本号不一致时,会将版本号更高的启动加载程序copy至版本号较低的启动加载程序中,以保证第一启动加载程序和第二启动加载程序的版本保持一致且均为最新。除此之外,还可以在判断出第一启动加载程序和第二启动加载程序中的某一个出现故障时,利用另一个能够正常使用的启动加载程序对出现故障的启动加载程序进行恢复,不需要将整个ECU拆卸进行返厂维修。

本实施例还提供一种启动加载程序更新装置110,如图3所示,所述启动加载程序更新装置110包括:

接收模块1101,用于接收外部更新请求。

更新模块1102,用于判断所述第一启动加载程序是否有效,若所述第一启动加载程序有效,则根据所述更新请求对所述第二启动加载程序进行更新,若所述第一启动加载程序无效,则判断所述第二启动加载程序是否有效,若所述第二启动加载程序有效,则根据所述更新请求对所述第一启动加载程序进行更新。

在本实施例中,启动加载程序更新装置110的实现原理与前述启动加载程序更新方法的实现原理相同,在此不再赘述。

本实施例还提供一种计算机设备100,所述计算机设备100与终端设备通信连接,所述计算机设备100包括处理器及存储有计算机指令的非易失性存储器,所述计算机指令被所述处理器执行时,所述计算机设备100执行前述的启动加载程序更新方法。如图4所示,图4为本申请实施例提供的计算机设备100的结构框图。所述计算机设备100包括启动加载程序更新装置110、存储器111、处理器112及通信单元113。

所述存储器111、处理器112以及通信单元113各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述启动加载程序更新装置110包括至少一个可以软件或固件(firmware)的形式存储于所述存储器111中或固化在所述计算机设备100的操作系统(operating system,OS)中的软件功能模块。所述处理器112用于执行所述存储器111中存储的可执行模块,例如所述启动加载程序更新装置110所包括的软件功能模块及计算机程序等。

其中,所述存储器111可以是,但不限于,随机存取存储器(Random

AccessMemory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(ProgrammableRead-Only Memory,PROM),可擦除只读存储器(Erasable Programmable Read-OnlyMemory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-OnlyMemory,EEPROM)等。

本实施例还提供一种可读存储介质,所述可读存储介质包括计算机程序,所述计算机程序运行时控制所述可读存储介质所在计算机设备100执行前述的启动加载程序更新方法。

综上所述,本申请实施例提供了一种启动加载程序更新方法、装置、计算机设备和可读存储介质。通过将现有的启动加载程序分为第一启动加载程序和第二启动加载程序,以便在进行启动加载程序更新时,可以保证至少一个启动加载程序能够正常运行,改善了在启动加载程序更新出现意外时,ECU会被刷死,而用户无法自行恢复,只能将ECU拆卸进行返厂维修的问题。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

相关文档