嵌入式设备固件更新方法、嵌入式设备及开发端设备技术

技术编号:34240709 阅读:10 留言:0更新日期:2022-07-24 09:11
本申请公开了一种嵌入式设备固件更新方法、嵌入式设备、开发端设备以及嵌入式设备固件更新系统,嵌入式设备从源设备获取补丁数据,解压后得到原始差分编码数据;分次获取原始差分编码数据中的数据块,依据用于指示当前所执行操作的状态标识对数据块分别执行对应的操作,直到对原始差分编码数据完成差分解码。本申请可以分次执行差分解码,差分解码后得到的数据可以及时写入指定的存储分区中去,避免了将过多数据暂存到内存中,造成对设备内存的消耗,从而使增量更新方法在资源受限如内存较小的物联网设备上也可以正常运行。并且,本申请提供的增量更新方案中内存消耗可以灵活控制,且可以与各种支持流式解压的算法结合使用,扩展性更好。扩展性更好。扩展性更好。

Firmware update method of embedded device, embedded device and development end device

【技术实现步骤摘要】
嵌入式设备固件更新方法、嵌入式设备及开发端设备


[0001]本申请涉及嵌入式
,尤其涉及一种嵌入式设备固件更新方法、嵌入式设备、开发端设备以及嵌入式设备固件更新系统。

技术介绍

[0002]物联网技术的快速发展促进了低成本嵌入式设备的大规模使用,这些低成本嵌入式设备被广泛部署在智能家居、智慧工业和医疗保健等应用场景中,完成智能感知、智能控制、智能组网等功能。在嵌入式设备中,固件通常存储在闪存(Flash)、SD卡和固态硬盘等非易失性存储设备上,设备启动后将存储的固件加载到RAM内存中执行指定的功能。固件定义了产品的主要功能,设备厂商经常通过FOTA(Firmware Over the Air)远程固件更新技术对设备软件进行快速迭代,来满足市场对产品功能的需求,改善用户体验,远程修复固件的安全漏洞。
[0003]实现固件更新的基本条件之一是将更新固件数据传输到待更新的设备端。根据对传输的更新固件数据的处理方法,可以将固件更新分为以下几种:
[0004](1)全量更新:该种固件更新方式采用直接将编译生成的更新固件发送到待升级设备;
[0005](2)压缩更新:该种固件更新方式将编译生成的更新固件数据经过压缩算法进行压缩,然后将压缩得到的压缩数据发送到待升级设备;
[0006](3)增量更新(也称为差分更新):如图1所示,该种固件更新方式可以分为生成补丁数据和应用补丁数据两个过程。在开发端设备,利用更新固件数据、旧固件数据,进行差分得到补丁数据。在嵌入式设备端,通过接收该补丁数据,结合旧固件数据恢复出更新固件数据。
[0007]上述方法中,增量更新的固件更新方法比较适合更新固件数据相较于旧固件数据改动较小的使用场景。当更新固件数据和旧固件数据之间的差异较小,如在仅仅更改了部分系统参数、插入一小段代码的情况下,相比较于全量更新和压缩更新,增量更新的固件更新方法需要传输的数据仅仅是更新固件数据和旧固件数据的差异信息,因此需要传输的数据量较小,能够节省固件更新的流量,提高更新成功率,保证物联网系统的稳定性。
[0008]然而,由于物联网系统通常由一系列软硬件资源不一样的设备构成,不同设备之间的可用内存大小不一致,导致同样的增量更新方案很难部署到资源不同的设备上使用。另一方面,当前采用增量更新的方法执行固件更新的方法,需要的内存消耗较大,因此导致该增量更新的方法无法运行在资源受限的物联网设备中。
[0009]因此,如何设计一套资源消耗可以灵活配置、扩展性良好、能够运行在资源受限的物联网设备的增量更新方案,是本领域中亟待解决的技术问题之一。
[0010]应理解,上述所列举的技术问题仅作为示例而非对本专利技术的限制,本专利技术并不限于同时解决上述所有技术问题的技术方案。本专利技术的技术方案可以实施为解决上述或其他技术问题中的一个或多个。

技术实现思路

[0011]为解决上述和其他问题,本申请提供了一种嵌入式设备固件更新方法,应用于所述嵌入式设备,所述方法包括:
[0012]从源设备获取补丁数据,所述补丁数据为对原始差分编码数据进行压缩后得到的数据,所述补丁数据为补丁文件中的一部分数据;
[0013]对所述补丁数据进行解压,得到所述原始差分编码数据,所述原始差分编码数据为对旧固件数据以及更新固件数据进行差分处理并进行编码后的数据,所述原始差分编码数据包括多段数据块,其中所述多段数据块中的每个包括控制数据、差异数据以及附加数据;
[0014]分次获取所述原始差分编码数据中的数据块,依据用于指示当前所执行操作的状态标识对所述数据块分别执行对应的操作,直到对所述原始差分编码数据完成差分解码。
[0015]可选地,所述依据用于指示当前所执行操作的状态标识对所述数据块分别执行对应的操作包括:
[0016]若所述状态标识为指示执行读取所述控制数据的操作的第一标识时,则读取所述控制数据;
[0017]若所述状态标识为指示执行相加所述差异数据的操作的第二标识时,则根据所述控制数据将所述差异数据分次读取到预先分配的缓冲区中执行相加操作,其中,单次执行相加操作的数据长度不超过预设的缓冲区长度;
[0018]若所述状态标识为指示执行复制所述附加数据的操作的第三标识时,则根据所述控制数据将所述附加数据分次读取到所述缓冲区中执行复制操作,其中,单次执行复制操作的数据长度不超过所述预设的缓冲区长度;
[0019]其中,执行相加操作或复制操作后得到的数据被写入到所述嵌入式设备的存储分区中。
[0020]可选地,所述补丁文件还包括文件头信息,在所述从源设备获取补丁数据之后还包括:
[0021]从所述补丁文件中读取所述文件头信息;
[0022]若所述状态标识为指示执行校验所述文件头信息的第四标识时,则根据所述文件头信息,对所述文件头信息进行校验;
[0023]若校验通过,则将所述状态标识由所述第四标识修改为所述第一标识。
[0024]可选地,在所述读取所述控制数据之后还包括:
[0025]在读取到一个完整的控制数据之后,将所述状态标识由所述第一标识修改为所述第二标识。
[0026]可选地,在所述根据所述控制数据将所述差异数据分次读取到预先分配的缓冲区中执行相加操作之后还包括:
[0027]基于所述控制数据中指示的该段数据块中差异数据的字节数,判断针对该段数据块的相加操作是否完成;
[0028]如果是,则将所述状态标识由所述第二标识修改为所述第三标识。
[0029]可选地,在所述根据所述控制数据将所述附加数据分次读取到所述缓冲区中执行复制操作之后还包括:
[0030]基于所述控制数据中指示的该段数据块中附加数据的字节数,判断针对该段数据块的复制操作是否完成;
[0031]如果是,则将所述状态标识由所述第三标识修改为所述第一标识。
[0032]可选地,所述预设的缓冲区长度可根据所述嵌入式设备的实际内存进行调整。
[0033]可选地,所述预设的缓冲区长度存储在所述补丁文件的文件头信息中。
[0034]可选地,所述状态标识由设置的状态机进行指示。
[0035]可选地,所述对所述补丁数据进行解压包括:
[0036]采用支持流式解压的解压算法对所述补丁数据进行解压。
[0037]本申请还提供了一种嵌入式设备,包括:第一存储器以及第一处理器,所述第一存储器用于存储计算机程序,所述第一处理器用于执行所述计算机程序时实现上述任一种所述的嵌入式设备固件更新方法。
[0038]本申请还提供了一种嵌入式设备固件更新方法,应用于开发端设备,所述方法包括:
[0039]确定旧固件数据以及更新固件数据的相似匹配区域,将所述相似匹配区域的数据进行差分处理,编码为差异数据;
[0040]将两个相似匹配区域之间的数据编码为附加数据;
[0041]基于所述差异数据以及所述附加数据,生成控制数据;
[0042]将生成的所述控本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种嵌入式设备固件更新方法,其特征在于,应用于所述嵌入式设备,所述方法包括:从源设备获取补丁数据,所述补丁数据为对原始差分编码数据进行压缩后得到的数据,所述补丁数据为补丁文件中的一部分数据;对所述补丁数据进行解压,得到所述原始差分编码数据,所述原始差分编码数据为对旧固件数据以及更新固件数据进行差分处理并进行编码后的数据,所述原始差分编码数据包括多段数据块,其中所述多段数据块中的每个包括控制数据、差异数据以及附加数据;分次获取所述原始差分编码数据中的数据块,依据用于指示当前所执行操作的状态标识对所述数据块分别执行对应的操作,直到对所述原始差分编码数据完成差分解码。2.如权利要求1所述的嵌入式设备固件更新方法,其特征在于,所述依据用于指示当前所执行操作的状态标识对所述数据块分别执行对应的操作包括:若所述状态标识为指示执行读取所述控制数据的操作的第一标识时,则读取所述控制数据;若所述状态标识为指示执行相加所述差异数据的操作的第二标识时,则根据所述控制数据将所述差异数据分次读取到预先分配的缓冲区中执行相加操作,其中,单次执行相加操作的数据长度不超过预设的缓冲区长度;若所述状态标识为指示执行复制所述附加数据的操作的第三标识时,则根据所述控制数据将所述附加数据分次读取到所述缓冲区中执行复制操作,其中,单次执行复制操作的数据长度不超过所述预设的缓冲区长度;其中,执行相加操作或复制操作后得到的数据被写入到所述嵌入式设备的存储分区中。3.如权利要求2所述的嵌入式设备固件更新方法,其特征在于,所述补丁文件还包括文件头信息,在所述从源设备获取补丁数据之后还包括:从所述补丁文件中读取所述文件头信息;若所述状态标识为指示执行校验所述文件头信息的第四标识时,则根据所述文件头信息,对所述文件头信息进行校验;若校验通过,则将所述状态标识由所述第四标识修改为所述第一标识。4.如权利要求2所述的嵌入式设备固件更新方法,其特征在于,在所述读取所述控制数据之后还包括:在读取到一个完整的控制数据之后,将所述状态标识由所述第一标识修改为所述第二标识。5.如权利要求2所述的嵌入式设备固件更新方法,其特征在于,在所述根据所述控制数据将所述差异数据分次读取到预先分配的缓冲区中执行相加操作之后还包括:基于所述控制数据中指示的该段数据块中差异数据的字节数,判断针对该段数据块的相加操作是否完成;如果是,则将所述状态标识由所述第二标识修改为所述第三标识。6.如权利要求2所述的嵌入式设备固件更新方法,其特征在于,在所述根据所述控制数据将所述附加数据分次读取到所述缓冲区中执行复制操作之后还包括:基于所述控制数据中指示的该段数据块中附加数据的字节数,判断针对该段数据块的
复制操作是...

【专利技术属性】
技术研发人员:王豫新
申请(专利权)人:乐鑫信息科技上海股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1