在嵌入式開發領域,UEFI(統一可擴展固件接口)早已不是陌生詞匯。它作為傳統BIOS的升級替代方案,憑借更強大的功能、更靈活的擴展性,正在成為嵌入式平臺固件開發的核心選擇。尤其在瑞芯微(Rockchip)RK系列平臺上,UEFI的深度集成讓開發者能夠更高效地搭建Linux系統開發環境。今天,我們就來詳細聊聊UEFI系統的應用場景,以及RK平臺下的完整開發流程。

一、UEFI系統:不止是固件,更是嵌入式開發的“橋梁”
1.什么是UEFI?
UEFI是一種介于硬件和操作系統之間的固件接口標準,負責啟動過程中的硬件初始化、引導操作系統加載。與傳統BIOS相比,UEFI支持更大容量的存儲設備、更快的啟動速度、更豐富的驅動支持,同時提供了統一的開發接口,讓跨平臺開發更便捷。在RK平臺中,UEFI被深度集成到Linux SDK中,成為連接硬件與Buildroot/Debian/Yocto等Linux系統的關鍵橋梁。
2. UEFI的核心應用場景
?嵌入式智能硬件開發:適用于RK3588、RK3568等高性能嵌入式芯片,支撐智能終端、邊緣計算設備、工業控制單元等產品的啟動與硬件管理。
?多系統引導場景:支持Android Boot與Grub雙啟動方式,滿足嵌入式設備靈活切換操作系統的需求,比如同時兼容嵌入式Linux和Android系統。
?復雜硬件配置管理:針對PCIE、USB、SPI Nor Flash、顯示模塊等外設,提供標準化的配置接口,適配不同硬件方案的定制化需求。
?企業級嵌入式方案:在需要高可靠性、可擴展性的工業設備、服務器級嵌入式產品中,UEFI的穩定性和兼容性能夠大幅降低開發風險。
二、RK平臺UEFI開發全流程:從環境搭建到配置優化
瑞芯微RK系列(以主流的RK3588為例)提供了完善的UEFI開發支持,從代碼獲取、編譯、燒錄到啟動調試,每一步都有清晰的標準化流程。以下是詳細開發步驟拆解:
1.前期準備:確認開發環境與代碼結構
(1)環境要求
?安裝RK3588 Linux SDK,確保SDK中包含uefi目錄(核心開發目錄)。
?預裝交叉編譯工具鏈(如aarch64-none-linux-gnu-gcc),并配置好環境變量。
?準備瑞芯微開發工具(用于固件燒錄)。
(2)核心代碼結構
RK平臺的UEFI代碼主要分布在兩個關鍵目錄,清晰的結構便于開發者定位和修改:
?edk2-platforms/Silicon/Rockchip:包含通用驅動、頭文件、庫文件,以及RK3588/RK3568等芯片的專有IP驅動,同時提供Rockchip.dsc.inc等通用配置文件。
?edk2-platforms/Platform/Rockchip:存放設備樹文件(如rk3588.dtb)、ACPI表、啟動logo資源等平臺相關配置,其中RK3588子目錄包含該芯片的專屬編譯配置(.dsc/.fdf文件)和驅動模塊。
2.編譯UEFI固件:兩種高效編譯方式
RK3588 Linux SDK提供了兩種編譯方案,滿足不同開發習慣,編譯后將生成可直接燒錄的固件文件:
方式一:直接使用uefi目錄腳本
進入SDK的uefi目錄,執行以下命令(默認編譯RK3588芯片):
./make.sh rk3588
注意:此方式需手動拷貝設備樹文件到指定路
cpkernel/arch/arm64/boot/dts/rockchip/rk3588-evb1-lp4-v10-linux.dtb uefi/edk2-platforms/Platform/Rockchip/DeviceTree/rk3588.dtb
方式二:使用SDK根目錄build.sh腳本
在SDK根目錄執行,自動配置EDK2環境變量并編譯u-boot
./build.sh uefi
優勢:無需手動拷貝設備樹文件,編譯過程中會自動同步Kernel的DTB文件。
編譯結果
兩種方式均會生成兩個核心固件:
?uboot_uefi.img:適用于EMMC啟動的開發板。
?RK3588_NOR_FLASH.img:適用于SPI Nor Flash啟動的開發板。
3.固件燒錄:分場景選擇燒錄方案
根據開發板的存儲啟動方式,選擇對應的燒錄文件和流程,核心分為EMMC啟動和SPI Nor Flash啟動兩種場景:
場景一:EMMC啟動(主流方案)
需燒錄3個關鍵文件,且必須包含parameter.txt分區配置文件:
1.燒錄文件清單:
?u-boot/rk3588_spl_loader_v1.07.111.bin(引導加載器)
?parameter.txt(分區配置文件)
?uefi/uboot_uefi.img(UEFI固件)
2.關鍵配置:parameter.txt中需指定uboot分區起始地址(默認0x4000)和大小(不超過0x2000,單位512Byte),并添加boot分區UUID:
uuid:boot=7A3F0000-0000-446A-8000-702F00006273
場景二:SPI Nor Flash啟動
無需parameter.txt文件,僅需燒錄兩個文件:
?boot/rk3588_spl_loader_v1.07.111.bin(引導加載器)
?uefi/RK3588_NOR_FLASH.img(UEFI固件)
操作提示:使用瑞芯微開發工具,選擇“下載升級固件”功能,按工具提示選擇對應文件和地址即可。
4.系統啟動:兩種啟動方式靈活選擇
RK平臺UEFI支持Android Boot和Grub兩種啟動方式,可根據實際需求切換:
方式一:Android Boot啟動
?核心特點:與RK3588通用Linux啟動方式一致,僅需用uboot_uefi.img和boot_uefi.img替換原uboot和boot分區。
?關鍵要求:boot分區需采用Android格式打包(而非FIT格式),且分區的UUID、offset、size需與RK3588.dsc文件中的PcdAndroidBootDevicePath變量一致,否則會啟動失敗。
方式二:Grub啟動(推薦Linux系統)
?核心邏輯:UEFI自動查找ESP分區中的/efi/boot/grubaa64.efi文件,通過grub.cfg配置文件加載kernel和initrd。
?編譯kernel:需先編譯RK3588內核生成deb包和Image文件,拷貝到系統安裝盤:
cpkernel/arch/arm64/boot/Image /udisk/install.a64/vmlinuz
?cmdline傳遞:如需使用ttyS作為調試串口,需修改grub.cfg:
linux/install.a64/vmlinuz earlycon=uart8250,mmio32,0xfeb50000 console=ttyS2,1500000n8 --- quiet
5.定制化配置:硬件功能按需開啟
RK平臺UEFI支持靈活的硬件配置,核心配置文件包括[make.sh](make.sh)(編譯開關)、RK3588.dsc(變量定義)、RockchipPlatfromLib.c(硬件信息),以下是常用配置場景:
(1)SPI Nor配置
?修改IO管腳:在RockchipPlatfromLib.c的NorFspiIomux函數中,根據硬件原理圖選擇FSPI_M0/M1/M2模式,配置對應GPIO管腳。
?關閉模擬NV變量:修改RK3588.dsc文件,將PcdEmuVariableNvModeEnable設為FALSE。
(2)PCIE配置
?開啟編譯開關:在make.sh中添加-D ROCKCHIP_PCIE30。
?電源與復位配置:在Pcie30IoInit/Pcie30PowerEn函數中,根據TRM修改寄存器,配置PCIE的電源和復位GPIO。
(3)顯示配置
默認關閉顯示功能,需在make.sh中添加-D ROCKCHIP_VOPEN,開啟顯示支持。
(4)USB配置
USB2.0和Type-C host功能默認開啟,如需適配自定義硬件,修改UsbPortPowerEnable函數,配置VBUS供電的GPIO管腳。
三、總結
UEFI系統以其強大的擴展性和兼容性,成為RK平臺嵌入式開發的核心支撐,廣泛應用于智能硬件、工業控制、邊緣計算等場景。對于開發者而言,遵循“代碼準備→編譯固件→燒錄啟動→配置優化”的標準化流程,即可快速上手RK平臺的UEFI開發。
審核編輯 黃宇
-
UEFI
+關注
關注
0文章
57瀏覽量
12296
發布評論請先 登錄
深入解析TPS25961 eFuse:功能特性與應用設計全攻略
RK平臺圖形加速神器RGA開發實戰:避坑+優化全攻略
一文搞定RK平臺Wi-Fi/BT調試!從配置到問題解決全攻略
一文吃透RK平臺OTA升級開發:從邏輯到調試的完整指南
低噪聲時鐘抖動清理器 LMK0480x 深度解析:從特性到應用全攻略
RK平臺休眠喚醒與低功耗調試全攻略:從原理到WiFi功耗問題實戰
深度解析LM4906音頻放大器:設計應用全攻略
UPS不間斷電源是什么?企業如何選型與維護?2026年全攻略
一文吃透WebSocket:智能物聯網通信的入門與實戰全攻略!
光隔離探頭選型全攻略?與應用場景剖析
UC3854 功率因數校正設計全攻略:從理論到實戰
一文讀懂UEFI系統:從應用場景到RK平臺開發全攻略
評論