一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

UEFI探索

進(jìn)迭時(shí)空 ? 2025-06-06 16:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

傳統(tǒng)BIOS(Basic Input/Output System)由IBM 1981年在其第一代 IBM PC[1]中引入,負(fù)責(zé)啟動(dòng)時(shí)的硬件檢測(cè)和初始化,并為操作系統(tǒng)提供硬件抽象層。這一設(shè)計(jì)被廣泛模仿,成為PC行業(yè)的標(biāo)準(zhǔn)。但其局限性(如開(kāi)發(fā)效率低、啟動(dòng)速度慢和MBR分區(qū)表缺陷)在新時(shí)代硬件面前愈發(fā)明顯。


為解決BIOS的不足,并提升安全性,UEFI[2](Unified Extensible Firmware Interface)標(biāo)準(zhǔn)被引入。作為取代BIOS的現(xiàn)代化解決方案,UEFI不僅解決了BIOS的瓶頸,還引入了:


模塊化設(shè)計(jì)

安全啟動(dòng)機(jī)制

更好的大容量存儲(chǔ)支持

更多的啟動(dòng)設(shè)備支持


本文將簡(jiǎn)單介紹UEFI的背景、核心組件及基于spacemit K1[3]平臺(tái)的解決方案。



歷史與演進(jìn)


起源


UEFI的前身是Intel于1998年提出的EFI (Extensible Firmware Interface),旨在為Itanium服務(wù)器提供更高效的啟動(dòng)環(huán)境。2005年,UEFI論壇成立,由Intel、微軟、AMD等廠商共同推動(dòng)標(biāo)準(zhǔn)化。



版本


UEFI 2.0(2006):UEFI論壇制定的首版規(guī)范,64位架構(gòu)支持,奠定模塊化驅(qū)動(dòng)和網(wǎng)絡(luò)協(xié)議基礎(chǔ)。

UEFI 2.4(2013):強(qiáng)化安全啟動(dòng)(Secure Boot)和ACPI集成。

UEFI 2.8(2022):新增RISC-V架構(gòu)支持。

UEFI 2.11(2024):內(nèi)存管理增強(qiáng),錯(cuò)誤處理改進(jìn),新增龍芯LoongArch架構(gòu)的支持,新增國(guó)密算法(SM2, SM3)支持。



演進(jìn)


UEFI標(biāo)準(zhǔn)未來(lái)會(huì)繼續(xù)關(guān)注如下幾個(gè)方向:


新的硬件標(biāo)準(zhǔn)支持,如PCIe 6.0,DDR6等;

安全性持續(xù)增加,加密算法和安全機(jī)制更新;

啟動(dòng)速度提升,優(yōu)化啟動(dòng)流程,減少啟動(dòng)時(shí)間;

多架構(gòu)兼容(x86/ARM/RISCV)



核心組件


UEFI通過(guò)規(guī)范定義了一整套完整的標(biāo)準(zhǔn)化接口和服務(wù),對(duì)上屏蔽硬件細(xì)節(jié);在硬件平臺(tái)發(fā)生變更后,通過(guò)UEFI固件提供服務(wù),確保操作系統(tǒng)不受影響。


0ae65e86-42b4-11f0-986f-92fbcf53809c.png

UEFI組件總覽[4]


啟動(dòng)服務(wù)


啟動(dòng)服務(wù)(Boot Service)的主要功能是為操作系統(tǒng)加載前的系統(tǒng)初始化提供支持,啟動(dòng)服務(wù)在操作系統(tǒng)加載完成后會(huì)被終止,操作系統(tǒng)接管系統(tǒng)資源。這一過(guò)程通過(guò)調(diào)用 ExitBootServices 函數(shù)實(shí)現(xiàn):


ExitBootServices:通知 UEFI 固件操作系統(tǒng)已準(zhǔn)備好接管系統(tǒng)資源,啟動(dòng)服務(wù)將被禁用。


啟動(dòng)服務(wù)提供的service羅列如下。


內(nèi)存管理


分配和釋放內(nèi)存,支持不同類型的物理內(nèi)存(如常規(guī)內(nèi)存和保留內(nèi)存)。


事件處理


UEFI中只有timer中斷,利用timer來(lái)創(chuàng)建和管理事件,支持異步操作和定時(shí)器功能。


協(xié)議管理


安裝、卸載和查找協(xié)議(Protocol),用于驅(qū)動(dòng)程序和應(yīng)用程序之間的通信。


鏡像加載


加載和啟動(dòng)操作系統(tǒng)內(nèi)核或其他可執(zhí)行鏡像。


設(shè)備管理


提供對(duì)硬件設(shè)備的訪問(wèn)和控制。



運(yùn)行時(shí)服務(wù)


運(yùn)行時(shí)服務(wù)(Runtime Services) 在操作系統(tǒng)運(yùn)行期間提供一系列關(guān)鍵功能,包括時(shí)間管理、變量服務(wù)和系統(tǒng)重置等。與啟動(dòng)服務(wù)不同,運(yùn)行時(shí)服務(wù)在操作系統(tǒng)加載完成后仍然可用,為操作系統(tǒng)和應(yīng)用程序提供與固件的交互接口。


時(shí)間管理


獲取和設(shè)置系統(tǒng)時(shí)間。


變量服務(wù)


讀寫 UEFI 變量(如啟動(dòng)順序、硬件配置等)。UEFI 變量通常用于存儲(chǔ)系統(tǒng)配置信息,例如:


啟動(dòng)順序(BootOrder):定義系統(tǒng)的啟動(dòng)設(shè)備順序。


硬件配置:存儲(chǔ)硬件相關(guān)的設(shè)置(如網(wǎng)絡(luò)配置、安全設(shè)置等)。


系統(tǒng)重置


支持系統(tǒng)重啟或關(guān)機(jī)(RISC-V架構(gòu)下,系統(tǒng)重啟和關(guān)機(jī)通過(guò)openSBI實(shí)現(xiàn))。


虛擬內(nèi)存管理


在操作系統(tǒng)運(yùn)行期間管理虛擬內(nèi)存映射。



SMBIOS


SMBIOS(System Management BIOS) 是由 DMTF(分布式管理任務(wù)組)制定的一項(xiàng)標(biāo)準(zhǔn),旨在為操作系統(tǒng)和管理工具提供系統(tǒng)硬件信息的標(biāo)準(zhǔn)化接口。通過(guò)一種結(jié)構(gòu)化的方式,將系統(tǒng)的硬件配置、固件版本、主板信息等數(shù)據(jù)傳遞給操作系統(tǒng)或管理工具。


SMBIOS 數(shù)據(jù)表由UEFI生成,存儲(chǔ)在系統(tǒng)內(nèi)存中,操作系統(tǒng)可以通過(guò)system table訪問(wèn)這些數(shù)據(jù)。


硬件信息描述:提供系統(tǒng)硬件配置的詳細(xì)信息,例如處理器、內(nèi)存、主板、存儲(chǔ)設(shè)備等。

固件信息傳遞:傳遞固件版本、制造商信息等數(shù)據(jù)。

系統(tǒng)管理支持:為系統(tǒng)管理工具(如 IPMI、Redfish)提供硬件信息支持。


SMBIOS 表的訪問(wèn)


操作系統(tǒng)或管理工具可以通過(guò)以下方式訪問(wèn) SMBIOS 表:

System table:kernel下通過(guò)EFI_SYSTEM_TABLE獲取EFI_CONFIGURATION_TABLE,進(jìn)而定位SMBIOS表的地址

操作系統(tǒng):用戶可以通過(guò)工具(如 dmidecode)查詢 SMBIOS 數(shù)據(jù),獲取系統(tǒng)的硬件信息。

系統(tǒng)管理工具:IPMI、Redfish標(biāo)準(zhǔn)中使用 SMBIOS 數(shù)據(jù)監(jiān)控硬件狀態(tài)、診斷故障和管理系統(tǒng)資源。



ACPI


ACPI(Advanced Configuration and Power Interface,高級(jí)配置與電源接口)是由 Intel、Microsoft、Toshiba 等公司聯(lián)合制定的一項(xiàng)標(biāo)準(zhǔn),旨在取代傳統(tǒng)的 BIOS 電源管理接口(如APM,Advanced Power Management)。


ACPI用于定義操作系統(tǒng)與硬件之間的電源管理和硬件配置接口。ACPI 提供了一種標(biāo)準(zhǔn)化的方式,使操作系統(tǒng)能夠管理硬件資源、控制電源狀態(tài),并支持即插即用功能。其不僅定義了電源管理功能,還提供了硬件資源的描述和配置接口。


ACPI 表


ACPI 表是 ACPI 的核心數(shù)據(jù)結(jié)構(gòu),用于描述硬件資源和電源管理信息。ACPI 表通常在 UEFI 的 DXE(Driver Execution Environment)階段生成,并由 UEFI 傳遞給操作系統(tǒng)。


0afb7f0a-42b4-11f0-986f-92fbcf53809c.png

ACPI框架[5]


ACPI table以二進(jìn)制格式存儲(chǔ),操作系統(tǒng)通過(guò)解析這些表獲取硬件信息。常見(jiàn)的 ACPI 表包括:


DSDT(Differentiated System Description Table):包含系統(tǒng)的硬件描述和電源管理信息。

FADT(Fixed ACPI Description Table):描述固定的硬件資源和電源管理寄存器

SSDT(Secondary System Description Table):提供額外的硬件描述信息。

MADT(Multiple APIC Description Table):描述多處理器系統(tǒng)的中斷控制器配置。

SRAT(System Resource Affinity Table):描述系統(tǒng)資源的親和性(例如 NUMA 架構(gòu)中的內(nèi)存和 CPU 關(guān)系)。

RHCT(RISC-V Hart Capabilities Table):描述RISC-V CPU核心(HARTs)的能力和配置信息,如 CPU ID、支持的 ISA 擴(kuò)展等。


ACPI 電源管理


ACPI 定義了多種電源狀態(tài),用于管理系統(tǒng)的功耗和性能。

0b101302-42b4-11f0-986f-92fbcf53809c.png

全局電源狀態(tài)轉(zhuǎn)換[5]


全局電源狀態(tài)(Global System States)


G0(Working State):系統(tǒng)處于正常工作狀態(tài)。

G1(Sleeping State):系統(tǒng)處于睡眠狀態(tài),分為多個(gè)子狀態(tài)(S1-S4)。

S1:CPU 停止執(zhí)行指令,但內(nèi)存保持供電。

S2:CPU 斷電,內(nèi)存保持供電。

S3(Suspend to RAM):CPU 和大部分硬件斷電,內(nèi)存保持供電。

S4(Suspend to Disk):系統(tǒng)狀態(tài)保存到磁盤,內(nèi)存斷電。


G2(Soft Off):系統(tǒng)處于軟關(guān)機(jī)狀態(tài),部分硬件(如網(wǎng)絡(luò)接口)可能保持供電。


G3(Mechanical Off):系統(tǒng)完全斷電。


設(shè)備電源狀態(tài)(Device Power States)


D0:設(shè)備處于正常工作狀態(tài)。

D1/D2:設(shè)備處于低功耗狀態(tài)。

D3:設(shè)備處于關(guān)閉狀態(tài)。



Protocol


Protocol(協(xié)議) 是 UEFI中的一個(gè)核心概念,用于定義驅(qū)動(dòng)程序、應(yīng)用程序和固件之間的交互接口,通過(guò) Protocol,UEFI 能夠?qū)崿F(xiàn)模塊化設(shè)計(jì)和動(dòng)態(tài)綁定,提供強(qiáng)大的硬件管理和擴(kuò)展能力。


0b28edbe-42b4-11f0-986f-92fbcf53809c.png

protocol的組成[4]


Protocol 類似于面向?qū)ο?a target="_blank">編程中的接口或抽象類,提供了一種標(biāo)準(zhǔn)化的方式,使不同組件能夠相互通信和協(xié)作。


每個(gè) Protocol 包含一組函數(shù)指針和數(shù)據(jù)字段,用于實(shí)現(xiàn)特定的功能。


標(biāo)準(zhǔn)化接口:Protocol 定義了統(tǒng)一的接口規(guī)范,使不同組件能夠相互兼容。

動(dòng)態(tài)綁定:Protocol 通過(guò)句柄(Handle)綁定到特定設(shè)備或服務(wù),支持動(dòng)態(tài)加載和卸載。

模塊化設(shè)計(jì):Protocol 支持模塊化設(shè)計(jì),便于擴(kuò)展和維護(hù)。



OS LOADER


OS Loader(操作系統(tǒng)加載器) 是 UEFI 啟動(dòng)流程的一部分,依賴于 UEFI 的啟動(dòng)服務(wù)(Boot Services)和運(yùn)行時(shí)服務(wù)(Runtime Services),從啟動(dòng)設(shè)備(如硬盤、光盤或網(wǎng)絡(luò))加載操作系統(tǒng)內(nèi)核,并為其準(zhǔn)備執(zhí)行環(huán)境,將控制權(quán)從 UEFI 固件轉(zhuǎn)移到操作系統(tǒng)。


OS Loader 的實(shí)現(xiàn)通常由操作系統(tǒng)開(kāi)發(fā)者完成,以下是一些常見(jiàn)的 OS Loader 實(shí)現(xiàn):


Windows Boot Manager


Windows的OS Loader是bootmgfw.efi,其主要功能包括:


加載Windows內(nèi)核

準(zhǔn)備 Windows 啟動(dòng)環(huán)境


GRUB(Grand Unified Bootloader)


GRUB 是 Linux 系統(tǒng)中常用的 OS Loader,其主要功能包括:


加載 Linux 內(nèi)核(vmlinuz)和ramdisk(initrd)

支持多操作系統(tǒng)啟動(dòng)

提供命令行界面,用于調(diào)試和配置



UEFI on Spacemit K1


Spacemit K1是一顆8核64位RISC-V AI CPU,基于開(kāi)源Tianocore EDK2解決方案,完成了K1上的UEFI適配。



啟動(dòng)流程


K1上UFEI解決方案啟動(dòng)流程如下圖。


0b399ef2-42b4-11f0-986f-92fbcf53809c.jpg


基于RISC-V當(dāng)前的firmware標(biāo)準(zhǔn)和開(kāi)源實(shí)現(xiàn):

1

簡(jiǎn)化EDK2中啟動(dòng)階段實(shí)現(xiàn),并將部分功能實(shí)現(xiàn)挪至FSBL中實(shí)現(xiàn)

2

部分runtime service由openSBI實(shí)現(xiàn)



bootloader


bootloader存儲(chǔ)于spi nor flash上,包含如下圖3個(gè)主要模塊。

0b499ac8-42b4-11f0-986f-92fbcf53809c.jpg


FSBL


FSBL基于uboot工程編譯而來(lái),實(shí)現(xiàn)UEFI PEI階段的:


DDR初始化

加載opensbi與EDK2

更新memory信息,并通過(guò)dtb傳遞給EDK2


openSBI


基于開(kāi)源openSBI解決方案,提供machine態(tài)的基礎(chǔ)服務(wù):

Cache管理

TLB管理

suspend/resume管理


EDK2


基于開(kāi)源tianocore EDK2開(kāi)源解決方案,提供:

EFI boot service,提供系統(tǒng)啟動(dòng)相關(guān)服務(wù)

存儲(chǔ)驅(qū)動(dòng)(emmc,sd,nvme)和USB驅(qū)動(dòng),支持從卡、emmc、NVME、U盤中啟動(dòng)

GOP(Graphic Output Protocol),支持通過(guò)HDMI顯示啟動(dòng)菜單

Variable service,實(shí)現(xiàn)啟動(dòng)選項(xiàng)的配置,如啟動(dòng)順序、啟動(dòng)時(shí)間等



grub


OS loader選擇基于開(kāi)源grub2的解決方案。


grub作為一個(gè)EFI application,存儲(chǔ)于ESP分區(qū),經(jīng)EDK2加載和運(yùn)行;

通過(guò)/boot/grub/grub.cfg配置文件,完成多系統(tǒng)識(shí)別與引導(dǎo),并配置啟動(dòng)菜單;

加載內(nèi)核鏡像和init ramdisk,完成系統(tǒng)加載和控制權(quán)切換;


kernel鏡像與rootfs存儲(chǔ)于emmc或nvme等存儲(chǔ)器上。


0b5c1fcc-42b4-11f0-986f-92fbcf53809c.jpg


通過(guò)上述提供的解決方案,實(shí)現(xiàn)在K1方案板上,支持從多種啟動(dòng)介質(zhì)上,完成linux系統(tǒng)的加載和啟動(dòng);并能通過(guò)EDK2啟動(dòng)菜單,完成啟動(dòng)優(yōu)先級(jí)的配置和修改。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 核心
    +關(guān)注

    關(guān)注

    0

    文章

    45

    瀏覽量

    15212
  • BIOS
    +關(guān)注

    關(guān)注

    5

    文章

    471

    瀏覽量

    47065
  • UEFI
    +關(guān)注

    關(guān)注

    0

    文章

    54

    瀏覽量

    12094
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何制作適用于Visionfive 2的Debian + UEFI固件系統(tǒng)?

    制作適用于Visionfive 2的Debian + UEFI固件系統(tǒng)
    發(fā)表于 03-10 07:51

    ARM系統(tǒng)預(yù)引導(dǎo)固件的新機(jī)遇-UEFI

    產(chǎn)品可在有限的工程資源條件下實(shí)現(xiàn)更快推上市場(chǎng),并同時(shí)添加創(chuàng)新功能?! 〗y(tǒng)一可擴(kuò)展固件接口(UEFI)對(duì)ARM系統(tǒng)的預(yù)引導(dǎo)固件是一個(gè)新機(jī)遇。 UEFI負(fù)責(zé)定義操作系統(tǒng)和系統(tǒng)固件之間以及固件驅(qū)動(dòng)程序和系統(tǒng)
    發(fā)表于 08-23 09:06

    uefi的標(biāo)準(zhǔn)哪里可以下載呀?

    uefi的標(biāo)準(zhǔn)哪里可以下載呀?
    發(fā)表于 11-06 16:49

    BOXNUC7I3BNK將EVO 970視為L(zhǎng)egacy而非UEFI

    有一個(gè)新的BOXNUC7I3BNK NUC套件。僅使用三星EVO 970 M.2 ssd。 BIOS將驅(qū)動(dòng)器識(shí)別為M.2 ssd,但是在啟動(dòng)面板中,不會(huì)將其識(shí)別為UEFI驅(qū)動(dòng)器,僅作為L(zhǎng)egacy
    發(fā)表于 11-07 11:08

    UEFI有什么定義?

     EFI的出現(xiàn)第一次被正式提出,是在2000年的Intel春季IDF上,經(jīng)過(guò)幾次修訂,現(xiàn)在已經(jīng)到了EFI 1.10版,而2.0版正由UEFI這個(gè)組織制定中(故EFI也現(xiàn)稱為UEFI)。
    發(fā)表于 10-30 09:12

    如何切換BIOS啟動(dòng)與UEFI啟動(dòng) bios與uefi切換方法

    1.首先進(jìn)入BIOS,電腦開(kāi)機(jī)時(shí)按你電腦對(duì)應(yīng)的鍵進(jìn)入BIOS,不知道按鍵可以看下表查詢?;蛘咴陔娔X開(kāi)機(jī)時(shí)有屏幕有短暫的提示按鍵,看下自己的電腦按鍵是哪個(gè)就行。2.開(kāi)啟UEFI方法以下的設(shè)置項(xiàng)有的
    發(fā)表于 06-05 11:54

    Embedded SIG | 樹(shù)莓派的UEFI支持和網(wǎng)絡(luò)啟動(dòng)

    混合部署的從核啟停依賴 UEFI 第三方固件支持 PSCI 標(biāo)準(zhǔn)實(shí)現(xiàn),本文介紹如何使樹(shù)莓派 4B 支持 UEFI,并可通過(guò) SD 卡或網(wǎng)絡(luò)啟動(dòng) openEuler Embedded
    發(fā)表于 09-07 15:22

    使用VisionFive 2適配UEFI有哪些資料可以參考?

    使用VisionFive 2適配UEFI,有哪些資料可以參考?
    發(fā)表于 09-12 06:52

    簡(jiǎn)化安全、基于 UEFI 的物聯(lián)網(wǎng) 固件更新

    簡(jiǎn)化安全、基于 UEFI 的物聯(lián)網(wǎng) 固件更新
    發(fā)表于 09-04 17:22 ?8次下載
    簡(jiǎn)化安全、基于 <b class='flag-5'>UEFI</b> 的物聯(lián)網(wǎng) 固件更新

    如何安裝UEFI系統(tǒng)詳細(xì)教程說(shuō)明

    UEFI Boot與GPT分區(qū)表已經(jīng)不算是新生事物了,不過(guò)長(zhǎng)期以來(lái)感覺(jué)不到Legacy+MBR有何不便,很多人還在守舊。隨著AMD第三代銳龍的問(wèn)世,學(xué)會(huì)安裝UEFI系統(tǒng)引導(dǎo)將成為必備技能!
    的頭像 發(fā)表于 01-31 13:52 ?1.3w次閱讀

    uefi 嵌入式Linux,面向嵌入式平臺(tái)的高級(jí)UEFI開(kāi)發(fā)環(huán)境.PDF

    面向嵌入式平臺(tái)的高級(jí)UEFI開(kāi)發(fā)環(huán)境面向嵌入式平臺(tái)的高級(jí) UEFI 開(kāi)發(fā)環(huán)境晉磊, 技術(shù)市場(chǎng)工程師, 英特爾周鵬程, 開(kāi)發(fā)經(jīng)理, 百敖軟件*姜波, 首席技術(shù)官, 盛博科技*PTAS003議程? 面向
    發(fā)表于 11-02 13:06 ?14次下載
    <b class='flag-5'>uefi</b> 嵌入式Linux,面向嵌入式平臺(tái)的高級(jí)<b class='flag-5'>UEFI</b>開(kāi)發(fā)環(huán)境.PDF

    BIOS+UEFI引導(dǎo)修復(fù)工具

    BIOS+UEFI引導(dǎo)修復(fù)工具
    發(fā)表于 11-19 14:54 ?5次下載

    如何使樹(shù)莓派 4B 支持 UEFI

    混合部署的從核啟停依賴 UEFI 第三方固件支持 PSCI 標(biāo)準(zhǔn)實(shí)現(xiàn),本文介紹如何使樹(shù)莓派 4B 支持 UEFI,并可通過(guò) SD 卡或網(wǎng)絡(luò)啟動(dòng) openEuler Embedded。
    的頭像 發(fā)表于 09-07 11:26 ?3136次閱讀

    P7固件 FCODE BIOS UEFI

    電子發(fā)燒友網(wǎng)站提供《P7固件 FCODE BIOS UEFI.zip》資料免費(fèi)下載
    發(fā)表于 08-08 11:24 ?1次下載
    P7固件 FCODE BIOS <b class='flag-5'>UEFI</b>

    Rufus 4.5.2180穩(wěn)定版發(fā)布,應(yīng)用MD5校驗(yàn)UEFI啟動(dòng)引導(dǎo)

    UEFI技術(shù)層面,該版本搭載UEFI:NTFS通用bootloader(適用于NTFS或exFAT分區(qū)的UEFI啟動(dòng)),并且GRUB也已升級(jí)至2.12版本。
    的頭像 發(fā)表于 05-23 10:43 ?3007次閱讀