一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于国密算法异步更新嵌入式linux固件的方法与流程

2021-10-24 04:17:00 来源:中国专利 TAG:嵌入式 算法 固件 固件升级 特别


1.本发明涉及固件升级技术领域,特别涉及一种基于国密算法异步更新嵌入式linux固件的方法。


背景技术:

2.在嵌入式linux 为核心的硬件产品中,固件在线升级一直是很大的一个问题。由于操作系统、文件系统及应用程序的实时运行,导致升级嵌入式linux的固件升级一般都是在引导程序中完成固件的烧写,这就要求设备必须要求重启,在重启阶段设备是处于停止实际运行的状态,且升级过程中有可能断电造成无法启动的现象.即现有的升级方式一般都是同步的形式,一旦开始升级则必须要等完全升级完成,系统才会重新正常工作。然而现有很多嵌入式linux产品的运行环境要求不能随便重启,也无法连接公网进行升级。这就要求产品必须具备安全的异步升级形式。
3.现有的嵌入式linux技术固件升级的方案一般有以下两种:1.硬件具有sd卡或者usb接口的话,则将固件复制到u盘或者sd卡,然后系统重启,进入引导程序阶段.进入引导程序并停留在该阶段,输入一些升级的命令,则引导程序会读取sd/u盘中的固件,然后擦除原固件位置,并重新写入固件,然后在重启设备,运行新固件。
4.2.设备具有网络功能的话,可以通过网络下载新固件至设备存储介质中,然后按照1中的流程,进行升级,这里选择的是设备自身存储介质中的固件(无论哪种方式,提供嵌入式linux设备可以读取升级固件的通道即可)现存的升级方案具有以下两点缺陷:1.原有技术方案需要同步无论是sd/usb还是网络下载,下载完成后必须重启设备,且在引导程序阶段需要专业的人士输入相关指令,才能完成整个升级的过程。期间设备是停止正常运行功能,期间如果发生掉电情况,因为之前的固件很可能被完全或部分擦除,导致系统无法正常运行,只能返厂维修。
5.2.固件有被泄漏的风险由于采用引导程序进行烧录,有些引导程序是无法修改源代码,这就很可能造成无法定制引导程序的功能造成只能使用离线烧录器使用的固件进行更新,造成原始固件被批量烧录。
6.为此,本技术提出了一种新的升级固件的方法,以解决上述问题。


技术实现要素:

7.本发明为了弥补现有技术中的不足,提供了一种基于国密算法异步更新嵌入式linux固件的方法。
8.本发明是通过如下技术方案实现的:
一种基于国密算法异步更新嵌入式linux固件的方法,其特征在于,包括以下步骤:s1,在存储有嵌入式linux固件的硬件产品中的flash介质中,根据产品的实际需求,划分有若干分区,这些分区分别放置引导程序、dtb、内核、根文件系统及其他用户自定义的分区;s2,在第一步骤中的原有必备的分区中,多加一个分区,用来存储新根文件系统分区;s3,在设备中运行http服务器软件,软件中利用web前端技术以完成文件上传界面,且web页面已经打包存储在原始固件中;s4,用户拿到升级版本的固件后,在浏览器中输入ip地址,打开设备中的web界面;s5,点击文件上传,选中本地电脑端的固件后,浏览器将该固件上传至设备内存中;s6,设备拿到固件后,进行固件的完整性、安全性校验,确保固件是有效且合法后,将新固件的文件系统、内核文件、dbt文件依次写入flash中,其中文件系统写入到另一个未被使用的文件系统分区中,dtb也是烧录对应下次启动时正确文件系统位置的文件;s7,完成烧录,等待下次重启自动运行新固件。
9.进一步地,为了更好的实现本发明,所述s5具体为,用户点击上传固件,设备后台接受完成文件,使用sm2私钥解密,存储在/tmp目录。
10.进一步地,为了更好的实现本发明,所述s6具体为,s61,解密存储在设备内存中的文件,计算文件的sm3并与固件中携带的值做比较;s62,从linuxproc/mounts信息中获取分区信息并判断需要烧写的是文件分区1还是分区2;s63,挂载将要烧录文件系统分区,擦除并烧录,若期间出错,则卸载该分区并删除固件文件;s64,擦除内核分区并更新内核文件;s65,根据新文件系统分区位置,烧录对应的dtb文件。
11.进一步地,为了更好的实现本发明,所述s7具体为:升级成功后,原有程序正常运行,正在使用的文件系统也没有被擦除,设备可正常运行,待用户重启设备时,新的dbt中指向的文件系统分区已被更新至新文件系统处,则设备会自动运行新的固件,期间无需特殊指令操作,此即为本发明主题中的异步的功能。
12.进一步地,为了更好的实现本发明,所述新的固件构成包括dtb1和dtb2,dtb1文件对应文件系统从分区1启动,dtb2文件对应文件系统从分区2启动;所述新文件系统中含有文件校验文本,包括dtb1 dtb2 内核文件+文件系统的内容的国密sm3哈希数值以及版本信息。
13.进一步地,为了更好的实现本发明,所述s5中,上传的固件整个被打包成一个压缩包,并使用国密sm2公钥加密为一个加密文件,该sm2的秘钥对为厂家在开发阶段生成,且提前被写入到硬件中,此产品的声明周期中不会更改也不会被传输。
14.本发明的有益效果是:本发明的嵌入式linux升级方式简单便捷,设备可正常运行至任意可升级的时刻
完成整体的升级,且是自动运行,无任何特殊处理,给客户及现场人员提供最大的便捷;采用了国密算法,双重校验,降低了产品的泄露风险。
附图说明
15.图1为本发明的固件升级的流程图;图2为本发明的存储flash分区示意图。
具体实施方式
16.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
17.因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
18.下面结合附图,对本发明的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
19.图1

图2为本发明的一种具体实施例,该实施例为一种基于国密算法异步更新嵌入式linux固件的方法。
20.如图2所示,本实施例中,在存储有嵌入式linux固件的硬件产品中的flash介质中,根据产品的实际需求,划分有若干分区,这些分区分别放置引导程序、dtb、内核、根文件系统及其他用户自定义的分区;在原有必备的分区中,还多加一个分区,用来存储新根文件系统分区。
21.本实施例中的新的固件构成包括dtb1和dtb2,dtb1文件对应文件系统从分区1启动,dtb2文件对应文件系统从分区2启动;新文件系统中含有文件校验文本,包括dtb1 dtb2 内核文件+文件系统的内容的国密sm3哈希数值以及版本信息。
22.在设备中运行http服务器软件,软件中利用web前端技术以完成文件上传界面,且web页面已经打包存储在原始固件中;用户拿到升级版本的固件后,在浏览器中输入ip地址,打开设备中的web界面,进行固件升级。
23.如图1所示,本实施例的固件升级方法为:用户点击文件上传,选中本地电脑端的固件后,浏览器将该固件上传至设备内存中;设备拿到固件后,进行固件的完整性、安全性校验,确保固件是有效且合法后,将新固件的文件系统、内核文件、dbt文件依次写入flash中,其中文件系统写入到另一个未被使用的文件系统分区中,dtb也是烧录对应下次启动时正确文件系统位置的文件;完成烧录,等待下次重启自动运行新固件。
24.在用户点击文件上传时,上传的固件整个被打包成一个压缩包,并使用国密sm2公钥加密为一个加密文件,该sm2的秘钥对为厂家在开发阶段生成,且提前被写入到硬件中,此产品的声明周期中不会更改也不会被传输。用户点击上传固件后,设备后台接受完成文件,使用sm2私钥解密,存储在/tmp目录,之后解密存储在设备内存中的文件,计算文件的sm3并与固件中携带的值做比较;从linux /proc/mounts信息中获取分区信息并判断需要
烧写的是文件分区1还是分区2;挂载将要烧录文件系统分区,擦除并烧录,若期间出错,则卸载该分区并删除固件文件;擦除内核分区并更新内核文件;根据新文件系统分区位置,烧录对应的dtb文件。最后,升级成功后,原有程序正常运行,正在使用的文件系统也没有被擦除,设备可正常运行,待用户重启设备时,新的dbt中指向的文件系统分区已被更新至新文件系统处,则设备会自动运行新的固件,期间无需特殊指令操作。
25.最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,本领域普通技术人员对本发明的技术方案所做的其他修改或者等同替换,只要不脱离本发明技术方案的精神和范围,均应涵盖在本发明的权利要求范围当中。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜