一种模块细粒度化的固件升级方法、设备及存储介质技术

技术编号:28295042 阅读:20 留言:0更新日期:2021-04-30 16:18
本发明专利技术提出一种模块细粒度化的固件升级方法、装置及存储介质,涉及固件升级技术领域;该方法通过构建固件程序代码模块映射管理表,将固件程序各个代码模块进行细粒度存储;获取待升级固件程序代码模块所对应的存储位置,查询固件程序代码模块映射管理表,确定待更新代码模块的起止地址,然后进行模块程序自更新过程;本方法实现了固件程序模块细粒度化存储设计,并对程序模块按类别进行不同安全等级的分类,通过相应安全权限后才可对相应模块进行自更新。该方案减少了代码更新所需存储空间消耗,同时增加了程序代码更新的安全性,比较便于产品安全可靠更新。

【技术实现步骤摘要】
一种模块细粒度化的固件升级方法、设备及存储介质
本专利技术涉及固件升级
,尤其涉及一种模块细粒度化的固件升级方法、设备及存储介质。
技术介绍
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本实施例提供了一种模块细粒度化的固件升级方法,如图1所示,包括以下步骤:S1,构建固件程序代码模块映射管理表,所述固件程序代码模块映射管理表将固件程序各代码模块的名称、起止地址和更新权限整理成表;S2,采用软件编译工具将固件程序各个代码模块进行细粒度存储;S3,获取待升级固件程序代码模块所对应的存储位置,查询固件程序代码模块映射管理表,确定待更新代码模块的起止地址;S4,获取待升级固件程序代码模块的更新权限,并将其与映射管理表中的权限类型对比,判断待升级固件程序代码模块的更新权限是否满足映射管理表中的权限类型,若满足,则直接进行代码模块自更新;否则需要对待升级固件程序代码模块进行权限认证之后再进行代码模块自更新。对于本领域技术人员而言,对于构建固件程序代码模块映射管理表的过程有很多种,但是在本实施例中,步骤S1中构建的固件程序代码模块映射管理表的方法具体包括以下步骤:S11,首先需要建立一个结构体变量Instable,所述结构体变量内部包括3个成员变量,分别为:模块名称、模块地址和模块更新权限;S12,声明所述结构体变量数组内的固件程序代码模块总数量,比如声明一个结构体变量数组Instable[150];S13,通过结构体变量数组将所有150个固件程序代码模块进行初始化,从而获取与三个成员变量一一对应的模块参数,最终得到如图2所示的映射管理表。本实施例中,步骤S1中的更新权限按模块属性分为四种类型:通讯接口类、底层驱动类、算法类和应用类;其中所述通讯接口类指本文档来自技高网...

【技术保护点】
1.一种模块细粒度化的固件升级方法,其特征在于,包括以下步骤:/nS1,构建固件程序代码模块映射管理表,所述固件程序代码模块映射管理表将固件程序各代码模块的名称、起止地址和更新权限整理成表;/nS2,采用软件编译工具将固件程序各个代码模块进行细粒度存储;/nS3,获取待升级固件程序代码模块所对应的存储位置,查询固件程序代码模块映射管理表,确定待更新代码模块的起止地址;/nS4,获取待升级固件程序代码模块的更新权限,并将其与映射管理表中的权限类型对比,判断待升级固件程序代码模块的更新权限是否满足映射管理表中的权限类型,若满足,则直接进行代码模块自更新;否则需要对待升级固件程序代码模块进行权限认证之后再进行代码模块自更新。/n

【技术特征摘要】
1.一种模块细粒度化的固件升级方法,其特征在于,包括以下步骤:
S1,构建固件程序代码模块映射管理表,所述固件程序代码模块映射管理表将固件程序各代码模块的名称、起止地址和更新权限整理成表;
S2,采用软件编译工具将固件程序各个代码模块进行细粒度存储;
S3,获取待升级固件程序代码模块所对应的存储位置,查询固件程序代码模块映射管理表,确定待更新代码模块的起止地址;
S4,获取待升级固件程序代码模块的更新权限,并将其与映射管理表中的权限类型对比,判断待升级固件程序代码模块的更新权限是否满足映射管理表中的权限类型,若满足,则直接进行代码模块自更新;否则需要对待升级固件程序代码模块进行权限认证之后再进行代码模块自更新。


2.根据权利要求1所述的模块细粒度化的固件升级方法,其特征在于,步骤S1中构建固件程序代码模块映射管理表具体包括:
S11,建立一个结构体变量Instable,所述结构体内部包括3个成员变量,分别为:模块名称、模块地址和模块更新权限;
S12,声明所述结构体变量数组内的固件程序代码模块总数量;
S13,通过结构体变量数组将所有固件程序代码模块进行初始化,从而获取与三个成员变量一一对应的模块参数。


3.根据权利要求1所述的模块细粒度化的固件升级方法,其特征在于,步骤S1中的更新权限按模块属性分为四种类型:通讯接口类、底层驱动类、算法类和应用类;
其中所述通讯接口类指的是实现具体数据收发传输功能的程序模块,如接收数据、发送数据、接收异常处理;
所述底层驱动类包括具体实现某个底层驱动功能,包括Flash写,DMA操作、中断处理函数;
所述算法类指的是实...

【专利技术属性】
技术研发人员:王帅王强董文强
申请(专利权)人:广州万协通信息技术有限公司
类型:发明
国别省市:广东;44

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

1