CN117785314A - 一种基于risc-v架构嵌入式设备的uefi固件启动方法 - Google Patents
一种基于risc-v架构嵌入式设备的uefi固件启动方法 Download PDFInfo
- Publication number
- CN117785314A CN117785314A CN202311586813.9A CN202311586813A CN117785314A CN 117785314 A CN117785314 A CN 117785314A CN 202311586813 A CN202311586813 A CN 202311586813A CN 117785314 A CN117785314 A CN 117785314A
- Authority
- CN
- China
- Prior art keywords
- stage
- risc
- firmware
- sbi
- operating system
- 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
- 238000000034 method Methods 0.000 title claims abstract description 56
- 230000015654 memory Effects 0.000 claims abstract description 46
- 238000012795 verification Methods 0.000 claims abstract description 9
- 230000006870 function Effects 0.000 claims description 16
- 230000008569 process Effects 0.000 claims description 13
- 230000000977 initiatory effect Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 9
- 238000011084 recovery Methods 0.000 claims description 5
- 101100226364 Arabidopsis thaliana EXT1 gene Proteins 0.000 claims description 3
- 238000005192 partition Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 claims description 3
- 239000000725 suspension Substances 0.000 claims description 3
- 238000012423 maintenance Methods 0.000 abstract description 7
- 238000011161 development Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000009545 invasion Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及一种基于RISC‑V架构嵌入式设备的UEFI固件启动方法,包括:初始化基本硬件设置;初始化更多的硬件资源并将加载器从外部存储介质加载到设备内存中;初始化嵌入式设备环境,将SBI接口程序代码分离出来;进一步初始化系统并准备操作系统的加载和运行;进行固件加载与初始化;硬件抽象与服务提供;操作系统负责管理硬件资源、运行应用程序,并提供用户界面和服务。本发明优化了传统的RISC‑V嵌入式设备的UEFI固件的启动流程,完全将SBI阶段与UEFI‑EDK2固件阶段进行了分离,便于两个阶段的代码维护。本发明引入了安全性验证部分流程,改善了RISC‑V架构嵌入式设备的系统安全性问题。
Description
技术领域
本发明涉及RISC-V架构嵌入式的固件技术领域,具体涉及一种基于RISC-V架构嵌入式设备的UEFI固件启动方法。
背景技术
在当今嵌入式系统领域,RISC-V(Reduced Instruction Set Computing-Five)架构作为一种开源指令集体系结构逐渐崭露头角。RISC-V的开放性和模块化设计使其成为各种应用领域的理想选择,从而在学术界和工业界引起了广泛的关注。
UEFI(Unified Extensible Firmware Interface)作为一种规范的固件接口,旨在替代传统的BIOS(Basic Input/Output System),为计算机引导过程提供了更加灵活和标准化的解决方案。UEFI的设计允许在启动时加载操作系统和应用程序,并提供了更强大的硬件初始化和配置功能。
EDK2(EFIDevelopment Kit II)是一个基于UEFI规范的开发套件,为固件、引导加载程序和操作系统的开发提供了一系列工具和库。EDK2是UEFI的参考实现之一,通过模块化的设计使得开发者能够更容易地构建、调试和维护固件。
SBI(Supervisor Binary Interface)是为RISC-V架构定义的一种二进制接口标准,用于操作系统和监管程序之间的通信。SBI的引入增加了RISC-V体系结构的灵活性,允许操作系统在运行时与底层硬件进行交互,提供了一种标准化的、与硬件无关的接口。
然而,在使用RISC-V架构进行嵌入式设备的UEFI-EDK2引导时,存在一些技术上的挑战。传统的启动方式中FSBL执行完毕后跳转到UEFI-EDK2 SEC阶段,其中EDK2 SEC阶段调用SBI-lib程序代码进行初始化。这种方式在一定程度上限制了系统的灵活性,尤其是对于SBI在整个启动流程中的作用。
发明内容
针对现有技术的不足,本发明提供了一种基于RISC-V架构嵌入式设备的UEFI固件启动方法;
本发明的目的是为了解决RISC-V架构中UEFI-EDK2的引导方式问题。在原有的RISC-V架构UEFI-EDK2启动流程中,采用的是FSBL执行完毕后跳转到UEFI-EDK2 SEC阶段的启动方式。在这种启动方式下,EDK2 SEC阶段程序代码会调用SBI-lib程序代码进行进一步的初始化操作。本发明通过将UEFI-EDK2的启动流程重新设计,并引入了新的组件和步骤,提供了更高效和可靠的解决方案。具体来说,本发明将SBI从EDK2的SEC阶段拆分出来,并置于SEC阶段之前作为独立的部分存在。这样一来,SBI在EDK2中具有灵活性和可扩展性,简化了调试和更新过程。同时,在SBI的安全性验证和模式切换中增加了多样的可能性,提供了SBI阶段整体处于M-mode模式下,而EDK2处于S-mode模式下。实现了更可靠和灵活的Linux内核启动方案。本发明提供了一种创新性的方法,为RISC-V架构中UEFI-EDK2引导方式的改进提供了有效的解决方案。该方法不仅提高了系统的性能和可靠性与安全性,减少了RISC-V架构下M-mode模式下的代码的暴露风险,还简化了开发和调试过程,为RISC-V架构的应用提供了更好的支持和发展空间。
术语解释:
1、RISC-V(Reduced Instruction Set Computing-Five):RISC-V是一种开源指令集架构,它是一种指令集体系结构(ISA),具有简化指令集计算的特点。它以模块化设计为基础,适用于各种应用领域,并在学术界和工业界引起了广泛关注。
2、UEFI(Unified Extensible Firmware Interface):UEFI是一种固件接口规范,旨在替代传统的BIOS(Basic Input/Output System)。它提供了更灵活和标准化的启动解决方案,可以加载操作系统和应用程序,并提供更强大的硬件初始化和配置功能。
3、EDK2(EFIDevelopment Kit II):EDK2是基于UEFI规范的开发工具包,用于编写和定制UEFI固件。它提供了一系列库、驱动程序和工具,帮助开发者构建、调试和维护固件。
4、SBI(Supervisor Binary Interface):SBI是为RISC-V架构定义的二进制接口标准,用于操作系统和监管程序之间的通信。它增加了RISC-V体系结构的灵活性,允许操作系统在运行时与底层硬件进行交互,提供了一种标准化的、与硬件无关的接口。
5、ZSBL(Zero Stage Boot Loader):ZSBL是启动过程中的零阶段引导加载程序,负责最基本的处理器设置和硬件环境初始化,通常位于芯片内部的只读存储器(ROM)中。
6、FSBL(First Stage Boot Loader):FSBL是启动过程中的第一阶段引导加载程序,负责更多的硬件初始化工作,如内存控制器初始化、外设配置等,并加载更高级别的引导加载程序到系统内存中。
7、M-mode和S-mode:这是RISC-V架构中的两种特权级别模式,M-mode是较低的特权级别,而S-mode是较高的特权级别。这些模式在系统启动和运行过程中扮演重要角色,涉及对系统资源和特权级别的管理。
8、PrePI(Pre-EFI Initialization):UEFI的其中一个阶段,预EFI初始化,这个阶段指的是在系统启动过程中,UEFI固件接管控制之前,硬件进行的早期初始化工作。
9、DXE(Driver Execution Environment):是UEFI启动流程中的阶段,它负责执行系统大部分的初始化工作,包括内存、芯片组、PCI设备、ACPI表等,以及加载各种DXE驱动程序和DXE应用程序,提供Boot Services和Runtime Services,最后加载BDS Core,也就是BDS ARCH Protocol,从而进入BDS阶段。
10、BDS(Boot Device Selection):UEFI启动流程中的阶段,它负责执行可启动策略,包括初始化控制台设备,为设备加载相关的驱动,为BIOS Setup做准备,根据系统设置加载和启动可启动选项,比如OS Loader或Shell,从而进入TSL阶段。
11、TSL(Transient System Load):是UEFI启动流程中的阶段,它负责加载操作系统内核,它由OS Loader或Shell执行,资源由UEFI kernel提供,当OS Loader或Shell调用ExitBootServices后,就进入RT阶段。
12、RT(Run Time):UEFI启动流程中的阶段,它负责运行操作系统,控制权完全交给了OS,保留Runtime Services交给OS使用,MM Mode脱离于OS独立运行,提供一些固件级别的服务,比如变量存储、时间服务、重启服务等。
13、AL(After Life),是UEFI启动流程中的阶段,它负责处理系统灾难恢复或关机,它由UEFI固件提供错误处理机制和灾难恢复机制,UEFI/PI Spec都未定义该阶段的行为,它依赖于平台的实现。
本发明所采用的技术方案如下:
一种基于RISC-V架构嵌入式设备的UEFI固件启动方法,包括:
ZSBL阶段:初始化基本硬件设置;
FSBL阶段:负责初始化的下一阶段的硬件资源,进行初始化外部存储设备控制器、网络接口、DDR,并将加载器从外部存储介质加载到设备内存中;
SBI阶段:进一步的初始化嵌入式设备环境,将SBI接口程序代码从UEFI-EDK2代码中分离出来,作为单独SBI阶段进行工作;运行开源SBI接口,或实现自定义的程序代码,自定义的程序代码符合SBI接口协议;将EDK2阶段的程序代码从外部存储介质加载到系统内存中;
EDK2阶段:经过SBI阶段加载到系统内存中的EDK2固件开始运行,嵌入式RISC-V设备处于S-mode模式下工作,进一步初始化系统并准备操作系统的加载和运行;进行固件加载与初始化,EDK2作为固件,负责初始化更高层次的硬件资源和系统环境,包括设备驱动初始化、内存管理、固件配置表、系统环境初始化;启动加载操作系统;硬件抽象与服务提供,EDK2为操作系统提供硬件抽象和运行时服务;在操作系统启动后,继续向操作系统提供固件级别的支持,允许操作系统与硬件进行交互和管理;
OS阶段:操作系统负责管理硬件资源、运行应用程序,并提供用户界面和服务。
根据本发明优选的,ZSBL阶段中,初始化基本硬件设置,是指:处理器设置和硬件环境初始化;包括:设置处理器寄存器、构建基本中断向量表,配置时钟与存储控制器。
进一步优选的,SBI阶段中,运行开源SBI接口,执行开源SBI接口提供的功能,包括提供对底层硬件的访问,具体为提供时钟、中断、串口,使得上层软件可以进行访问底层硬件;提供运行时服务,具体为系统重启、系统关机、系统暂停。
进一步优选的,实现自定义的程序代码,自定义的程序代码符合SBI接口协议,自行定义要初始化的设备与配置信息,具体为特定硬件的初始化或者新的SBI调用。
根本发明优选的,SBI阶段进行安全验证工作,即对外部存储介质中EDK2阶段的程序代码进行签名认证。
根本发明优选的,在EDK2阶段,对OS阶段的操作系统进行签名认证,当操作系统被加载到内存之前,进行签名验证的过程;包括:解析数字签名或哈希值,并使用相应的密钥或公钥对其进行验证,确认操作系统代码在加载前是否完整且未被篡改。
根据本发明优选的,EDK2阶段包括PrePI阶段、DXE阶段、BDS阶段、TSL阶段、RT阶段、AL阶段,包括:
PrePI阶段:构建HOBs,同时收集和构建有关内存的信息,包括内存的大小、类型、地址范围、保留内存、已分配内存,准备设备树数据结构,包括有关系统硬件的描述信息;
DXE阶段:加载和执行更复杂的驱动程序和服务,具体为初始化DXE的内核,提供服务与接口,调用DXE的分发器,进行扫描固件存储器中的DXE驱动程序,并且进行加载与执行;
BDS阶段:选择启动设备并启动操作系统加载程序;
TSL阶段:提供临时性的系统加载功能,引入了GRUB,利用GRUB完成EXT4分区的操作系统的引导与启动;
RT阶段:为操作系统和应用程序提供运行时服务和功能;
AL阶段:实现RISC-V架构嵌入式设备的错误处理与灾难恢复的功能。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现基于RISC-V架构嵌入式设备的UEFI固件启动方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现基于RISC-V架构嵌入式设备的UEFI固件启动方法的步骤。
通过上述技术方案,能实现以下效果:
1、优化了传统的RISC-V嵌入式设备的UEFI固件的启动流程,完全将SBI阶段与UEFI-EDK2固件阶段进行了分离,便于两个阶段的代码维护。
2、完成了RISC-V架构的嵌入式设备的初始化与操作系统的加载。
3、方便了SBI阶段的维护,可以利用自行设计的SBI,或者OpenSBI、RustSBI进行SBI阶段的初始化任务。
4、方便了UEFI-EDK2代码的维护,改变了原有Lib的SBI的形式,方便了整体的代码维护策略,即整个阶段EDK2代码处于S-mode下运行,不用考虑EDK2过程中的模式的切换。
5、可替代性,可进行UEFI-EDK2阶段的替代裁剪,其指的为在UEFI-EDK2阶段可以替换为U-boot、Linuxboot或者其他的固件。提高了RISC-V嵌入式设备的固件阶段的灵活性,以满足不同的需求环境。
6、提高系统的安全性,SBI阶段、UEFI的SEC阶段、PEI阶段进行相应的安全性验证,保证下一个阶段的安全性,避免程序的篡改与入侵。保证固件阶段与OS阶段的安全性。
附图说明
图1为一种基于RISC-V架构嵌入式设备的UEFI固件启动方法框架图;
图2为一种基于RISC-V架构嵌入式设备的UEFI固件启动方法的每一个阶段的流程图。
具体实施方式
下面结合说明书附图与实施方式对本发明进行进一步的限定,但是不限于此。
实施例1
一种基于RISC-V架构嵌入式设备的UEFI固件启动方法,如图1所示,主要体现了嵌入式RISC-V架构的嵌入式的设备的初始化流程,明确表示出了,相对于原有的RISC-V架构的UEFI-EDK2的启动流程的区别,即SBI阶段作为单独的一个阶段进行运行工作。包括:
ZSBL阶段:是启动的最初的阶段,其任务是在嵌入式设备上电后执行一小段预定的代码,通常位于芯片内部的只读存储器(ROM)中。它的主要目标是初始化基本硬件设置;例如时钟和存储器控制器,为后续的引导加载过程创建基本的环境。
FSBL阶段:是启动过程的第一阶段,其任务是加载更大的启动程序(SBI阶段)到系统内存中。FSBL负责初始化的下一阶段的必要硬件资源,进行初始化外部存储设备控制器、网络接口、DDR,并将加载器从外部存储介质加载到设备内存中;
在RISC-V架构的设备上电后,RISC-V架构的系统处于M-mode模式下,进行设备基础运行环境的初始化任务,即完成ZSBL阶段与FSBL阶段的初始化工作,主要的工作内容为DDR相关设备的初始化、时钟的初始化、中断的初始化与存储介质的相关设备的初始化,为下一个SBI阶段完成环境的部署。
SBI阶段:在系统启动的过程中是第二阶段,主要负责进一步的初始化嵌入式设备环境,在本方法中主要将SBI接口程序代码从UEFI-EDK2代码中分离出来,作为单独SBI阶段进行工作;保证了其SBI阶段代码的独立性,开发者可以进行单独的维护与开发。运行像OpenSBI或者RustSBI这样的开源SBI接口,或可以实现自定义的程序代码,自定义的程序代码符合SBI接口协议即可;将EDK2阶段的程序代码从外部存储介质加载到系统内存中;准备进行后续的执行。同时SBI阶段因为依旧为前期初始化RISC-V嵌入式设备的基本环境的流程中,其可以通ZSBL与FSBL同时至于ROM中,也可以放置于片外只读的FLASH中,保证初始化代码不会被随意篡改。
EDK2阶段:是基于RISC-V架构的嵌入式设备启动过程中的第三阶段。在这个阶段,经过SBI阶段加载到系统内存中的EDK2固件开始运行,嵌入式RISC-V设备处于S-mode模式下工作,其任务是进一步初始化系统并准备操作系统的加载和运行;进行固件加载与初始化,EDK2作为固件,负责初始化更高层次的硬件资源和系统环境,包括设备驱动初始化、内存管理、固件配置表、系统环境初始化;为操作系统的正常运行提供了必要的基础。启动加载操作系统;EDK2阶段将加载并启动操作系统。它负责执行引导加载程序,例如GRUB或类似的引导加载器,来加载完整的操作系统内核和相关程序。硬件抽象与服务提供,EDK2为操作系统提供硬件抽象和运行时服务;在操作系统启动后,继续向操作系统提供固件级别的支持,允许操作系统与硬件进行交互和管理;
OS阶段:OS阶段是指操作系统启动后的阶段。在这个阶段,操作系统已经完全加载到内存中,并且开始接管系统的控制。此时,操作系统负责管理硬件资源、运行应用程序,并提供用户界面和服务。
实施例2
根据实施例1所述的一种基于RISC-V架构嵌入式设备的UEFI固件启动方法,其区别在于:
ZSBL阶段中,初始化基本硬件设置,是指:处理器设置和硬件环境初始化;包括:设置处理器寄存器、构建基本中断向量表,配置时钟与存储控制器。
SBI阶段中,运行开源SBI接口(例如OpenSBI或RustSBI),执行开源SBI接口提供的功能,包括提供对底层硬件的访问,具体为提供时钟、中断、串口,使得上层软件可以进行访问底层硬件;提供运行时服务,具体为系统重启、系统关机、系统暂停。
实现自定义的程序代码,自定义的程序代码符合SBI接口协议即可,自行定义要初始化的设备与配置信息,具体为特定硬件的初始化或者新的SBI调用。
为了保证处于EDK2阶段的安全性,SBI阶段进行了相应的安全验证工作,即对外部存储介质中EDK2阶段的程序代码进行签名认证。通过在SBI阶段进行对EDK2的签名认证,可以进行验证EDK2的完整性和可信度,同时在完成了M-mode之下的所有环境的配置后,系统将会进入到S-mode模型下提供了基础环境保证。通过签名机制可以确保加载的EDK2阶段代码的来源和完整性,防止恶意篡改和运行不受信任的代码。
在嵌入式设备中,为了保证用户环境的安全,即运行在U-mode模式下的OS是正确的,安全的。因此,在本发明中在EDK2阶段,对OS阶段的操作系统进行签名认证,当操作系统被加载到内存之前,进行签名验证的过程;包括:解析数字签名或哈希值,并使用相应的密钥或公钥对其进行验证,确认操作系统代码在加载前是否完整且未被篡改。
签名认证,在本方法中涉及到了签名认证的方法。为了保证UEFI阶段与OS阶段的安全性,进行使用签名认证,即从SBI阶段完成UEFI阶段的签名认证,在UEFI阶段完成OS阶段的签名认证,具体实现方式可以使用非对称加密算法生成数字签名。在生成设备树文件时,使用私钥对文件进行签名。在验证设备树文件时,使用相应的公钥对签名进行验证,确保文件的完整性和真实性。或者使用HMAC(哈希消息认证码),使用共享密钥对设备树文件进行哈希计算,并生成一个固定长度的认证码。在验证设备树文件时,再次进行哈希计算,并将计算结果与原始认证码进行比较,以确保文件的完整性和真实性。通过签名认证方法可以用于验证设备树文件的完整性和真实性,防止文件被篡改或替换。引入签名认证,可以提高系统的安全性,并确保设备树的可靠性。
如图2所示,EDK2阶段包括PrePI阶段、DXE阶段、BDS阶段、TSL阶段、RT阶段、AL阶段,包括:
PrePI阶段:PrePI是UEFI启动流程的早期阶段,经过固件方法的优化后,减弱了原有EDK2阶段的SEC、BDS阶段的作用,在PrePI阶段主要进行构建HOBs,同时收集和构建有关内存的信息,包括内存的大小、类型、地址范围、保留内存、已分配内存,准备设备树数据结构,包括有关系统硬件的描述信息;例如CPU、内存、外设等的配置。关于处理器的信息,主要包括处理器类型、数量、架构。同时构建FV,用来存储UEFI固件程序和数据。
DXE阶段:是UEFI固件中的一个阶段,负责加载和执行更复杂的驱动程序和服务,具体为初始化DXE的内核,提供服务与接口,调用DXE的分发器,进行扫描固件存储器中的DXE驱动程序,并且进行加载与执行;阶段实现了驱动程序的加载、初始化和链接,为操作系统和其他服务提供必要的支持。
BDS阶段:是UEFI中的引导设备选择阶段,负责选择启动设备并启动操作系统加载程序;这个阶段实现了包括对引导设备的检测、配置和启动操作系统加载程序的任务。
TSL阶段:为UEFI固件的一个阶段,用于提供临时性的系统加载功能,连接UEFI和操作系统加载器之间的过渡。这个阶段实现了一些临时性的功能和服务,为系统从固件到操作系统加载器的过渡做准备,在本阶段主要为引入了GRUB,利用GRUB完成EXT4分区的操作系统的引导与启动;
RT阶段:是UEFI固件在操作系统启动之后提供的运行时服务。这个阶段为操作系统和应用程序提供必要的运行时服务和功能;确保系统能够正常运行。
AL阶段:实现RISC-V架构嵌入式设备的错误处理与灾难恢复的功能。
总的来说,通过上述方法的每个阶段的实现,成功地构建了一套从上电到操作系统运行的完整的RISC-V嵌入式设备启动流程。同时,优化了RISC-V架构嵌入式设备的UEFI启动流程,提高了RISC-V固件阶段系统的兼容性,增强了系统的可靠性和稳定性。这一套完整的启动流程能够成功地启动嵌入式设备。其独特的分离方法将加速RISC-V嵌入式设备的生态建设,推动RISC-V架构的广泛应用,促进RISC-V架构嵌入式设备技术的发展。
传统的启动方式存在技术上的限制,本方法针对此提出了创新性解决方案。传统方式涉及FSBL执行后跳转到UEFI-EDK2 SEC阶段,其中EDK2 SEC阶段调用SBI-lib程序代码进行初始化,但这限制了系统的灵活性。本方法重新设计了启动流程,将SBI从EDK2的SEC阶段分离出来,置于SEC阶段之前作为独立组件。这种改进提高了系统的灵活性、可维护性和安全性。新方法包括ZSBL、FSBL、SBI、EDK2和OS等多个阶段,每个阶段都有特定任务,从基础硬件初始化到操作系统加载。引入签名认证机制确保固件和操作系统的完整性和真实性,增强了系统安全性。这种创新方法优化了启动流程,简化了代码维护,提升了嵌入式设备的性能、可靠性和安全性。它的模块化设计也增强了系统的灵活性,为不同固件的替代提供了可能性。本发明的优势在于提供了一个更清晰、更模块化的启动流程,使得各个阶段的维护和更新更为简便,同时加强了安全性,通过签名认证防止了恶意篡改。
实施例3
一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现实施例1或2所述的基于RISC-V架构嵌入式设备的UEFI固件启动方法的步骤。
实施例4
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现实施例1或2所述的基于RISC-V架构嵌入式设备的UEFI固件启动方法的步骤。
Claims (9)
1.一种基于RISC-V架构嵌入式设备的UEFI固件启动方法,其特征在于,包括:
ZSBL阶段:初始化基本硬件设置;
FSBL阶段:负责初始化的下一阶段的硬件资源,进行初始化外部存储设备控制器、网络接口、DDR,并将加载器从外部存储介质加载到设备内存中;
SBI阶段:进一步的初始化嵌入式设备环境,将SBI接口程序代码从UEFI-EDK2代码中分离出来,作为单独SBI阶段进行工作;运行开源SBI接口,或实现自定义的程序代码,自定义的程序代码符合SBI接口协议;将EDK2阶段的程序代码从外部存储介质加载到系统内存中;
EDK2阶段:经过SBI阶段加载到系统内存中的EDK2固件开始运行,嵌入式RISC-V设备处于S-mode模式下工作,进一步初始化系统并准备操作系统的加载和运行;进行固件加载与初始化,EDK2作为固件,负责初始化更高层次的硬件资源和系统环境,包括设备驱动初始化、内存管理、固件配置表、系统环境初始化;启动加载操作系统;硬件抽象与服务提供,EDK2为操作系统提供硬件抽象和运行时服务;在操作系统启动后,继续向操作系统提供固件级别的支持,允许操作系统与硬件进行交互和管理;
OS阶段:操作系统负责管理硬件资源、运行应用程序,并提供用户界面和服务。
2.根据权利要求1所述的一种基于RISC-V架构嵌入式设备的UEFI固件启动方法,其特征在于,ZSBL阶段中,初始化基本硬件设置,是指:处理器设置和硬件环境初始化;包括:设置处理器寄存器、构建基本中断向量表,配置时钟与存储控制器。
3.根据权利要求1所述的一种基于RISC-V架构嵌入式设备的UEFI固件启动方法,其特征在于,SBI阶段中,运行开源SBI接口,执行开源SBI接口提供的功能,包括提供对底层硬件的访问,具体为提供时钟、中断、串口,使得上层软件可以进行访问底层硬件;提供运行时服务,具体为系统重启、系统关机、系统暂停。
4.根据权利要求1所述的一种基于RISC-V架构嵌入式设备的UEFI固件启动方法,其特征在于,实现自定义的程序代码,自定义的程序代码符合SBI接口协议,自行定义要初始化的设备与配置信息,具体为特定硬件的初始化或者新的SBI调用。
5.根据权利要求1所述的一种基于RISC-V架构嵌入式设备的UEFI固件启动方法,其特征在于,SBI阶段进行安全验证工作,即对外部存储介质中EDK2阶段的程序代码进行签名认证。
6.根据权利要求1所述的一种基于RISC-V架构嵌入式设备的UEFI固件启动方法,其特征在于,在EDK2阶段,对OS阶段的操作系统进行签名认证,当操作系统被加载到内存之前,进行签名验证的过程;包括:解析数字签名或哈希值,并使用相应的密钥或公钥对其进行验证,确认操作系统代码在加载前是否完整且未被篡改。
7.根据权利要求1-6任一所述的一种基于RISC-V架构嵌入式设备的UEFI固件启动方法,其特征在于,EDK2阶段包括PrePI阶段、DXE阶段、BDS阶段、TSL阶段、RT阶段、AL阶段,包括:
PrePI阶段:构建HOBs,同时收集和构建有关内存的信息,包括内存的大小、类型、地址范围、保留内存、已分配内存,准备设备树数据结构,包括有关系统硬件的描述信息;
DXE阶段:加载和执行更复杂的驱动程序和服务,具体为初始化DXE的内核,提供服务与接口,调用DXE的分发器,进行扫描固件存储器中的DXE驱动程序,并且进行加载与执行;
BDS阶段:选择启动设备并启动操作系统加载程序;
TSL阶段:提供临时性的系统加载功能,引入了GRUB,利用GRUB完成EXT4分区的操作系统的引导与启动;
RT阶段:为操作系统和应用程序提供运行时服务和功能;
AL阶段:实现RISC-V架构嵌入式设备的错误处理与灾难恢复的功能。
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1-7任一所述的基于RISC-V架构嵌入式设备的UEFI固件启动方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7任一所述的基于RISC-V架构嵌入式设备的UEFI固件启动方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311586813.9A CN117785314A (zh) | 2023-11-24 | 2023-11-24 | 一种基于risc-v架构嵌入式设备的uefi固件启动方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311586813.9A CN117785314A (zh) | 2023-11-24 | 2023-11-24 | 一种基于risc-v架构嵌入式设备的uefi固件启动方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117785314A true CN117785314A (zh) | 2024-03-29 |
Family
ID=90378982
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311586813.9A Pending CN117785314A (zh) | 2023-11-24 | 2023-11-24 | 一种基于risc-v架构嵌入式设备的uefi固件启动方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117785314A (zh) |
-
2023
- 2023-11-24 CN CN202311586813.9A patent/CN117785314A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3491519B1 (en) | Optimized uefi reboot process | |
US7134007B2 (en) | Method for sharing firmware across heterogeneous processor architectures | |
US9189246B2 (en) | Method and apparatus to support separate operating systems in partitions of a processing system | |
US9483639B2 (en) | Service partition virtualization system and method having a secure application | |
US6711675B1 (en) | Protected boot flow | |
US8352721B1 (en) | Initiating an operating system boot from firmware | |
US7827371B2 (en) | Method for isolating third party pre-boot firmware from trusted pre-boot firmware | |
US7237102B2 (en) | Methods and apparatus for configuring hardware resources in a pre-boot environment without requiring a system reset | |
WO2001061485A2 (en) | Modular bios update mechanism | |
JPH06324849A (ja) | オペレーティング・システム環境の起動方法およびシステム | |
US10055234B1 (en) | Switching CPU execution path during firmware execution using a system management mode | |
US20200319892A1 (en) | Processor core isolation for execution of multiple operating systems on a multicore computer system | |
CN109426527B (zh) | 在uefi固件及作业系统间分享蓝牙数据的电脑系统及其方法 | |
CN117785314A (zh) | 一种基于risc-v架构嵌入式设备的uefi固件启动方法 | |
US11520597B2 (en) | Operating system architecture for microkernel generations support | |
JP2006522971A (ja) | オペレーティングシステム | |
US10635607B2 (en) | Methods, systems and apparatus to improve boot efficiency | |
CN117075974A (zh) | 一种基于risc-v服务器cpu的新型edk2启动引导方法 | |
CN118369648A (zh) | 数据处理单元集成 | |
CN115098170A (zh) | 计算机启动方法、装置、设备以及存储介质 |
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 |