CN109471642A - 固件生成存储方法及装置、固件启动方法及装置 - Google Patents
固件生成存储方法及装置、固件启动方法及装置 Download PDFInfo
- Publication number
- CN109471642A CN109471642A CN201811371859.8A CN201811371859A CN109471642A CN 109471642 A CN109471642 A CN 109471642A CN 201811371859 A CN201811371859 A CN 201811371859A CN 109471642 A CN109471642 A CN 109471642A
- Authority
- CN
- China
- Prior art keywords
- firmware
- basic information
- memory
- started
- institute
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Abstract
本申请提供了一种固件生成存储方法及装置,首先将固件存储在第一预定存储器的第一预定位置上,之后获取固件存储的起始位置、长度以及加载的目标地址等基础信息,并将固件的基础信息存储在第二预定存储器的第二预定位置上。本申请实施例还提供了一种固件启动方法及装置,首先获取固件的基础信息,之后根据获取的基础信息获取并加载固件到目标地址上。上述技术方案只需要更新固件和固件的基础信息,不需要修改软件代码,提高了固件更新的灵活性,提高了固件更新的效率。同时,上述技术方案不需要实现或移植文件系统,不会增加系统复杂度,不会降低系统开发、测试、维护、运行的效率。
Description
技术领域
本申请涉及计算机技术领域,尤其是涉及一种固件生成存储方法及装置、固件启动方法及装置。
背景技术
将软件打包为一个镜像文件就得到了一个固件。目前,一般通过以下两种方案将软件以固件的形式进行存储:一、将全部软件打包形成一个固件,并将每个软件的起始地址以及长度信息固化到软件代码中,最后将上述软件代码和固件统一存储到存储器中;二、将全部软件打包形成多个固件,每个固件有一个类似于名称的标识符,将所有的固件保存在文件系统上,根据固件的标识符就可以定位或更新目标固件。
上述两种方案实现了固件的生成和存储,但是均存在一定的技术缺陷:第一种方案不够灵活,需要将固件中每个软件的信息固化到软件代码中,一旦固件中的某个软件发生变化,就需要修改软件代码,降低了固件更新效率,并且更新固件中的某个软件时,需要更新整个固件,无法实现部分固件的更新。另外,由于每个固件的大小预先无法确定,因此该方案为每个固件划定一定的存储空间,软件代码根据每个固件的存储空间的起始地址去查找、启动每个固件。为了能够存储每个固件,预先划定的存储空间一般会大于固件需要占用的空间,这就造成了对存储空间的浪费;第二种存储方式,需要实现或移植文件系统,文件系统复杂度高,极大的增加了系统开发、测试、维护的工作量,同时使用文件系统也增加了系统负载,降低了系统的运行效率。
综上,如何能够增加固件更新的灵活性,同时不增加系统的复杂度是目前需要解决的技术问题。
发明内容
有鉴于此,本申请的目的在于提供固件生成存储方法及装置、固件启动方法及装置,以增加固件更新的灵活性,同时不会增加系统的复杂度。
第一方面,本申请实施例提供了一种固件生成存储方法,包括:
将固件存放在第一预定存储器的第一预定位置上;
获取所述固件存放的第一预定存储器的身份标识、所述固件在所述第一预定存储器中的起始位置、所述固件的长度以及所述固件加载的目标地址,得到所述固件的基础信息;
将所述固件的基础信息存在第二预定存储器的第二预定位置上。
在一种可能的实施方式中,上述固件生成存储方法还包括:
获取所有固件的基础信息,并基于所有固件的基础信息确定目标整体校验和;
将所述目标整体校验和存储第三预定存储器的第三预定位置上。
在一种可能的实施方式中,上述固件生成存储方法还包括:
设置所述固件的校验类型,并基于所述校验类型确定所述固件的目标校验和;
将所述校验类型以及所述目标校验和加入到所述固件的基础信息中。
在一种可能的实施方式中,上述固件生成存储方法还包括:
将所述固件进行压缩;
将固件的压缩信息加入到所述固件的基础信息中。
在一种可能的实施方式中,上述固件生成存储方法还包括:
将所述固件进行加密;
将固件的加密信息加入到所述固件的基础信息中。
第二方面,本申请实施例提供了一种固件启动方法,包括:
获取所要启动的固件的基础信息,其中所述基础信息包括所述固件存放的存储器的身份标识、所述固件在所述存储器中的起始位置、所述固件的长度以及所述固件加载的目标地址;
从所述身份标识对应的存储器中,根据所述起始位置和固件长度获取所述基础信息对应的所要启动的固件,并将获取的所要启动的固件加载到所述目标地址上。
在一种可能的实施方式中,上述固件启动方法还包括:
获取所有的固件的基础信息以及目标整体校验和;
基于所有的固件的基础信息确定固件整体校验和;
在所述目标整体校验和与所述固件整体校验和相匹配的情况下,获取所要启动的固件的基础信息。
在一种可能的实施方式中,所述基础信息还包括所述所要启动的固件的校验类型以及所述所要启动的固件的目标校验和;
所述将获取的所要启动的固件加载到所述目标地址上,包括:基于所述校验类型,确定所述所要启动的固件的固件校验和;
在所述固件校验和与所述目标校验和相匹配的情况下,将获取的所要启动的固件加载到所述目标地址上。
第三方面,本申请实施例提供了一种固件生成存储装置,包括:
第一存储模块,用于将固件存放在第一预定存储器的第一预定位置上;
信息获取模块,用于获取所述固件存放的第一预定存储器的身份标识、所述固件在所述第一预定存储器中的起始位置、所述固件的长度以及所述固件加载的目标地址,得到所述固件的基础信息;
第二存储模块,用于将所述固件的基础信息存在第二预定存储器的第二预定位置上;
其中,所述固件包括所述固件和所述固件的基础信息。
第四方面,本申请实施例提供了一种固件启动装置,包括:
获取信息模块,用于获取所要启动的固件的基础信息,其中所述基础信息包括所述固件存放的存储器的身份标识、所述固件在所述存储器中的起始位置、所述固件的长度以及所述固件加载的目标地址;
获取加载模块,用于从所述身份标识对应的存储器中,根据所述起始位置和固件的长度获取所述基础信息对应的所要启动的固件,并将获取的所要启动的固件加载到所述目标地址上。
第五方面,本申请实施例提供了一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述的固件生成存储方法的步骤或上述的固件启动方法的步骤。
第六方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述固件生成存储方法的步骤或上述固件启动方法的步骤。
本申请实施例提供的固件生成存储方法及装置,首先将固件存储在第一预定存储器的第一预定位置上,之后获取固件存储的起始位置、长度以及加载的目标地址等基础信息,并将固件的基础信息存储在第二预定存储器的第二预定位置上。本申请实施例提供的固件启动方法及装置,首先获取所要启动的固件的基础信息,之后根据获取的基础信息获取并加载所要启动的固件到目标地址上。上述技术方案,只需要更新固件和固件的基础信息,不需要修改软件代码,另外,当需要对某个固件进行更新时,只需要针对需要更新的固件进行更新即可,不需要对所有的固件进行更新,提高了固件更新的灵活性,提高了固件更新的效率。同时,上述技术方案与现有技术中利用文件系统更新固件的技术方案相比,其不需要实现或移植文件系统,不会增加系统复杂度,不会降低系统开发、测试、维护、运行的效率。
进一步地,上述技术方案中,固件的基础信息中记录了固件存储的起始位置和长度,根据该起始位置和长度就能够定位一个固件,因此,多个固件可以连续存储,就不需要预先为每个固件预留较大的存储空间,从而有效节省了存储空间,提高了存储空间利用率。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1A示出了本申请实施例一所提供的固件生成存储方法的流程图;
图1B示出了本申请实施例一所提供的固件生成存储方法中生成和存储目标整体校验和的流程图;
图1C示出了本申请实施例一所提供的固件生成存储方法中生成和存储校验类型以及目标校验和的流程图;
图1D示出了本申请实施例一所提供的固件生成存储方法中生成和存储压缩信息的流程图;
图1E示出了本申请实施例一所提供的固件生成存储方法中生成和存储加密信息的流程图;
图2A示出了本申请实施例二所提供的固件启动方法的流程图;
图2B示出了本申请实施例二所提供的固件启动方法中校验目标整体校验和的流程图;
图2C示出了本申请实施例二所提供的固件启动方法中校验目标校验和的流程图;
图3示出了本申请实施例三所提供的固件启动方法的流程图;
图4示出了本申请实施例四所提供的固件生成存储装置的结构示意图;
图5示出了本申请实施例五所提供的固件启动装置的结构示意图;
图6示出了本申请实施例六所提供的电子设备的结构示意图;
图7A示出了本申请实施例一中固件存储在主存储中的结构示意图;
图7B示出了本申请实施例一中固件存储在从存储中的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
实施例一
本实施例公开了一种固件生成存储方法,该方法应用于嵌入式设备上,利用固件制作工具生成固件,并将其中的固件存储在第一预定存储器的第一预定位置上,将固件的基础信息存储在第二预定存储器的第二预定位置上。具体地,如图1A所示,本实施例的固件生成存储方法包括:
S110、将固件存放在第一预定存储器的第一预定位置上。
上述第一预定存储器可以是嵌入式设备的主存储器,也可以是嵌入式设备的从存储器。主存储器是嵌入式设备上电后默认使用的存储器,一般为闪存。从存储器是嵌入式设备中的其它存储器,可以是闪存、内嵌式存储器(Embedded Multi Media Card,eMMC)、SD卡(Secure Digital Memory Card)、硬盘等。
不同的固件的大小不同,根据固件的大小可以选择存储在主存储器中,也可以选择存储在从存储器中。一般情况下,几MB到十几MB的固件可以存放在主存储器中,几百MB到上GB的固件可以存放在从存储中,例如存放在SD卡中,再大的固件就需要存放具有更大容量的从存储器中,例如存在硬盘中。第一预定存储器支持多种类型的存储器。
S120、获取所述固件存放的第一预定存储器的身份标识、所述固件在所述第一预定存储器中的起始位置、所述固件的长度以及所述固件加载的目标地址,得到所述固件的基础信息。
这里,根据第一预定存储器的身份标识就可以定位到存储固件的第一预定存储器。上述身份标识可以是第一预定存储器的一个唯一识别码。身份标识也可以是第一预定存储器的类型,由于在嵌入式设备中一般包括主存储器和从存储器,获取到存储器的类型即获取到了固件存储的存储器。
S130、将所述固件的基础信息存在第二预定存储器的第二预定位置上。
上述第二预定存储器可以是主存储器。上述第一预定存储器与第二预定存储器可以是同一个存储器,也可以是不同的存储器。例如,固件和固件的基础信息都存储在主存储器中。再例如,固件的基础信息存储在主存储器中,固件由于占用空间大存储在从存储器中。
本实施例中,固件是具体的软件打包后的镜像文件,一个嵌入式设备包括若干个固件。
在存在多个固件时,所有固件的基础信息可以均存储在主存储中,所述的固件可以均存储在主存储器中,也可以将占用空间大的固件存储在从存储器中。
在存在一个固件时,该固件的基础信息可以存储在主存储器中,该固件可以存储在主存储中,在该固件占用的空间较大的情况下,该固件也可以存储在从存储中。
本实施例中,固件的基础信息中记录了固件存储的起始位置和长度,根据该起始位置和长度就能够定位一个固件,因此,多个固件可以连续存储,不需要预先为每个固件预留较大的存储空间,从而有效节省了存储空间,提高了存储空间利用率。
进一步地,如图1B所示,本实施例的固件生成存储方法在步骤S110之后,还可以包括如下步骤:
S140、获取所有固件的基础信息,并基于所有固件的基础信息确定目标整体校验和。
这里,采用预定的算法确定目标整体校验和,预定的算法在应用到具体的产品时就已经确定下来,不需要在运行时动态获取确定目标整体校验和的校验类型。
上述预定的算法可以是信息摘要算法(MD)、循环冗余校验算法(CRC)、安全哈希算法(SHA)等。
S150、将所述目标整体校验和存储第三预定存储器的第三预定位置上。
这里,第二预定存储器可以是主存储器。第三预定存储器可以与第一预定存储器相同,也可以与第一预定存储器不同,例如,将目标整体校验和与固件均存储在主存储器中,再例如,将目标整体校验和存储在主存储器中,将固件存储在从存储器中。第三预定存储器可以与第二预定存储器相同,例如,将目标整体校验和与各个固件的基础信息均存储在主存储器中。
另外,还可以将固件的数量和目标整体校验和一起存储在第三预定存储器中。
进一步地,目标整体校验和、固件的数量、各个固件的基础信息存储在主存储器中,固件根据占用空间的大小存储在主存储器或从存储器中。具体地,如图7A所示,在主存储的起始位置,首先保存目标整体校验和、固件的数量,然后保存各个固件1-N的基础信息,然后保存各个固件1-N。如图7B所示,在从存储器的预定位置上,保存有占用空间大的固件M,其中M是小于N的正整数。
进一步地,本实施例的固件生成存储方法在将固件的基础信息保存到第二预定存储器的第二预定位置上之前,如图1C所示,还可以包括如下步骤:
S160、设置所述固件的校验类型,并基于所述校验类型确定所述固件的目标校验和。
这里,为每个固件设置校验类型,根据校验类型可以确定计算固件的目标检验和的算法,继而利用确定的算法就可以计算得到固件的目标校验和。
上述用于计算目标校验和的算法可以但不限于是是信息摘要算法(MD)、循环冗余校验算法(CRC)、安全哈希算法(SHA)等。
S170、将所述校验类型以及所述目标校验和加入到所述固件的基础信息中。
进一步地,本实施例的固件生成存储方法在将固件的基础信息保存到第二预定存储器的第二预定位置上之前,如图1D所示,还可以包括如下步骤:
S180、将所述固件进行压缩;将固件的压缩信息加入到所述固件的基础信息中。
固件经过压缩可以节省很多空间。
进一步地,本实施例的固件生成存储方法在将固件的基础信息保存到第二预定存储器的第二预定位置上之前,如图1E所示,还可以包括如下步骤:
S190、将所述固件进行加密;将固件的加密信息加入到所述固件的基础信息中。
根据安全的需求,可以对关键的固件进行加密,以提高固件的安全性能。
应当说明的是,在固件进行了压缩和/或加密的情况下,步骤160基于所述校验类型确定计算目标检验和的算法,继而利用确定的算法计算进行了压缩和/或解密后的固件的目标校验和。
另外,固件的基础信息还可以包括:固件的名称、固件是否需要进行校验等信息。如果不需要进行校验,则不需要计算每个固件的目标校验和了。
应当说明的是,本实施例的方法在执行之前,首先需要编译各个软件生成各个固件。
应当说明的是,各个固件的基础信息可以连续存储,也可以根据预定的存储位置存储。。
本实施例中,固件主要包括如下镜像文件:引导程序镜像文件,应用程序镜像文件,现场可编程门阵列(Field-Programmable Gate Array,FPGA)镜像文件。应用程序镜像文件一般加载到主存储器,FPGA镜像文件需要加载到FPGA的随机存取存储器(randomaccess memory,RAM)。在嵌入式设备中,这些存储器地址都是统一编址,不需要明确指出存储器类型,直接加载到对应的目标地址即可。
本实施例公开了固件生成存储方法,下面一个实施例公开了如何启动本实施例生成存储的固件。
实施例二
基于上一实施例存储的固件,本实施例公开了一种固件启动方法,该方法应用于嵌入式设备上,是嵌入式设备上电启动后,启动加载器(bootloader)根据需要加载固件的方法。具体地,如图2A所示,本实施例的固件启动方法包括:
S210、获取所要启动的固件的基础信息,其中所述基础信息包括所述固件存放的存储器的身份标识、所述固件在所述存储器中的起始位置、所述固件的长度以及所述固件加载的目标地址。
这里,固件存储在第一预定存储器的第一预定位置上,固件的基础信息存储在第二预定存储器的第二预定位置上,第一预定存储器和第二预定存储器可以相同,也可以不同。例如,第一预定存储器和第二预定存储均为主存储器,再例如,第一预定存储器为从存储器,第二预定存储为主存储器。
S220、从所述身份标识对应的存储器中,根据所述起始位置和固件的长度获取所述基础信息对应的所要启动的固件,并将获取的所要启动的固件加载到所述目标地址上。
以上,嵌入式设备上电时会获取固件的基础信息,然后根据获取的基础信息将固件加载到内存的指定位置(即目标地址)上。
进一步地,如图2B所示,为了保证固件启动的安全性,本实施例的固件启动方法还可以包括:
S230、获取所有的固件的基础信息以及目标整体校验和。
这里,目标整体校验和存储在第三预定存储器的第三预定位置上,第三预定存储器可以与第一预定存储器相同,也可以与第一预定存储器不同,例如,将目标整体校验和与固件均存储在主存储器中,再例如,将目标整体校验和存储在主存储器中,将固件存储在从存储器中。第三预定存储器可以与第二预定存储器相同,例如,将目标整体校验和与各个固件的基础信息均存储在主存储器中。
S240、基于所有的固件的基础信息确定固件整体校验和。
这里,采用预定的算法确定目标整体校验和,上述预定的算法可以是信息摘要算法(MD)、循环冗余校验算法(CRC)、安全哈希算法(SHA)等。
S250、在所述目标整体校验和与所述固件整体校验和相匹配的情况下,获取所要启动的固件的基础信息。
只有在目标整体校验和与固件整体校验和相匹配的情况下,才能获取所要启动的固件的基础信息,继而根据基础信息加载对应的所要启动的固件,从而有效提高了固件启动的安全性。
进一步地,固件的基础信息还可以包括所要启动的固件的校验类型以及所述所要启动的固件的目标校验和,那么,如图2C所示,在执行将获取的所要启动的固件加载到目标地址上之前,本实施例的固件启动方法还包括如下步骤:
S260、基于所述校验类型,确定所述所要启动的固件的固件校验和。
这里,根据校验类型可以确定计算所要启动的固件的目标检验和的算法,继而利用确定的算法就可以计算得到所要启动的固件的目标校验和。
上述用于计算目标校验和的算法可以但不限于是是信息摘要算法(MD)、循环冗余校验算法(CRC)、安全哈希算法(SHA)等。
S270、在所述固件校验和与所述目标校验和相匹配的情况下,将获取的所要启动的固件加载到所述目标地址上。
只有在固件校验和与目标校验和相匹配的情况下,才能加载与基础信息对应的所要启动的固件,从而有效提高了固件启动的安全性。
本实施例中,所述固件启动方法在获取所要启动的固件之后,并且在将得到的所述所要启动的固件加载到所述目标地址之前还包括:
基于所要启动的固件的基础信息,确定固件是否为压缩文件,并在固件为压缩文件的情况下,对固件进行解压缩处理。
很多情况下,固件经过压缩可以节省很多空间,如果存储的固件是经过压缩的,需要解压缩才能进行下一步处理。
本实施例中,所述固件启动方法在获取所要启动的固件之后,并且在将得到的所要启动的固件加载到所述目标地址之前还包括:
基于固件的基础信息,确定固件是否为加密文件,并在固件为加密文件的情况下,对固件进行解密处理。
如果固件为加密文件,需要先将固件进行解密后,再将解密后的固件加载到目标地址上。
应当说明的是,只有所要启动的固件的检验通过,即只有固件校验和与目标校验和相匹配的情况下,才会去判断所要启动的固件是否为压缩文件以及所要启动的固件是否为加密文件,所要启动的固件的检验不通过,不执行上述动作。因此,如果所要启动的固件是压缩和/或加密后的固件,那么步骤260中,计算固件校验和是基于压缩和/或加密后所要启动的固件计算的。
本实施例中,所述固件启动方法还包括:
在所述目标整体校验和与固件整体校验和不匹配的情况下,或在所述目标校验和与所述固件校验不匹配的情况下,进入异常处理模式,这里的异常处理模式为发出错误报警并停止当前步骤的执行或记录当前错误类型并继续当前步骤的执行。
本实施例中,嵌入式设备上电启动后,会自动执行固化的启动代码,通过该启动代码可以加载bootloader,bootloader根据需求加载、运行各部分对应的固件。bootloader需要知道各固件的起始位置、长度和加载的目标地址,才能正确的完成启动固件的工作。
本实施例的固件启动方法不需要使用文件系统也可以提高固件存储和使用的灵活性,极大的降低了系统复杂度,并且提高了存储器的空间利用率,同时,在不修改程序代码的情况下,可以更加灵活的更新各个固件。
实施例三
本实施例公开了一种固件启动方法,如图3所示,该方法包括如下步骤:
步骤一、获取固件整体信息,该固件整体信息包括固件的数量、所有固件的基础信息以及目标整体校验和。
步骤二、基于所有固件的基础信息确定固件整体校验和,将目标整体校验和与固件整体校验和进行比较(固件整体校验),如果不相等,则进入异常处理。异常处理根据需求是不同的,有两种处理流程:a.向上层处理程序报错,并结束当前固件启动方法;b.记录下错误,然后继续执行当前固件启动方法。如果相等,则固件整体校验通过,执行步骤三;
步骤三、获取单个固件的基础信息;
步骤四、基于单个固件的基础信息,得到该固件的校验类型和目标校验和;
步骤五、根据校验类型,计算固件的固件校验和,比较目标校验和与固件校验和,如果不相等,则进入异常处理;如果相等,则校验通过,执行步骤六;
步骤六、获取存储固件的存储器的身份标识、固件的起始位置和固件的长度;
步骤七、基于身份标识,判断固件位于主存储器还是从存储器;如果固件位于主存储器,则从主存储器中获取固件,如果位于从存储器中,则从从存储器中获取固件;
步骤八、判断固件是否需要解压缩处理,如果需要,则对固件进行解压缩后执行步骤九,如果不需要,则直接执行步骤九;
步骤九、判断固件是否需要解密处理,如果需要在,则对固件进行解密后执行步骤十,如果不需要,则直接执行步骤十;
步骤十、将处理后的固件加载到目标地址;
步骤十一、判断是否处理完所有的固件,如果处理完,则结束当前固件启动方法,否则返回步骤三。
基于相同的技术构思,本申请实施例还提供了一种固件生成存储装置、固件启动装置、电子设备以及计算机存储介质等等,具体可参见以下实施例。
实施例四
本实施例记载了一种固件生成存储装置,该实施例的装置与实施例一的方法相对应,如图4所示,包括:
第一存储模块401,用于将固件存放在第一预定存储器的第一预定位置上。
信息获取模块402,用于获取所述固件存放的第一预定存储器的身份标识、所述固件在所述第一预定存储器中的起始位置、所述固件的长度以及所述固件加载的目标地址,得到所述固件的基础信息。
第二存储模块403,用于将所述固件的基础信息存在第二预定存储器的第二预定位置上。
进一步地,固件生成存储装置还包括:
第一检验和确定模块404,用于获取所有固件的基础信息,并基于所有固件的基础信息确定目标整体校验和。
第三存储模块405,用于将所述目标整体校验和存储第三预定存储器的第三预定位置上。
进一步地,固件生成存储装置还包括:
第二检验和确定模块406,设置所述固件的校验类型,并基于所述校验类型确定所述固件的目标校验和。
信息获取模块402还用于将所述校验类型以及所述目标校验和加入到所述固件的基础信息中。
进一步地,固件生成存储装置还包括:
压缩模块407,用于将所述固件进行压缩。
信息获取模块402还用于将固件的压缩信息加入到所述固件的基础信息中。
进一步地,固件生成存储装置还包括:
加密模块408,用于将所述固件进行加密。
信息获取模块402还用于将固件的加密信息加入到所述固件的基础信息中。
实施例五
本实施例记载了一种固件启动装置,该实施例的装置与实施例二或三的方法相对应,如图5所示,包括:
获取信息模块501,用于获取所要启动的固件的基础信息,其中所述基础信息包括所述固件存放的存储器的身份标识、所述固件在所述存储器中的起始位置、所述固件的长度以及所述固件加载的目标地。
获取加载模块502,用于从所述身份标识对应的存储器中,根据所述起始位置和固件的长度获取所述基础信息对应的所要启动的固件,并将获取的所要启动的固件加载到所述目标地址上。
进一步地,固件启动装置还包括第三检验和确定模块503。
获取信息模块501还用于获取所有的固件的基础信息以及目标整体校验和。
第三检验和确定模块503用于基于所有的固件的基础信息确定固件整体校验和;
获取信息模块501还用于在所述目标整体校验和与所述固件整体校验和相匹配的情况下,获取所要启动的固件的基础信息。
进一步地,基础信息还包括所述所要启动的固件的校验类型以及所述所要启动的固件的目标校验和。
固件启动装置还包括第四检验和确定模块504。
第四检验和确定模块504用于基于所述校验类型,确定所述所要启动的固件的固件校验和。
获取加载模块502还用于在所述固件校验和与所述目标校验和相匹配的情况下,将获取的所要启动的固件加载到所述目标地址上。
实施例六
本实施例记载了一种电子设备,如图6所示,包括:处理器601、存储器602和总线603,所述存储器602存储有所述处理器601可执行的机器可读指令,当电子设备运行时,所述处理器601与所述存储器602之间通过总线通信,所述机器可读指令被所述处理器601执行时执行上述固件启动方法的步骤或上述固件生成存储方法的步骤。
实施例七
本实施例公开了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述固件启动方法的步骤或上述固件生成存储方法的步骤,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种固件生成存储方法,其特征在于,包括:
将固件存放在第一预定存储器的第一预定位置上;
获取所述固件存放的第一预定存储器的身份标识、所述固件在所述第一预定存储器中的起始位置、所述固件的长度以及所述固件加载的目标地址,得到所述固件的基础信息;
将所述固件的基础信息存在第二预定存储器的第二预定位置上。
2.根据权利要求1所述的方法,其特征在于,还包括:
获取所有固件的基础信息,并基于所有固件的基础信息确定目标整体校验和;
将所述目标整体校验和存储在第三预定存储器的第三预定位置上。
3.根据权利要求1所述的方法,其特征在于,还包括:
设置所述固件的校验类型,并基于所述校验类型确定所述固件的目标校验和;
将所述校验类型以及所述目标校验和加入到所述固件的基础信息中。
4.根据权利要求1所述的方法,其特征在于,还包括:
将所述固件进行压缩;
将所述固件的压缩信息加入到所述固件的基础信息中。
5.根据权利要求1所述的方法,其特征在于,还包括:
将所述固件进行加密;
将所述固件的加密信息加入到所述固件的基础信息中。
6.一种固件启动方法,其特征在于,包括:
获取所要启动的固件的基础信息,其中所述基础信息包括所述固件存放的存储器的身份标识、所述固件在所述存储器中的起始位置、所述固件的长度以及所述固件加载的目标地址;
从所述身份标识对应的存储器中,根据所述起始位置和所述长度获取所述基础信息对应的所要启动的固件,并将获取的所要启动的固件加载到所述目标地址上。
7.根据权利要求6所述的方法,其特征在于,还包括:
获取所有的固件的基础信息以及目标整体校验和;
基于所有的固件的基础信息确定固件整体校验和;
在所述目标整体校验和与所述固件整体校验和相匹配的情况下,获取所要启动的固件的基础信息。
8.根据权利要求6所述的方法,其特征在于,所述基础信息还包括所述所要启动的固件的校验类型以及所述所要启动的固件的目标校验和;
所述将获取的所要启动的固件加载到所述目标地址上,包括:
基于所述校验类型,确定所述所要启动的固件的固件校验和;
在所述固件校验和与所述目标校验和相匹配的情况下,将获取的所要启动的固件加载到所述目标地址上。
9.一种固件生成存储装置,其特征在于,包括:
第一存储模块,用于将固件存放在第一预定存储器的第一预定位置上;
信息获取模块,用于获取所述固件存放的第一预定存储器的身份标识、所述固件在所述第一预定存储器中的起始位置、所述固件的长度以及所述固件加载的目标地址,得到所述固件的基础信息;
第二存储模块,用于将所述固件的基础信息存在第二预定存储器的第二预定位置上。
10.一种固件启动装置,其特征在于,包括:
获取信息模块,用于获取所要启动的固件的基础信息,其中所述基础信息包括所述固件存放的存储器的身份标识、所述固件在所述存储器中的起始位置、所述固件的长度以及所述固件加载的目标地址;
获取加载模块,用于从所述身份标识对应的存储器中,根据所述起始位置和固件的长度获取所述基础信息对应的所要启动的固件,并将获取的所要启动的固件加载到所述目标地址上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811371859.8A CN109471642A (zh) | 2018-11-15 | 2018-11-15 | 固件生成存储方法及装置、固件启动方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811371859.8A CN109471642A (zh) | 2018-11-15 | 2018-11-15 | 固件生成存储方法及装置、固件启动方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109471642A true CN109471642A (zh) | 2019-03-15 |
Family
ID=65674002
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811371859.8A Pending CN109471642A (zh) | 2018-11-15 | 2018-11-15 | 固件生成存储方法及装置、固件启动方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109471642A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111443953A (zh) * | 2020-03-24 | 2020-07-24 | 烟台艾睿光电科技有限公司 | 基于fpga的红外成像系统的启动方法、装置及介质 |
CN112579340A (zh) * | 2020-12-10 | 2021-03-30 | 潍柴动力股份有限公司 | 电子控制单元的数据校验方法、装置、设备及存储介质 |
CN112612473A (zh) * | 2020-12-23 | 2021-04-06 | 苏州三六零智能安全科技有限公司 | 文件压缩加壳方法、装置、设备及存储介质 |
CN114942794A (zh) * | 2022-06-20 | 2022-08-26 | 南京大鱼半导体有限公司 | 嵌入式系统固件处理方法、装置、设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020178352A1 (en) * | 2001-05-22 | 2002-11-28 | Lambino John P. | Firmware upgrade using address conversion |
CN1930553A (zh) * | 2004-05-27 | 2007-03-14 | 国际商业机器公司 | 访问逻辑分区中的存储器 |
CN101446904A (zh) * | 2007-11-26 | 2009-06-03 | 联发科技股份有限公司 | 管理光存储装置的固件的方法及装置 |
CN101944051A (zh) * | 2010-09-29 | 2011-01-12 | 山东大学 | 片上多备份的高可靠嵌入式系统固件及其工作方法 |
CN103150184A (zh) * | 2013-03-12 | 2013-06-12 | 青岛中星微电子有限公司 | 一种对闪存进行操作的方法和系统芯片 |
CN105808292A (zh) * | 2016-03-07 | 2016-07-27 | 西安诺瓦电子科技有限公司 | 嵌入式终端设备的固件升级方法 |
CN107066300A (zh) * | 2017-04-21 | 2017-08-18 | 杭州宏杉科技股份有限公司 | 一种存储设备的固件升级方法和存储设备 |
CN107315616A (zh) * | 2017-06-30 | 2017-11-03 | 郑州云海信息技术有限公司 | 一种固件的加载方法、装置及电子设备 |
CN107515799A (zh) * | 2016-06-16 | 2017-12-26 | 上海奕瑞光电子科技有限公司 | 一种平板探测器的固件加载方法 |
-
2018
- 2018-11-15 CN CN201811371859.8A patent/CN109471642A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020178352A1 (en) * | 2001-05-22 | 2002-11-28 | Lambino John P. | Firmware upgrade using address conversion |
CN1930553A (zh) * | 2004-05-27 | 2007-03-14 | 国际商业机器公司 | 访问逻辑分区中的存储器 |
CN101446904A (zh) * | 2007-11-26 | 2009-06-03 | 联发科技股份有限公司 | 管理光存储装置的固件的方法及装置 |
CN101944051A (zh) * | 2010-09-29 | 2011-01-12 | 山东大学 | 片上多备份的高可靠嵌入式系统固件及其工作方法 |
CN103150184A (zh) * | 2013-03-12 | 2013-06-12 | 青岛中星微电子有限公司 | 一种对闪存进行操作的方法和系统芯片 |
CN105808292A (zh) * | 2016-03-07 | 2016-07-27 | 西安诺瓦电子科技有限公司 | 嵌入式终端设备的固件升级方法 |
CN107515799A (zh) * | 2016-06-16 | 2017-12-26 | 上海奕瑞光电子科技有限公司 | 一种平板探测器的固件加载方法 |
CN107066300A (zh) * | 2017-04-21 | 2017-08-18 | 杭州宏杉科技股份有限公司 | 一种存储设备的固件升级方法和存储设备 |
CN107315616A (zh) * | 2017-06-30 | 2017-11-03 | 郑州云海信息技术有限公司 | 一种固件的加载方法、装置及电子设备 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111443953A (zh) * | 2020-03-24 | 2020-07-24 | 烟台艾睿光电科技有限公司 | 基于fpga的红外成像系统的启动方法、装置及介质 |
CN111443953B (zh) * | 2020-03-24 | 2023-08-01 | 烟台艾睿光电科技有限公司 | 基于fpga的红外成像系统的启动方法、装置及介质 |
CN112579340A (zh) * | 2020-12-10 | 2021-03-30 | 潍柴动力股份有限公司 | 电子控制单元的数据校验方法、装置、设备及存储介质 |
CN112579340B (zh) * | 2020-12-10 | 2023-03-21 | 潍柴动力股份有限公司 | 电子控制单元的数据校验方法、装置、设备及存储介质 |
CN112612473A (zh) * | 2020-12-23 | 2021-04-06 | 苏州三六零智能安全科技有限公司 | 文件压缩加壳方法、装置、设备及存储介质 |
CN112612473B (zh) * | 2020-12-23 | 2022-11-04 | 苏州三六零智能安全科技有限公司 | 文件压缩加壳方法、装置、设备及存储介质 |
CN114942794A (zh) * | 2022-06-20 | 2022-08-26 | 南京大鱼半导体有限公司 | 嵌入式系统固件处理方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109471642A (zh) | 固件生成存储方法及装置、固件启动方法及装置 | |
CN106250192A (zh) | 上位机的软件升级方法及系统 | |
CN110995825B (zh) | 一种智能合约的发布方法、智能节点设备及存储介质 | |
CN110413269A (zh) | 接口编码方法、服务器及计算机可读存储介质 | |
CN109144487B (zh) | 进件业务开发方法、装置、计算机设备和存储介质 | |
CN105208135A (zh) | 一种文件传输方法和设备 | |
CN105095767A (zh) | 基于文件数据块校验的安全启动系统与方法 | |
CN104461641A (zh) | 一种数据烧写方法、系统、烧写设备以及目标设备 | |
CN113504918A (zh) | 设备树配置优化方法、装置、计算机设备和存储介质 | |
US11693971B2 (en) | Bootloader verification extension | |
CN114281605B (zh) | 一种基于区块链分区存储的计算方法和系统 | |
CN113486060B (zh) | 数据访问处理方法和装置、存储介质及电子设备 | |
CN109491716A (zh) | 启动方法及装置、程序存储方法及装置 | |
CN108389124B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN104267985A (zh) | 一种软件加载方法和设备 | |
CN111865616B (zh) | 基于ecdsa算法生成密钥对的方法及装置 | |
CN103425932A (zh) | 签名校验方法和终端设备 | |
CN105007286B (zh) | 解码方法和装置及云存储方法和系统 | |
CN109496417A (zh) | 数据测试方法、装置、设备/终端/服务器及计算机可读存储介质 | |
CN113056739A (zh) | 到瞬态、非持久性存储电路中的文件系统的验证和安装 | |
CN105354107A (zh) | NOR Flash的数据传输方法及系统 | |
CN112445705B (zh) | 基于可信校验的软件运行系统、方法、装置和计算机设备 | |
CN115221244A (zh) | 区块链跨链方法、装置、计算机设备和存储介质 | |
CN114489737A (zh) | 多固件ota升级方法及装置、服务端及存储介质 | |
US20150113243A1 (en) | Method for backing up data outside a secure microcircuit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190315 |