CN115543488B - 一种多核SoC的固件启动方法及相关装置 - Google Patents
一种多核SoC的固件启动方法及相关装置 Download PDFInfo
- Publication number
- CN115543488B CN115543488B CN202211508455.5A CN202211508455A CN115543488B CN 115543488 B CN115543488 B CN 115543488B CN 202211508455 A CN202211508455 A CN 202211508455A CN 115543488 B CN115543488 B CN 115543488B
- Authority
- CN
- China
- Prior art keywords
- firmware
- new version
- starting
- ram area
- original edition
- 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 66
- 238000005192 partition Methods 0.000 claims abstract description 101
- 238000012795 verification Methods 0.000 claims description 89
- 238000004590 computer program Methods 0.000 claims description 10
- 230000000694 effects Effects 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000000873 masking effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种多核SoC的固件启动方法,涉及服务器技术领域,包括:将FLASH存储区的第一主分区中的新版固件加载到RAM区,并启动加载到所述RAM区的所述新版固件;若所述新版固件启动失败,则将所述FLASH存储区的第二主分区中的原版固件加载到所述RAM区,并启动加载至所述RAM区的所述原版固件;若所述原版固件启动失败,则将所述FLASH存储区的备份区中的只读固件加载到所述RAM区,并启动所述只读固件。该方法能够确保固件启动,不会影响系统正常运行。本申请还公开了一种多核SoC的固件启动装置、设备以及计算机可读存储介质,均具有上述技术效果。
Description
技术领域
本申请涉及服务器技术领域,特别涉及一种多核SoC的固件启动方法;还涉及一种多核SoC的固件启动装置、设备以及计算机可读存储介质。
背景技术
随着集成电路IP(intellectual property core,知识产权核)的发展,SoC(System-on-Chip,片上系统)作为嵌入式计算系统沟通核心部件已广泛应用于通信、高性能计算机、工业控制等诸多领域。目前的SoC基本上都是在单芯片中集成多个CPU(CentralProcessing Unit,中央处理器)核心,形成通常所说的4核、8核或更多核的SoC芯片。
支持多核处理器平台的实时操作系统体系结构SMP(Symmetric Multi-processing,有对称多处理)架构和AMP(Asymmetric Multi-processing,不对称多处理)架构两种。AMP架构中,每个CPU上运行一个操作系统,每个操作系统拥有自己专用的内存,相互之间通过访问受限的共享内存进行通信。因此,AMP架构下的SoC的各个核有各自独立的系统和固件。
多核SoC的固件安全启动对于固件开发以及固件升级起到关键的作用,然而传统的多核SoC固件的启动方法存在如下技术缺陷:
1)存在固件安全隐患;
2)如果启动中遇到固件损坏、校验失败等无法正常启动;
3)多核SoC固件任何一个固件出现校验失败、启动失败均使系统无法正常启动;
4)固件启动失败后无法回退版本,影响系统正常运行。
因此,如何解决上述技术缺陷已成为本领域技术人员亟待解决的技术问题。
发明内容
本申请的目的是提供一种多核SoC的固件启动方法,能够确保固件启动,不会影响系统正常运行。本申请的另一个目的是提供一种多核SoC的固件启动装置、设备以及计算机可读存储介质,均具有上述技术效果。
为解决上述技术问题,本申请提供了一种多核SoC的固件启动方法,包括:
将FLASH存储区的第一主分区中的新版固件加载到RAM区,并启动加载到所述RAM区的所述新版固件;
若所述新版固件启动失败,则将所述FLASH存储区的第二主分区中的原版固件加载到所述RAM区,并启动加载至所述RAM区的所述原版固件;
若所述原版固件启动失败,则将所述FLASH存储区的备份区中的只读固件加载到所述RAM区,并启动所述只读固件。
可选的,所述新版固件为经过签名加密的固件;签名加密的方式包括:分别对各个核固件进行签名加密;将签名加密后的各个核固件整合为新版固件整体,并对所述新版固件整体进行签名加密。
可选的,所述启动加载至所述RAM区的所述新版固件前还包括:
对所述新版固件整体进行签名校验;
若所述新版固件整体签名校验成功,则对所述新版固件中的各个所述核固件进行签名校验;
若所述新版固件中各个所述核固件均签名校验成功,则启动加载至所述RAM区的所述新版固件;
若所述新版固件整体签名校验失败或至少一个所述核固件签名校验失败,则将所述第二主分区中的所述原版固件加载到所述RAM区,并启动加载至所述RAM区的所述原版固件。
可选的,所述启动加载至所述RAM区的所述原版固件前还包括:
对所述原版固件整体进行签名校验;
若所述原版固件整体签名校验成功,则对所述原版固件中的各个所述核固件进行签名校验;
若所述原版固件中各个所述核固件均签名校验成功,则启动加载至所述RAM区的所述原版固件;
若所述原版固件整体签名校验失败或至少一个所述核固件签名校验失败,则将所述FLASH存储区的备份区中的只读固件加载到所述RAM区,并启动所述只读固件。
可选的,所述新版固件整体的签名加密算法与所述核固件的签名加密算法不同。
可选的,所述新版固件整体的签名加密算法为非对称加密算法,所述核固件的签名加密算法为对称加密算法。
可选的,所述将FLASH存储区的第一主分区中的新版固件加载到RAM区前还包括:
读取所述FLASH存储区的FLASH固件升级信息;
若所述FLASH存储区固件升级成功,则将所述第一主分区中的所述新版固件加载到所述RAM区;
若所述FLASH存储区固件升级失败,则将所述第二主分区中的所述原版固件加载到所述RAM区,并启动加载至所述RAM区的所述原版固件。
可选的,还包括:
当签名校验失败时,记录校验失败信息。
可选的,还包括:
当固件启动失败时,记录启动失败信息。
可选的,还包括:
当固件启动成功时,读取固件启动信息;
若根据所述固件启动信息确定所述新版固件启动成功,则将所述第一主分区中的所述新版固件更新至所述第二主分区;
若根据所述固件启动信息确定所述原版固件启动成功,则将所述第二主分区中的所述原版固件更新至所述第一主分区;
若根据所述固件启动信息确定所述只读固件启动成功,则重新进行固件升级与启动。
可选的,还包括:
在所述FLASH存储区的固件升级信息存储区存储所述FLASH固件升级信息。
可选的,所述FLASH固件升级信息包括固件名称、固件版本、固件升级状态以及异常信息。
为解决上述技术问题,本申请还提供了一种多核SoC的固件启动装置,包括:
第一启动模块,用于将FLASH存储区的第一主分区中的新版固件加载到RAM区,并启动加载到所述RAM区的所述新版固件;
第二启动模块,用于若所述新版固件启动失败,则将所述FLASH存储区的第二主分区中的原版固件加载到所述RAM区,并启动加载至所述RAM区的所述原版固件;
第三启动模块,用于若所述原版固件启动失败,则将所述FLASH存储区的备份区中的只读固件加载到所述RAM区,并启动所述只读固件。
为解决上述技术问题,本申请还提供了一种多核SoC的固件启动设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上任一项所述的多核SoC的固件启动方法的步骤。
为解决上述技术问题,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述的多核SoC的固件启动方法的步骤。
本申请所提供的多核SoC的固件启动方法,包括:将FLASH存储区的第一主分区中的新版固件加载到RAM区,并启动加载到所述RAM区的所述新版固件;若所述新版固件启动失败,则将所述FLASH存储区的第二主分区中的原版固件加载到所述RAM区,并启动加载至所述RAM区的所述原版固件;若所述原版固件启动失败,则将所述FLASH存储区的备份区中的只读固件加载到所述RAM区,并启动所述只读固件。
可见,本申请所提供的多核SoC的固件启动方法,在FLASH存储区设置了用于写入新版固件的第一主分区、用于存储原版固件的第二主分区以及用于存储只读固件的备份区,只读固件能够确保启动成功。如果新版固件启动失败,则启动原版固件即回退至升级前版本。如果原版固件启动失败,则最终启动只读固件,确保固件可以正常启动,不会影响系统正常运行。
本申请所提供的多核SoC的固件启动装置、设备以及计算机可读存储介质均具有上述技术效果。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例所提供的一种多核SoC的固件启动方法的流程示意图;
图2为本申请实施例所提供的一种FLASH存储区的划分示意图;
图3为本申请实施例所提供的一种SoC固件包组成示意图;
图4为本申请实施例所提供的一种SoC、Host、Flash交互示意图;
图5为本申请实施例所提供的一种多核SoC的固件启动流程示意图;
图6为本申请实施例所提供的一种多核SoC的固件启动装置的示意图;
图7为本申请实施例所提供的一种多核SoC的固件启动设备的示意图。
具体实施方式
本申请的核心是提供一种多核SoC的固件启动方法,能够在发生固件损坏、校验失败等时,回退至升级前的版本,确保固件启动,不会影响系统正常运行。本申请的另一个核心是提供一种多核SoC的固件启动装置、设备以及计算机可读存储介质,均具有上述技术效果。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参考图1,图1为本申请实施例所提供的一种多核SoC的固件启动方法的流程示意图,参考图1所示,该方法包括:
S101:将FLASH存储区的第一主分区中的新版固件加载到RAM区,并启动加载到所述RAM区的所述新版固件;
S102:若所述新版固件启动失败,则将所述FLASH存储区的第二主分区中的原版固件加载到所述RAM区,并启动加载至所述RAM区的所述原版固件;
S103:若所述原版固件启动失败,则将所述FLASH存储区的备份区中的只读固件加载到所述RAM区,并启动所述只读固件。
本实施例在FLASH分区设置了第一主分区、第二主分区以及备份区。固件升级过程中只对第一主分区的固件进行更新。第二主分区保留原版本固件,旨在实现版本回退。备份区存储只读固件,旨在确保固件安全启动。
例如,以SoC包括四核(core0、core1、core2、core3)为例,参考图2所示,在FLASH分区设置第一主分区Main0与第二主分区Main1以及备份区 Backup。固件升级过程中只对Main0的固件进行更新,Main1保留原版固件。图2中FW即固件,全称为Firmware。
SoC执行启动工作时,首先将FLASH存储区的第一主分区中的新版固件加载到RAM区,并启动加载到RAM区的新版固件。如果新版固件启动失败,则重新将FLASH存储区的第二主分区中的原版固件加载到RAM区,并启动加载至RAM区的原版固件。如果原版固件也启动失败,则最后将FLASH存储区的备份区中的只读固件加载到RAM区,并启动只读固件。
在一些实施例中,所述将FLASH存储区的第一主分区中的新版固件加载到RAM区前还包括:
读取所述FLASH存储区的FLASH固件升级信息;
若所述FLASH存储区固件升级成功,则将所述第一主分区中的所述新版固件加载到所述RAM区;
若所述FLASH存储区固件升级失败,则将所述第二主分区中的所述原版固件加载到所述RAM区,并启动加载至所述RAM区的所述原版固件。
具体而言,主机发起固件升级指令,SoC执行固件升级工作,对主机下载到RAM(Random Access Memory,随机存取存储器)缓存区的新版固件进行完整性校验,并在完整性校验成功后,将新版固件写入FLASH存储区的第一主分区。新版固件完整性校验成功,将新版固件写入FLASH存储区的第一主分区, FLASH存储区固件升级成功。新版固件完整性校验不成功,不将新版固件写入FLASH存储区的第一主分区,FLASH存储区固件升级失败。
主机发起restart指令即重启指令,SoC执行固件启动工作。首先完成基本硬件初始化,包括屏蔽中断、设置时钟RAM寄存器等等,以及检测系统内存映射,为加载固件准备可用的RAM空间。然后读取FLASH固件升级信息。如果固件升级成功,则将第一主分区中的新版固件加载到RAM区,并启动RAM区中的新版固件。如果新版固件启动失败,则将FLASH存储区的第二主分区中的原版固件加载到RAM区,并启动加载至RAM区的原版固件。如果原版固件也启动失败,则将FLASH存储区的备份区中的只读固件加载到RAM区,并启动只读固件。
如果固件升级失败,则将第二主分区中的原版固件加载到RAM区,并启动RAM区中的原版固件,即退回至固件升级前的版本。如果原版固件启动失败,则将FLASH存储区的备份区中的只读固件加载到RAM区,并启动只读固件。
为了确保固件的安全性,在一些实施例中,所述新版固件为经过签名加密的固件;签名加密的方式包括:分别对各个核固件进行签名加密;将签名加密后的各个核固件整合为新版固件整体,并对所述新版固件整体进行签名加密。
本实施例对需要更新到FLASH存储区的第一主分区的各个核固件分别进行签名加密,并将签名加密后的所有核固件统一打包为一个新版固件整体,对新版固件整体再进行签名加密,以此可以较好的保证固件的安全性。
其中,在一些实施例中,所述新版固件整体的签名加密算法与所述核固件的签名加密算法不同。所述新版固件整体的签名加密算法可以为非对称加密算法,所述核固件的签名加密算法可以为对称加密算法。
例如,参考图3所示,可以采用对称加密算法AES对各个核固件进行签名加密,采用非对称加密算法RSA对新版固件整体进行签名加密。
在新版固件为签名加密的固件的基础上,在一些实施例中,所述启动加载至所述RAM区的所述新版固件前还包括:
对所述新版固件整体进行签名校验;
若所述新版固件整体签名校验成功,则对所述新版固件中的各个所述核固件进行签名校验;
若所述新版固件中各个所述核固件均签名校验成功,则启动加载至所述RAM区的所述新版固件;
若所述新版固件整体签名校验失败或至少一个所述核固件签名校验失败,则将所述第二主分区中的所述原版固件加载到所述RAM区,并启动加载至所述RAM区的所述原版固件。
新版固件整体签名校验失败或者至少一个核固件签名校验失败,均表示新版固件签名校验失败。如果新版固件签名校验失败,新版固件签名校验失败,则不启动新版固件,转而将所述FLASH存储区的第二主分区中的原版固件加载到所述RAM区,并启动加载至所述RAM区的原版固件。
当新版固件签名校验失败或核固件签名校验失败时,可记录校验失败信息。
第二主分区中的原版固件往往是上一次升级时的新版固件,每次都对新版固件进行签名加密的基础上,相应的,所述启动加载至所述RAM区的所述原版固件前还包括:
对所述原版固件整体进行签名校验;
若所述原版固件整体签名校验成功,则对所述原版固件中的各个所述核固件进行签名校验;
若所述原版固件中各个所述核固件均签名校验成功,则启动加载至所述RAM区的所述原版固件;
若所述原版固件整体签名校验失败或至少一个所述核固件签名校验失败,则将所述FLASH存储区的备份区中的只读固件加载到所述RAM区,并启动所述只读固件。
原版固件整体签名校验失败或者至少一个核固件签名校验失败,均表示原版固件签名校验失败。如果原版固件签名校验失败,则不启动原版固件,转而将所述FLASH存储区的备份区中的只读固件加载到所述RAM区,并启动加载至所述RAM区的只读固件。
当原版固件签名校验失败或核固件签名校验失败时,可记录校验失败信息。
当固件启动失败时,可记录启动失败信息。
进一步,在一些实施例中,还包括:
当固件启动成功时,读取固件启动信息;
若根据所述固件启动信息确定所述新版固件启动成功,则将所述第一主分区中的所述新版固件更新至所述第二主分区;
若根据所述固件启动信息确定所述原版固件启动成功,则将所述第二主分区中的所述原版固件更新至所述第一主分区;
若根据所述固件启动信息确定所述只读固件启动成功,则重新进行固件升级与启动。
具体而言,固件启动成功,系统正常运行后,从FLASH存储区读取固件启动信息,并据此判断启动成功的固件版本。如果是新版固件启动成功,则将第一主分区中的新版固件更新到第二主分区。如果是原版固件启动成功,则将第二主分区中的原版固件更新到第一主分区。如果是只读固件启动成功,则重新进行固件升级与启动。
进一步,在一些实施例中,还包括:
在所述FLASH存储区的固件升级信息存储区存储FLASH固件升级信息。
其中,所述FLASH固件升级信息可以包括固件名称、固件版本、固件升级状态以及异常信息。
如图2所示,FLASH存储区还设置有固件升级信息存储区(图2中所示的FW UpdateInfo),在此固件升级信息存储区存储固件升级中的固件名称、固件版本、固件升级状态以及异常信息。
通过FLASH存储区记录固件升级信息,具有掉电非易失性,便于故障分析、固件管理,版本控制,可以增加系统的可靠性、可用性。
结合图4所示的SoC、Host与Flash之间的交互流程,以及图5所示的多核SoC固件启动流程,以下阐述一种具体的多核SoC固件启动流程:
固件升级前对各个核固件分别进行签名加密,然后统一集成为新版固件并进行签名加密。
Host发起固件升级指令后,SoC执行固件升级工作,对Host下载到至RAM中的新版固件进行完整性校验,校验成功后将加密的新版固件写入Flash存储区的第一主分区。
Host发起restart指令后,由SoC开始新版固件的启动过程。首先完成基本硬件初始化,包括屏蔽中断、设置时钟RAM寄存器等,以及检测系统内存映射,为加载固件准备可用的RAM空间。读取Flash固件升级信息。如果固件升级成功,则将新版固件由Flash存储区的第一主分区加载到对应的RAM区。若固件升级失败,则加载Flash存储区的第二主分区中的原版固件,即回退至固件升级前版本,保证固件安全性。
对加载至RAM区的新版固件进行RSA签名校验,若校验失败,则加载Flash存储区的第二主分区中的原版固件,并对原版固件进行RSA签名校验,以及记录校验失败信息。如果Flash存储区的第二主分区的原版固件也校验失败,则加载Flash存储区的备份区中的只读固件,并记录校验失败信息。
如果新版固件RSA签名校验成功,再对新版固件中的各个核固件分别进行AES解密。当有任何一个核固件解密不通过时,加载Flash存储区的第二主分区中的原版固件,并对原版固件进行RSA签名校验,并记录校验失败信息。如果Flash存储区的第二主分区的原版固件校验失败,或者原版固件中有至少一个核固件解密不通过,则加载Flash存储区的备份区中的只读固件,并记录校验失败信息。
固件解密成功后进入固件启动阶段,依次启动SoC的各个核固件。如果新版固件启动失败,记录启动失败信息,并重新加载Flash存储区的第一主分区中的原版固件,并重新对原版固件进行校验、解密,以及在校验、解密通过后启动原版固件。若原版固件启动失败,记录启动失败信息,并加载备份区中的只读固件,并启动只读固件。
固件启动,系统正常运行后,从Flash存储区读取固件启动信息。如果是从Flash存储区的第一主分区启动,则在系统稳定运行一段时间后,将Flash存储区的第一主分区中的新版固件更新至Flash存储区的第二主分区中。如果是从Flash存储区的第二主分区启动,则将Flash存储区的第二主分区中的原版固件更新至Flash存储区的第一主分区,达到版本回退的目的。如果是从备份区启动,则重新进行固件升级与启动。
综上所述,本申请所提供的多核SoC的固件启动方法,在FLASH存储区设置了用于写入新版固件的第一主分区、用于存储原版固件的第二主分区以及用于存储只读固件的备份区,只读固件能够确保启动成功。如果新版固件启动失败,则启动原版固件即回退至升级前版本。如果原版固件启动失败,则最终启动只读固件,确保固件可以正常启动,不会影响系统正常运行。
本申请还提供了一种多核SoC的固件启动装置,下文描述的该装置可以与上文描述的方法相互对应参照。请参考图6,图6为本申请实施例所提供的一种多核SoC的固件启动装置的示意图,结合图6所示,该装置包括:
第一启动模块10,用于将FLASH存储区的第一主分区中的新版固件加载到RAM区,并启动加载到所述RAM区的所述新版固件;
第二启动模块20,用于若所述新版固件启动失败,则将所述FLASH存储区的第二主分区中的原版固件加载到所述RAM区,并启动加载至所述RAM区的所述原版固件;
第三启动模块30,用于若所述原版固件启动失败,则将所述FLASH存储区的备份区中的只读固件加载到所述RAM区,并启动所述只读固件。
在上述实施例的基础上,作为一种具体的实施方式,所述新版固件为经过签名加密的固件;签名加密的方式包括:分别对各个核固件进行签名加密;将签名加密后的各个核固件整合为新版固件整体,并对所述新版固件整体进行签名加密。
在上述实施例的基础上,作为一种具体的实施方式,还包括:
第一签名校验模块,用于对所述新版固件整体进行签名校验;
第二签名校验模块,用于若所述新版固件整体签名校验成功,则对所述新版固件中的各个所述核固件进行签名校验;
若所述新版固件中各个所述核固件均签名校验成功,则所述第一启动模块10启动加载至所述RAM区的所述新版固件;
若所述新版固件整体签名校验失败或至少一个所述核固件签名校验失败,则所述第二启动模块20将所述第二主分区中的所述原版固件加载到所述RAM区,并启动加载至所述RAM区的所述原版固件。
在上述实施例的基础上,作为一种具体的实施方式,还包括:
第三签名校验模块,用于对所述原版固件整体进行签名校验;
第四签名校验模块,用于若所述原版固件整体签名校验成功,则对所述原版固件中的各个所述核固件进行签名校验;
若所述原版固件中各个所述核固件均签名校验成功,则所述第二启动模块20启动加载至所述RAM区的所述原版固件;
若所述原版固件整体签名校验失败或至少一个所述核固件签名校验失败,则所述第三启动模块30将所述FLASH存储区的备份区中的只读固件加载到所述RAM区,并启动所述只读固件。
在上述实施例的基础上,作为一种具体的实施方式,所述新版固件整体的签名加密算法与所述核固件的签名加密算法不同。
在上述实施例的基础上,作为一种具体的实施方式,所述新版固件整体的签名加密算法为非对称加密算法,所述核固件的签名加密算法为对称加密算法。
在上述实施例的基础上,作为一种具体的实施方式,还包括:
第一读取模块,用于读取所述FLASH存储区的FLASH固件升级信息;
若所述FLASH存储区固件升级成功,则所述第一启动模块10将所述第一主分区中的所述新版固件加载到所述RAM区;
若所述FLASH存储区固件升级失败,则所述第二启动模块20将所述第二主分区中的所述原版固件加载到所述RAM区,并启动加载至所述RAM区的所述原版固件。
在上述实施例的基础上,作为一种具体的实施方式,还包括:
第一记录模块,用于当签名校验失败时,记录校验失败信息。
在上述实施例的基础上,作为一种具体的实施方式,还包括:
第二记录模块,用于当固件启动失败时,记录启动失败信息。
在上述实施例的基础上,作为一种具体的实施方式,还包括:
第二读取模块,用于当固件启动成功时,读取固件启动信息;
第一更新模块,用于若根据所述固件启动信息确定所述新版固件启动成功,则将所述第一主分区中的所述新版固件更新至所述第二主分区;
第二更新模块,用于若根据所述固件启动信息确定所述原版固件启动成功,则将所述第二主分区中的所述原版固件更新至所述第一主分区;
重置模块,用于若根据所述固件启动信息确定所述只读固件启动成功,则重新进行固件升级与启动。
在上述实施例的基础上,作为一种具体的实施方式,还包括:
存储模块,用于在所述FLASH存储区的固件升级信息存储区存储所述FLASH固件升级信息。
在上述实施例的基础上,作为一种具体的实施方式,所述FLASH固件升级信息包括固件名称、固件版本、固件升级状态以及异常信息。
本申请所提供的多核SoC的固件启动装置,在FLASH存储区设置了用于写入新版固件的第一主分区、用于存储原版固件的第二主分区以及用于存储只读固件的备份区,只读固件能够确保启动成功。如果新版固件启动失败,则启动原版固件即回退至升级前版本。如果原版固件启动失败,则最终启动只读固件,确保固件可以正常启动,不会影响系统正常运行。
本申请还提供了一种多核SoC的固件启动设备,参考图7所示,该设备包括存储器1和处理器2。
存储器1,用于存储计算机程序;
处理器2,用于执行计算机程序实现如下的步骤:
将FLASH存储区的第一主分区中的新版固件加载到RAM区,并启动加载到所述RAM区的所述新版固件;若所述新版固件启动失败,则将所述FLASH存储区的第二主分区中的原版固件加载到所述RAM区,并启动加载至所述RAM区的所述原版固件;若所述原版固件启动失败,则将所述FLASH存储区的备份区中的只读固件加载到所述RAM区,并启动所述只读固件。
对于本申请所提供的设备的介绍请参照上述方法实施例,本申请在此不做赘述。
本申请还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如下的步骤:
将FLASH存储区的第一主分区中的新版固件加载到RAM区,并启动加载到所述RAM区的所述新版固件;若所述新版固件启动失败,则将所述FLASH存储区的第二主分区中的原版固件加载到所述RAM区,并启动加载至所述RAM区的所述原版固件;若所述原版固件启动失败,则将所述FLASH存储区的备份区中的只读固件加载到所述RAM区,并启动所述只读固件。
该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory ,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
对于本申请所提供的计算机可读存储介质的介绍请参照上述方法实施例,本申请在此不做赘述。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备以及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的多核SoC的固件启动方法、装置、设备以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围。
Claims (11)
1.一种多核SoC的固件启动方法,其特征在于,包括:
将FLASH存储区的第一主分区中的新版固件加载到RAM区,并启动加载到所述RAM区的所述新版固件;固件升级过程中对所述第一主分区的固件进行更新;
若所述新版固件启动失败,则将所述FLASH存储区的第二主分区中的原版固件加载到所述RAM区,并启动加载至所述RAM区的所述原版固件;
若所述原版固件启动失败,则将所述FLASH存储区的备份区中的只读固件加载到所述RAM区,并启动所述只读固件;
所述新版固件为经过签名加密的固件;签名加密的方式包括:分别对各个核固件进行签名加密;将签名加密后的各个核固件整合为新版固件整体,并对所述新版固件整体进行签名加密;所述新版固件整体的签名加密算法与所述核固件的签名加密算法不同;
所述启动加载至所述RAM区的所述新版固件前还包括:
对所述新版固件整体进行签名校验;
若所述新版固件整体签名校验成功,则对所述新版固件中的各个所述核固件进行签名校验;
若所述新版固件中各个所述核固件均签名校验成功,则启动加载至所述RAM区的所述新版固件;
若所述新版固件整体签名校验失败或至少一个所述核固件签名校验失败,则将所述第二主分区中的所述原版固件加载到所述RAM区,并启动加载至所述RAM区的所述原版固件;
还包括:
当固件启动成功时,读取固件启动信息;
若根据所述固件启动信息确定所述新版固件启动成功,则将所述第一主分区中的所述新版固件更新至所述第二主分区;
若根据所述固件启动信息确定所述原版固件启动成功,则将所述第二主分区中的所述原版固件更新至所述第一主分区;
若根据所述固件启动信息确定所述只读固件启动成功,则重新进行固件升级与启动。
2.根据权利要求1所述的固件启动方法,其特征在于,所述启动加载至所述RAM区的所述原版固件前还包括:
对所述原版固件整体进行签名校验;
若所述原版固件整体签名校验成功,则对所述原版固件中的各个核固件进行签名校验;
若所述原版固件中各个所述核固件均签名校验成功,则启动加载至所述RAM区的所述原版固件;
若所述原版固件整体签名校验失败或至少一个所述核固件签名校验失败,则将所述FLASH存储区的备份区中的只读固件加载到所述RAM区,并启动所述只读固件。
3.根据权利要求1所述的固件启动方法,其特征在于,所述新版固件整体的签名加密算法为非对称加密算法,所述核固件的签名加密算法为对称加密算法。
4.根据权利要求1所述的固件启动方法,其特征在于,所述将FLASH存储区的第一主分区中的新版固件加载到RAM区前还包括:
读取所述FLASH存储区的FLASH固件升级信息;
若所述FLASH存储区固件升级成功,则将所述第一主分区中的所述新版固件加载到所述RAM区;
若所述FLASH存储区固件升级失败,则将所述第二主分区中的所述原版固件加载到所述RAM区,并启动加载至所述RAM区的所述原版固件。
5.根据权利要求1或权利要求2所述的固件启动方法,其特征在于,还包括:
当签名校验失败时,记录校验失败信息。
6.根据权利要求1所述的固件启动方法,其特征在于,还包括:
当固件启动失败时,记录启动失败信息。
7.根据权利要求1所述的固件启动方法,其特征在于,还包括:
在所述FLASH存储区的固件升级信息存储区存储所述FLASH固件升级信息。
8.根据权利要求7所述的固件启动方法,其特征在于,所述FLASH固件升级信息包括固件名称、固件版本、固件升级状态以及异常信息。
9.一种多核SoC的固件启动装置,其特征在于,包括:
第一启动模块,用于将FLASH存储区的第一主分区中的新版固件加载到RAM区,并启动加载到所述RAM区的所述新版固件;固件升级过程中对所述第一主分区的固件进行更新;
第二启动模块,用于若所述新版固件启动失败,则将所述FLASH存储区的第二主分区中的原版固件加载到所述RAM区,并启动加载至所述RAM区的所述原版固件;
第三启动模块,用于若所述原版固件启动失败,则将所述FLASH存储区的备份区中的只读固件加载到所述RAM区,并启动所述只读固件;
所述新版固件为经过签名加密的固件;签名加密的方式包括:分别对各个核固件进行签名加密;将签名加密后的各个核固件整合为新版固件整体,并对所述新版固件整体进行签名加密;所述新版固件整体的签名加密算法与所述核固件的签名加密算法不同;
还包括:
第一签名校验模块,用于对所述新版固件整体进行签名校验;
第二签名校验模块,用于若所述新版固件整体签名校验成功,则对所述新版固件中的各个所述核固件进行签名校验;
若所述新版固件中各个所述核固件均签名校验成功,则所述第一启动模块启动加载至所述RAM区的所述新版固件;
若所述新版固件整体签名校验失败或至少一个所述核固件签名校验失败,则所述第二启动模块将所述第二主分区中的所述原版固件加载到所述RAM区,并启动加载至所述RAM区的所述原版固件;
还包括:
第二读取模块,用于当固件启动成功时,读取固件启动信息;
第一更新模块,用于若根据所述固件启动信息确定所述新版固件启动成功,则将所述第一主分区中的所述新版固件更新至所述第二主分区;
第二更新模块,用于若根据所述固件启动信息确定所述原版固件启动成功,则将所述第二主分区中的所述原版固件更新至所述第一主分区;
重置模块,用于若根据所述固件启动信息确定所述只读固件启动成功,则重新进行固件升级与启动。
10.一种多核SoC的固件启动设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至8任一项所述的多核SoC的固件启动方法的步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述的多核SoC的固件启动方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211508455.5A CN115543488B (zh) | 2022-11-29 | 2022-11-29 | 一种多核SoC的固件启动方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211508455.5A CN115543488B (zh) | 2022-11-29 | 2022-11-29 | 一种多核SoC的固件启动方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115543488A CN115543488A (zh) | 2022-12-30 |
CN115543488B true CN115543488B (zh) | 2023-08-25 |
Family
ID=84722237
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211508455.5A Active CN115543488B (zh) | 2022-11-29 | 2022-11-29 | 一种多核SoC的固件启动方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115543488B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105094903A (zh) * | 2015-07-16 | 2015-11-25 | 广州飞米电子科技有限公司 | 对固件进行升级的方法及装置 |
CN107515799A (zh) * | 2016-06-16 | 2017-12-26 | 上海奕瑞光电子科技有限公司 | 一种平板探测器的固件加载方法 |
CN112433769A (zh) * | 2020-11-05 | 2021-03-02 | 苏州浪潮智能科技有限公司 | 一种bmc启动方法、装置、计算机设备及存储介质 |
CN112925679A (zh) * | 2021-03-16 | 2021-06-08 | 南昌欧菲光电技术有限公司 | 固件升级方法、非易失性存储器、计算机存储介质及终端 |
CN113867739A (zh) * | 2021-08-21 | 2021-12-31 | 苏州浪潮智能科技有限公司 | 一种bmc的固件加载方法、系统、设备以及介质 |
-
2022
- 2022-11-29 CN CN202211508455.5A patent/CN115543488B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105094903A (zh) * | 2015-07-16 | 2015-11-25 | 广州飞米电子科技有限公司 | 对固件进行升级的方法及装置 |
CN107515799A (zh) * | 2016-06-16 | 2017-12-26 | 上海奕瑞光电子科技有限公司 | 一种平板探测器的固件加载方法 |
CN112433769A (zh) * | 2020-11-05 | 2021-03-02 | 苏州浪潮智能科技有限公司 | 一种bmc启动方法、装置、计算机设备及存储介质 |
CN112925679A (zh) * | 2021-03-16 | 2021-06-08 | 南昌欧菲光电技术有限公司 | 固件升级方法、非易失性存储器、计算机存储介质及终端 |
CN113867739A (zh) * | 2021-08-21 | 2021-12-31 | 苏州浪潮智能科技有限公司 | 一种bmc的固件加载方法、系统、设备以及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115543488A (zh) | 2022-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3479223B1 (en) | Secure booting of virtualization managers | |
US10613773B2 (en) | Backing up firmware during initialization of device | |
TWI643130B (zh) | 用於在uefi安全開機資料庫中自動註冊任選rom的系統以及方法 | |
EP4075270B1 (en) | Performance variability reduction using an opportunistic hypervisor | |
EP2989583B1 (en) | Configuring a system | |
US9658858B2 (en) | Multi-threaded low-level startup for system boot efficiency | |
US20100058314A1 (en) | Computer System and Related Method of Logging BIOS Update Operation | |
US11182148B2 (en) | System and method for automated BIOS recovery after BIOS corruption | |
EP4100829A1 (en) | Firmware update patch | |
WO2016206514A1 (zh) | 启动处理方法及装置 | |
CN104123153A (zh) | 用于使用usb升级固件的装置与方法 | |
JP7022809B2 (ja) | コンピュータシステム、および、その安全管理方法、および、コンピュータソフトウェア製品 | |
US20150278068A1 (en) | Initialization trace of a computing device | |
CN102830990A (zh) | 一种计算机系统启动方法及计算机终端 | |
CN105378663A (zh) | 更新引导代码 | |
US8281119B1 (en) | Separate normal firmware and developer firmware | |
CN109992973B (zh) | 一种利用oprom机制的启动度量方法及装置 | |
CN107567629A (zh) | 在可信执行环境容器中的动态固件模块加载器 | |
CN102479121A (zh) | 独立磁盘冗余阵列实现及测试方法 | |
US20090013167A1 (en) | Computer device, method for booting the same, and booting module for the same | |
WO2015184732A1 (zh) | 引导程序的存储方法、故障恢复方法及设备、计算机存储介质 | |
CN114385418A (zh) | 通信设备的保护方法、装置、设备和存储介质 | |
CN115543488B (zh) | 一种多核SoC的固件启动方法及相关装置 | |
CN115033267A (zh) | 一种设备树镜像版本校验的方法及终端设备 | |
KR20220027965A (ko) | 펌웨어 롤백 방지 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |