CN112732308B - 一种模块化的固件升级方法、设备及存储介质 - Google Patents
一种模块化的固件升级方法、设备及存储介质 Download PDFInfo
- Publication number
- CN112732308B CN112732308B CN202011636902.6A CN202011636902A CN112732308B CN 112732308 B CN112732308 B CN 112732308B CN 202011636902 A CN202011636902 A CN 202011636902A CN 112732308 B CN112732308 B CN 112732308B
- Authority
- CN
- China
- Prior art keywords
- module
- code module
- firmware
- algorithm
- firmware program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 238000013507 mapping Methods 0.000 claims abstract description 22
- 238000013461 design Methods 0.000 claims abstract description 7
- 230000006870 function Effects 0.000 claims description 13
- 238000004891 communication Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 6
- 230000002159 abnormal effect Effects 0.000 claims description 3
- 238000012795 verification Methods 0.000 claims description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Abstract
本发明提出一种模块细粒度化的固件升级方法、装置及存储介质,涉及固件升级技术领域;该方法通过构建固件程序代码模块映射管理表,将固件程序各个代码模块进行细粒度存储;获取待升级固件程序代码模块所对应的存储位置,查询固件程序代码模块映射管理表,确定待更新代码模块的起止地址,然后进行模块程序自更新过程;本方法实现了固件程序模块细粒度化存储设计,并对程序模块按类别进行不同安全等级的分类,通过相应安全权限后才可对相应模块进行自更新。该方案减少了代码更新所需存储空间消耗,同时增加了程序代码更新的安全性,比较便于产品安全可靠更新。
Description
技术领域
本发明涉及固件升级技术领域,尤其涉及一种模块化的固件升级方法、设备及存储介质。
背景技术
UKey产品中的固件(firmware)是指存储于安全芯片存储器中的程序,通过它对UKey产品各项功能控制,产品才可以正常运行。有时为了解决一些Bug及兼容性问题,该固件程序会由用户进行升级,一般升级会更新整个固件程序。在进行固件更新升级时会通过BootLoader程序实现,BootLoader程序是单片机启动时候运行的一段小程序,这段程序负责固件的下载及更新。当进行固件更新时,一般会先从需要更新的固件程序回到BootLoader(一般会通过一个算法安全认证),然后再下载需要更新的固件程序。BootLoader更新完程序后并不擦除自己,下次启动后依然先运行BootLoader程序,然后跳转到新程序运行。所以BootLoader常用来管理单片机程序的更新。
现有的UKey产品中固件更新方式一般会将整个固件程序擦除后进行更新,或者开销额外的存储空间来通过打补丁的方式进行局部更新。前者方案的缺点是因为更新的数据量较大,需要全部更新,且在新过程中存在断电损坏设备等风险。后者的方案缺点是随着升级次数增多,会浪费大量存储器的空间。因此亟待找到一种安全有效,不占用过多内存的固件升级方法。
发明内容
本发明的目的在于提供一种模块化的固件升级方法、设备及存储介质,主要用于UKey产品中固件更新过程,从而解决现有技术中存在的前述问题。
为了实现上述目的,本发明采用的技术方案如下:
一种模块化的固件升级方法,包括以下步骤:
S1,构建固件程序代码模块映射管理表,所述固件程序代码模块映射管理表将固件程序各代码模块的名称、起止地址和更新权限整理成表;
S2,采用软件编译工具将固件程序各个代码模块进行细粒度存储;
S3,获取待升级固件程序代码模块所对应的存储位置,查询固件程序代码模块映射管理表,确定待更新代码模块的起止地址;
S4,获取待升级固件程序代码模块的更新权限,并将其与映射管理表中的权限类型对比,判断待升级固件程序代码模块的更新权限是否满足映射管理表中的权限类型,若满足,则直接进行代码模块自更新;否则需要对待升级固件程序代码模块进行权限认证之后再进行代码模块自更新。
优选地,步骤S1中构建固件程序代码模块映射管理表具体包括:
S11,建立一个结构体变量Instable,所述结构体内部包括3个成员变量,分别为:模块名称、模块地址和模块更新权限;
S12,声明所述结构体变量数组内的固件程序代码模块总数量;
S13,通过结构体变量数组将所有固件程序代码模块进行初始化,从而获取与三个成员变量一一对应的模块参数。
优选地,步骤S1中的更新权限按模块属性分为四种类型:通讯接口类、底层驱动类、算法类和应用类;
其中所述通讯接口类指的是实现具体数据收发传输功能的程序模块,如接收数据、发送数据、接收异常处理等程序;
所述底层驱动类包括具体实现某个底层驱动功能,包括Flash写,DMA操作、中断处理函数等;
所述算法类指的是实现具体某个算法的程序模块,SM3哈希算法、SM2签名验签、SM2加密解密,DES/SM1加密解密等算法;
所述应用类指的是实现某个具体应用功能,包括PIN认证、签名操作、打开应用等。
优选地,步骤S2中采用软件编译工具将固件程序进行模块化设计,同时将各个代码模块按照32字节对齐方式进行细粒度化存储。
优选地,步骤S4中对待升级固件程序代码模块进行权限认证具体包括:
确定权限类型,获取权限类型相对应的秘钥值,采用该秘钥值选择对应的算法进行算法认证。
优选地,所述具体选择认证算法时包括:
1)当代码模块属性为应用类时,权限值记为0x01,使用DES进行算法认证;
2)当代码模块属性为通讯接口类时,权限值为0x04,采用SM1进行算法认证;
3)当代码模块属性为底层驱动类时,权限值为0x02,使用SM4进行算法认证;
4)当代码模块属性为算法类时,权限值为0x08,此时使用SM9进行算法认证。
本发明的另一个目的在于一种模块化的固件升级设备,包括存储器和处理器,所述存储器用于存储计算机程序;
所述处理器用于执行所述计算机程序时实现模块化的固件升级方法的步骤。
本发明的最后一个目的在于提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被执行时实现模块化的固件升级方法的步骤。
本发明的有益效果是:
本发明提出一种模块化的固件升级方法、装置及存储介质,该方法实现了固件程序模块细粒度化存储设计,并对固件程序模块按类别进行不同安全等级的分类,通过相应安全权限后才可对相应模块进行自更新。该方案减少了代码更新所需存储空间消耗,同时增加了程序代码更新的安全性,比较便于产品安全可靠更新。
附图说明
图1是实施例1中提供的模块化的固件升级方法流程图;
图2是实施例1中构建的固件程序代码模块映射管理表示例。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
实施例
本实施例提供了一种模块化的固件升级方法,如图1所示,包括以下步骤:
S1, 构建固件程序代码模块映射管理表,所述固件程序代码模块映射管理表将固件程序各代码模块的名称、起止地址和更新权限整理成表;
S2,采用软件编译工具将固件程序各个代码模块进行细粒度存储;
S3, 获取待升级固件程序代码模块所对应的存储位置,查询固件程序代码模块映射管理表,确定待更新代码模块的起止地址;
S4,获取待升级固件程序代码模块的更新权限,并将其与映射管理表中的权限类型对比,判断待升级固件程序代码模块的更新权限是否满足映射管理表中的权限类型,若满足,则直接进行代码模块自更新;否则需要对待升级固件程序代码模块进行权限认证之后再进行代码模块自更新。
对于本领域技术人员而言,对于构建固件程序代码模块映射管理表的过程有很多种,但是在本实施例中,步骤S1中构建的固件程序代码模块映射管理表的方法具体包括以下步骤:
S11,首先需要建立一个结构体变量Instable,所述结构体变量内部包括3个成员变量,分别为:模块名称、模块地址和模块更新权限;
S12,声明所述结构体变量数组内的固件程序代码模块总数量,比如声明一个结构体变量数组Instable[150];
S13,通过结构体变量数组将所有150个固件程序代码模块进行初始化,从而获取与三个成员变量一一对应的模块参数,最终得到如图2所示的映射管理表。
本实施例中,步骤S1中的更新权限按模块属性分为四种类型:通讯接口类、底层驱动类、算法类和应用类;
其中所述通讯接口类指的是实现具体数据收发传输功能的程序模块,如接收数据、发送数据、接收异常处理等程序;
所述底层驱动类包括具体实现某个底层驱动功能,包括Flash写,DMA操作、中断处理函数等;
所述算法类指的是实现具体某个算法的程序模块,SM3哈希算法、SM2签名验签、SM2加密解密,DES/SM1加密解密等;
所述应用类指的是实现某个具体应用功能,包括PIN认证、签名操作、打开应用等。
步骤S2中采用软件编译工具将固件程序进行模块化设计,其中采用的软件编译工具可以为Keil,ADS或makefile中的任意一个,或者是其他可以实现程序编译的工具。当进行模块化设计之后,需要将各个代码模块进行对齐存储过程。通常对齐方式采用16字节或者是16字节的整数倍进行对齐,本实施例中采用的是按照32字节对齐方式进行细粒度化存储。
本实施例中,在步骤S4中对待升级固件程序代码模块进行权限认证过程具体包括:
确定权限类型,获取已确定权限类型相对应的秘钥值,然后采用该秘钥值选择对应的加密认证算法进行算法认证过程。
而在进行算法认证过程中,通常都是采用DES、SM1、SM4和SM9进行算法认证过程,而在本实施例中的算法认证过程中,确定权限类型以及权限类型相对应的密钥值,根据密钥值而选择认证算法的结果具体为:
1)当代码模块权限属性为应用类时,权限值记为0x01,使用应用等。
步骤S2中采用软件编译工具将固件程序进行模块化设计,其中采用的软件编译工具可以为Keil,ADS或makefile中的任意一个,或者是其他可以实现程序编译的工具。当进行模块化设计之后,需要将各个代码模块进行对齐存储过程。通常对齐方式采用16字节或者是16字节的整数倍进行对齐,本实施例中采用的是按照32字节对齐方式进行细粒度化存储。
本实施例中,在步骤S4中对待升级固件程序代码模块进行权限认证过程具体包括:
确定权限类型,获取已确定权限类型相对应的秘钥值,然后采用该秘钥值选择对应的加密认证算法进行算法认证过程。
而在进行算法认证过程中,通常都是采用DES、SM1、SM4和SM9进行算法认证过程,而在本实施例中的算法认证过程中,确定权限类型以及权限类型相对应的密钥值,根据密钥值而选择认证算法的结果具体为:
1)当代码模块权限属性为应用类时,权限值记为0x01,使用DES进行算法认证过程;
2)当代码模块权限属性为通讯接口类时,权限值为0x04,采用SM1进行算法认证过程;
3)当代码模块权限属性为底层驱动类时,权限值为0x02,使用SM4进行算法认证过程;
4)当代码模块权限属性为算法类时,权限值为0x08,此时使用SM9进行算法认证过程。
通过采用本发明公开的上述技术方案,得到了如下有益的效果:
本发明提出一种模块化的固件升级方法、装置及存储介质,该方法实现了固件程序模块细粒度化存储设计,并对模块按类别进行不同安全等级的分类,通过相应安全权限后才可对相应模块进行自更新。该方案减少了代码更新所需存储空间消耗,同时增加了程序代码更新的安全性,比较便于产品安全可靠更新。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
Claims (5)
1.一种模块化的固件升级方法,其特征在于,包括以下步骤:
S1,构建固件程序代码模块映射管理表,所述固件程序代码模块映射管理表将固件程序各代码模块的名称、起止地址和更新权限整理成表;步骤S1中的更新权限按模块属性分为四种类型:通讯接口类、底层驱动类、算法类和应用类;
其中所述通讯接口类指的是实现具体数据收发传输功能的程序模块,包括接收数据、发送数据、接收异常处理;
所述底层驱动类指的是具体实现底层驱动功能的程序模块,包括Flash写,DMA操作、中断处理函数;
所述算法类指的是实现具体算法的程序模块,包括SM3哈希算法、SM2签名验签、SM2加密解密,DES/SM1加密解密,SM4加密解密、SM9加密解密;
所述应用类指的是实现具体应用功能的程序模块,包括PIN认证、签名操作、打开应用;
S2,采用软件编译工具将固件程序各个代码模块进行存储;
S3,获取待升级固件程序代码模块所对应的存储位置,查询固件程序代码模块映射管理表,确定待更新代码模块的起止地址;
S4,获取待升级固件程序代码模块的更新权限,并将其与映射管理表中的权限类型对比,判断待升级固件程序代码模块的更新权限是否满足映射管理表中的权限类型,若满足,则直接进行代码模块自更新;否则需要对待升级固件程序代码模块进行权限认证之后再进行代码模块自更新;
步骤S4中对待升级固件程序代码模块进行权限认证具体包括:
确定权限类型,获取权限类型相对应的秘钥值,采用该秘钥值选择对应的算法进行算法认证;
所述选择对应的算法进行算法认证时包括:
1)当代码模块属性为应用类时,秘钥值记为0x01,使用DES进行算法认证;
2)当代码模块属性为通讯接口类时,秘钥值为0x04,采用SM1进行算法认证;
3)当代码模块属性为底层驱动类时,秘钥值为0x02,使用SM4进行算法认证;
4)当代码模块属性为算法类时,秘钥值为0x08,此时使用SM9进行算法认证。
2.根据权利要求1所述的模块化的固件升级方法,其特征在于,步骤S1中构建固件程序代码模块映射管理表具体包括:
S11,建立一个结构体变量数组,所述结构体变量数组内部包括3个成员变量,分别为:模块名称、模块地址和模块更新权限;
S12,声明所述结构体变量数组内的固件程序代码模块总数量;
S13,通过结构体变量数组将所有固件程序代码模块进行初始化,从而获取与三个成员变量一一对应的模块参数。
3.根据权利要求1所述的模块化的固件升级方法,其特征在于,步骤S2中采用软件编译工具将固件程序进行模块化设计,同时将各个代码模块按照32字节对齐方式进行存储。
4.一种模块化的固件升级设备,其特征在于,包括存储器和处理器,所述存储器用于存储计算机程序;
所述处理器用于执行所述计算机程序时实现如权利要求1-3任一所述的模块化的固件升级方法的步骤。
5.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被执行时实现如权利要求1-3任一所述的模块化的固件升级方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011636902.6A CN112732308B (zh) | 2020-12-31 | 一种模块化的固件升级方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011636902.6A CN112732308B (zh) | 2020-12-31 | 一种模块化的固件升级方法、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112732308A CN112732308A (zh) | 2021-04-30 |
CN112732308B true CN112732308B (zh) | 2024-05-31 |
Family
ID=
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1567362A (zh) * | 2003-06-10 | 2005-01-19 | 大唐微电子技术有限公司 | 动态逻辑分区并控制访问权限的ic智能卡及其实现方法 |
US7472380B1 (en) * | 2002-09-23 | 2008-12-30 | Hewlett-Packard Development Company, L.P. | Processing system with component architecture platform support |
CN108255505A (zh) * | 2018-01-10 | 2018-07-06 | 浪潮(北京)电子信息产业有限公司 | 一种固件更新方法、装置、设备及计算机可读存储介质 |
CN110618824A (zh) * | 2018-06-20 | 2019-12-27 | 中移(杭州)信息技术有限公司 | 一种软件升级方法、装置、介质和设备 |
CN110659053A (zh) * | 2019-10-10 | 2020-01-07 | 珠海格力电器股份有限公司 | 程序更新方法、装置、存储介质及电子设备 |
CN111162911A (zh) * | 2019-12-27 | 2020-05-15 | 郑州信大捷安信息技术股份有限公司 | 一种plc固件升级系统及方法 |
CN111831308A (zh) * | 2020-04-15 | 2020-10-27 | 腾讯科技(深圳)有限公司 | 快充设备的固件更新方法、程序、快充设备及存储介质 |
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7472380B1 (en) * | 2002-09-23 | 2008-12-30 | Hewlett-Packard Development Company, L.P. | Processing system with component architecture platform support |
CN1567362A (zh) * | 2003-06-10 | 2005-01-19 | 大唐微电子技术有限公司 | 动态逻辑分区并控制访问权限的ic智能卡及其实现方法 |
CN108255505A (zh) * | 2018-01-10 | 2018-07-06 | 浪潮(北京)电子信息产业有限公司 | 一种固件更新方法、装置、设备及计算机可读存储介质 |
CN110618824A (zh) * | 2018-06-20 | 2019-12-27 | 中移(杭州)信息技术有限公司 | 一种软件升级方法、装置、介质和设备 |
CN110659053A (zh) * | 2019-10-10 | 2020-01-07 | 珠海格力电器股份有限公司 | 程序更新方法、装置、存储介质及电子设备 |
CN111162911A (zh) * | 2019-12-27 | 2020-05-15 | 郑州信大捷安信息技术股份有限公司 | 一种plc固件升级系统及方法 |
CN111831308A (zh) * | 2020-04-15 | 2020-10-27 | 腾讯科技(深圳)有限公司 | 快充设备的固件更新方法、程序、快充设备及存储介质 |
Non-Patent Citations (4)
Title |
---|
FPGA固件升级加密技术研究;崔东岳;《中国优秀硕士学位论文全文数据库 信息科技辑》(第2011年12期);i135-396 * |
Poonam Thakur 等.Universal Firmware Upgrade Over-The-Air for Iot Devices with Security.《2019 6th International Conference on Computing for Sustainable Global Development (INDIACom).2020,27-30. * |
智能联网汽车FOTA系统安全机制的研究与实现;谭凡;《中国优秀硕士论文全文数据库 信息科技辑》;20200715(第2020年07期);C035-299 * |
李克强.《电动汽车工程手册》.《机械工业出版社》,2019,559-561. * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7984435B2 (en) | Update system employing reference software to reduce number of update packages | |
CN109787774B (zh) | 基于数字签名校验的升级下载方法、装置、服务器及终端 | |
US7657884B2 (en) | Electronic device supporting multiple update agents | |
CN103559065B (zh) | 一种ota升级的方法和系统 | |
CN104199706A (zh) | 一种eMMC的固件升级方法及其设备 | |
CN107832105B (zh) | 一种应用程序启动方法、启动装置及计算机可读存储介质 | |
US9183009B2 (en) | Policy update apparatus, policy management system, policy update method, policy management method and recording medium | |
US10409588B2 (en) | Method for managing objects in a secure element | |
CN107526608B (zh) | 一种ota升级包升级方法及设备 | |
US10235048B2 (en) | Data processing method and smart device | |
WO2018014798A1 (zh) | 机顶盒动态配置多ca的方法及系统 | |
CN110098952A (zh) | 一种服务器的管理方法和装置 | |
CN106020882A (zh) | 一种应用升级方法、智能终端及升级系统 | |
US20170124339A1 (en) | Implementing method for javacard application function expansion | |
US20060041567A1 (en) | Inventory and configuration management | |
EP3764224B1 (en) | Resource permission processing method and apparatus, and storage medium and chip | |
CN106155713B (zh) | 启动信息管理方法及装置 | |
CN1949718A (zh) | 固件空中传输供应方法 | |
CN112732308B (zh) | 一种模块化的固件升级方法、设备及存储介质 | |
Meisami et al. | A comprehensive survey of upgradeable smart contract patterns | |
CN113835729A (zh) | 升级方法、装置、终端设备及计算机可读存储介质 | |
CN115221183A (zh) | 数据处理方法及装置 | |
KR101461319B1 (ko) | 셋탑박스의 펌웨어 업그레이드 방법 및 펌웨어 업그레이드 장치 | |
CN113010197A (zh) | 应用静默升级方法、系统、终端设备及存储介质 | |
WO2004114129A2 (en) | Embedded device with software registry |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |