固件升级方法及电子设备与流程

文档序号:14175028阅读:359来源:国知局
固件升级方法及电子设备与流程

本发明涉及船体设备升级技术领域,尤其是涉及一种固件升级方法及电子设备。



背景技术:

当前的船体固件升级中,从主机端读取一个数据块开始,至数据块写入存储器为止,即为传输一个数据块的完整过程。该过程中的每一个步骤都要等待上一个步骤执行完才能执开始下一个步骤。当传输一个数据块的所有步骤结束后,才能开始下一个数据块的传输,直至固件数据的所有数据块都写入设备端的存储器。这种传输方式需要消耗大量时间,传输效率较低。



技术实现要素:

有鉴于此,本发明的目的在于提供一种固件升级方法及电子设备,以缓解了现有技术中的船体固件升级存在有传输效率差的技术问题。

第一方面,本发明实施例提供了一种固件升级方法,应用于上位机,包括:

读取预设发送状态表,所述预设发送状态表包含升级固件中多个数据块的数据块地址及数据块的发送状态;

发送所述预设发送状态表中状态为未发送的数据块;

当接收到下位机发送的确认信息时,将所述预设发送状态表中与所述确认信息中的数据块地址对应的数据块的发送状态修改为已发送;

当所述预设发送状态表中状态为未发送的数据块全部发送完毕,读取所述预设发送状态表,直至预设发送状态表中的多个数据块的发送状态均为已发送。

结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,发送所述预设发送状态表中状态为未发送的数据块,包括:

按照预设间隔时间逐个发送所述预设发送状态表中未发送的数据块。

结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,所述方法还包括:

当预设发送状态表中的多个数据块的发送状态均为已发送时,向下位机发送文件发送完毕指令,所述文件发送完毕指令中包含所述升级固件的md5码。

第二方面,本发明实施例还提供一种固件升级方法,应用于下位机,包括:

当接收到上位机发送的升级固件中的数据块时,将所述数据块的数据块地址及接收时刻存储到预设数据块地址表中,并将接收到的所述数据块按照接收时刻的先后顺序写入第一临时文件;

当升级固件中的多个数据块全部写入完毕时,按照预设数据块地址表中数据块地址的顺序,将所述第一临时文件中的多个数据块存入第二临时文件。

结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,将接收到的所述数据块按照接收时刻的先后顺序写入第一临时文件,包括:

检测接收到的所述数据块的数据块地址是否存在于所述数据块地址列表内;

若接收到的所述数据块的数据块地址已存在于所述数据块地址列表内,返回确认信息。

结合第二方面,本发明实施例提供了第二方面的第二种可能的实施方式,其中,所述方法还包括:

对所述第二临时文件进行md5码校验;

当校验不通过时,返回校验失败信息给所述上位机;

当校验通过时,将所述第二临时文件重命名为预设名称。

结合第二方面,本发明实施例提供了第二方面的第三种可能的实施方式,其中,所述方法还包括:

检测sd存储卡内是否存在备份文件;

若存在所述备份文件,擦除flash存储器,并将所述备份文件写入所述flash存储器;

对所述flash存储器中的备份文件进行校验;

若所述flash存储器中的备份文件的校验值和所述sd存储卡内的备份文件的校验值一致,删除所述sd存储卡内的备份文件。

结合第二方面,本发明实施例提供了第二方面的第四种可能的实施方式,其中,所述方法还包括:

当所述sd存储卡中不存在备份文件时,检测所述sd存储卡里是否存在有升级文件;

若存在所述升级文件,备份所述flash存储器中的数据,擦除所述flash存储器,并将所述升级文件写入所述flash存储器;

对所述flash存储器中的备份文件进行校验;

若所述flash存储器中的升级文件的校验值和所述sd存储卡内的升级文件的校验值一致,删除所述sd存储卡内的升级文件。

第三方面,本发明实施例还提供一种具有处理器可执行的非易失的程序代码的计算机可读介质,所述程序代码使所述处理器执行第二方面所述的方法。

第四方面,本发明实施例还提供一种具有处理器可执行的非易失的程序代码的计算机可读介质,所述程序代码使所述处理器执行第二方面所述的方法。

本发明实施例带来了以下有益效果:本发明实施例提供的一种固件升级方法及电子设备,采用异步交互的方式处理固件文件分割成的多个数据块,提高数据块的传输速度,高效完成固件升级。

本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

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

图1为本发明一个实施例提供的固件升级方法的流程图;

图2为本发明另一个实施例提供的固件升级方法的流程图;

图3为本发明另一个实施例提供的固件升级方法的流程图;

图4为本发明另一个实施例提供的固件升级方法的流程图。

具体实施方式

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

目前,现有技术中的船体固件升级存在有传输效率较差的技术问题,基于此,本发明实施例提供的一种固件升级方法及电子设备,可以采用异步交互的方式处理固件文件分割成的多个数据块,提高数据块的传输速度,高效完成固件升级。

如图1所示,在本发明的一个实施例中,提供了一种固件升级方法,应用于上位机,包括以下几个步骤。

s101,读取预设发送状态表,所述预设发送状态表包含升级固件中多个数据块的数据块地址及数据块的发送状态。

具体的,在文件传输过程中,上位机将建立三个线程,即主线程、发送线程和接收线程。上位机可以为手机app或pc。

主线程:读取升级固件,根据升级固件大小将升级固件分割成多个数据块,并根据数据块的数据块地址(即数据块在升级固件中的地址)创建一个数据块发送状态列表。

s102,发送所述预设发送状态表中状态为未发送的数据块。

在发送线程中,每轮循环从数据块发送状态列表按照预设间隔时间逐个发送数据块列表中状态为未发送的数据块。其中,预设间隔时间可以为x毫秒,x的大小由下位机的存储性能决定。由于是异步交互,不必等待下位机(即船体)回复应答,即发送下一个数据块。在一轮循环发送之后,检测数据块发送状态列表中是否存在未发送的数据块,若仍存在状态为未发送的数据块,则重复上述发送过程。

s103,当接收到下位机发送的确认信息时,将所述预设发送状态表中与所述确认信息中的数据块地址对应的数据块的发送状态修改为已发送。

在接收线程中,每接收到下位机的接收确认消息后,根据接收确认消息里面的数据块地址修改数据块发送状态列表中的该数据块的发送状态为已发送。其中,数据块消息都有两个字节的crc校验码用于消息确认。

s104,当所述预设发送状态表中状态为未发送的数据块全部发送完毕,读取所述预设发送状态表,直至预设发送状态表中的多个数据块的发送状态均为已发送。

具体的,步骤s103和步骤s104没有时间先后顺序,可以循环进行。

本发明实施例提供的一种固件升级方法,采用异步交互的方式处理固件文件分割成的多个数据块,提高数据块的传输速度,高效完成固件升级。

如图2所示,在前述实施例的基础上,本发明的又一实施例中,所述方法还包括以下步骤。

s105,当预设发送状态表中的多个数据块的发送状态均为已发送时,向下位机发送文件发送完毕指令,所述文件发送完毕指令中包含所述升级固件的md5码。

具体的,在发送线程中,当数据块发送全部接收到确认信息,且数据块发送状态列表中的多个数据块的发送状态均为已发送时,发送线程终止,并通过主线程发送文件发送完毕指令。

如图3所示,在本发明的又一实施例中,提供了一种固件升级方法,应用于下位机,包括以下几个步骤。

s201,当接收到上位机发送的升级固件中的数据块时,将所述数据块的数据块地址及接收时刻存储到预设数据块地址表中,并将接收到的所述数据块按照接收时刻的先后顺序写入第一临时文件。

具体的,下位机建立一个数据块地址列表,每当接收到一个数据块,将该数据块的数据块地址按时间先后顺序保存在数据块地址列表中,并将数据块按时间先后顺序写入第一临时文件(不管该数据块在源文件中的地址)。为了避免重复写入,将数据块写入第一临时文件时会先检测该数据块的数据块地址是否已经存在于数据块地址列表中,若已存在则忽略直接返回确认信息,或者将数据块保存在数据块地址表,且写入完毕后返回确认信息。

s202,当升级固件中的多个数据块全部写入完毕时,按照预设数据块地址表中数据块地址的顺序,将所述第一临时文件中的多个数据块存入第二临时文件。

具体的,当下位机接收到上位机的发送完毕指令后进行文件重组:对写完的第一临时文件,在数据块地址表中,按照数据块在源文件中的地址大小顺序将数据块从第一临时文件中读出,并写入一个新的临时文件(即第二临时文件)。

在前述实施例的基础上,本发明的又一实施例中,所述固件升级方法中还包括:文件校验,其具体流程如下。

对所述第二临时文件进行md5码校验。

当校验不通过时,返回校验失败信息给所述上位机。

当校验通过时,将所述第二临时文件重命名为预设名称。

具体的,上位机发送的发送完毕指令中附加源文件的md5码,下位机对重组后的第二临时文件进行md5校验判断文件是否一致,若不一致则返回文件校验失败给上位机。若校验一致则将重组后的第二临时文件重新命名为y(代称),方便查找第二临时文件。

如图4所示,在本发明的又一实施例中,所述固件升级方法中的烧写固件包括以下步骤。

下位机系统重启后进入bootloader,bootloader的具体流程如下:

检测备份文件。检测备份文件是为了防止升级失败的救机措施。

当bootloader初始化完毕之后,先检测sd存储卡内是否存在备份文件。

若sd存储卡内存在所述备份文件,擦除flash存储器,并将所述备份文件写入所述flash存储器。

对所述flash存储器中的备份文件进行crc32校验。

若所述flash存储器中的备份文件的crc32值和所述sd存储卡内的备份文件的crc32值一致,删除所述sd存储卡内的备份文件,跳转至app。

若所述flash存储器中的备份文件的crc32值和所述sd存储卡内的备份文件的crc32值不一致,将备份文件重新写入flash存储器。

检测升级文件。

当所述sd存储卡中不存在备份文件时,检测所述sd存储卡里是否存在有升级文件。若不存在升级文件,直接跳转到app。

若存在所述升级文件,先备份所述flash存储器中的数据,再擦除所述flash存储器,并将所述升级文件写入所述flash存储器。

之后对所述flash存储器中的备份文件进行crc32校验。

若所述flash存储器中的升级文件的crc32值和所述sd存储卡内的升级文件的crc32值一致,删除所述sd存储卡内的升级文件,跳转至app。

若所述flash存储器中的升级文件的crc32值和所述sd存储卡内的升级文件的crc32值不一致,将升级文件重新写入flash存储器。

本发明的又一实施例中,还提供了一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述程序代码使所述处理器执行应用于下位机的固件升级方法。

本发明的又一实施例中,还提供了一种具有处理器可执行的非易失的程序代码的计算机可读介质,所述程序代码使所述处理器执行应用于下位机的固件升级方法。

本发明实施例所提供的固件升级方法、装置以及系统的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。

在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

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