一文读懂UEFI系统:从应用场景到RK平台开发全攻略

电子说

1.4w人已加入

描述

 

 

 

在嵌入式开发领域,UEFI(统一可扩展固件接口)早已不是陌生词汇。它作为传统BIOS的升级替代方案,凭借更强大的功能、更灵活的扩展性,正在成为嵌入式平台固件开发的核心选择。尤其在瑞芯微(RockchipRK系列平台上,UEFI的深度集成让开发者能够更高效地搭建Linux系统开发环境。今天,我们就来详细聊聊UEFI系统的应用场景,以及RK平台下的完整开发流程。

UEFI

 

 

 

一、UEFI系统:不止是固件,更是嵌入式开发的桥梁

 

 

1. 什么是UEFI

 

 

UEFI是一种介于硬件和操作系统之间的固件接口标准,负责启动过程中的硬件初始化、引导操作系统加载。与传统BIOS相比,UEFI支持更大容量的存储设备、更快的启动速度、更丰富的驱动支持,同时提供了统一的开发接口,让跨平台开发更便捷。在RK平台中,UEFI被深度集成到Linux SDK中,成为连接硬件与Buildroot/Debian/YoctoLinux系统的关键桥梁。

 

 

2. UEFI的核心应用场景

 

 

嵌入式智能硬件开发:适用于RK3588RK3568等高性能嵌入式芯片,支撑智能终端、边缘计算设备、工业控制单元等产品的启动与硬件管理。

 

 

多系统引导场景:支持Android BootGrub双启动方式,满足嵌入式设备灵活切换操作系统的需求,比如同时兼容嵌入式LinuxAndroid系统。

 

 

复杂硬件配置管理:针对PCIEUSBSPI 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目录脚本

 

 

进入SDKuefi目录,执行以下命令(默认编译RK3588芯片):

 

 

  •  
./make.sh rk3588

 注意:此方式需手动拷贝设备树文件到指定路

  •  
cp kernel/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

 优势:无需手动拷贝设备树文件,编译过程中会自动同步KernelDTB文件。

 

 

编译结果

 

 

两种方式均会生成两个核心固件:

 

 

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.imgUEFI固件)

 

 

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.imgUEFI固件)

 

 

操作提示:使用瑞芯微开发工具,选择下载升级固件功能,按工具提示选择对应文件和地址即可。

 

 

4. 系统启动:两种启动方式灵活选择

 

 

RK平台UEFI支持Android BootGrub两种启动方式,可根据实际需求切换:

 

 

方式一:Android Boot启动

 

 

核心特点:与RK3588通用Linux启动方式一致,仅需用uboot_uefi.imgboot_uefi.img替换原ubootboot分区。

 

 

关键要求:boot分区需采用Android格式打包(而非FIT格式),且分区的UUIDoffsetsize需与RK3588.dsc文件中的PcdAndroidBootDevicePath变量一致,否则会启动失败。

 

 

方式二:Grub启动(推荐Linux系统)

 

 

核心逻辑:UEFI自动查找ESP分区中的/efi/boot/grubaa64.efi文件,通过grub.cfg配置文件加载kernelinitrd

 

 

编译kernel:需先编译RK3588内核生成deb包和Image文件,拷贝到系统安装盘:

 

 

  •  
cp kernel/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(硬件信息),以下是常用配置场景:

 

 

1SPI Nor配置

 

 

修改IO管脚:在RockchipPlatfromLib.cNorFspiIomux函数中,根据硬件原理图选择FSPI_M0/M1/M2模式,配置对应GPIO管脚。

 

 

关闭模拟NV变量:修改RK3588.dsc文件,将PcdEmuVariableNvModeEnable设为FALSE

 

 

2PCIE配置

 

 

开启编译开关:在make.sh中添加-D ROCKCHIP_PCIE30

 

 

电源与复位配置:在Pcie30IoInit/Pcie30PowerEn函数中,根据TRM修改寄存器,配置PCIE的电源和复位GPIO

 

 

3)显示配置

 

 

默认关闭显示功能,需在make.sh中添加-D ROCKCHIP_VOPEN,开启显示支持。

 

 

4USB配置

 

 

USB2.0Type-C host功能默认开启,如需适配自定义硬件,修改UsbPortPowerEnable函数,配置VBUS供电的GPIO管脚。

 

 

三、总结

 

 

UEFI系统以其强大的扩展性和兼容性,成为RK平台嵌入式开发的核心支撑,广泛应用于智能硬件、工业控制、边缘计算等场景。对于开发者而言,遵循代码准备编译固件烧录启动配置优化的标准化流程,即可快速上手RK平台的UEFI开发。


审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐
  • 热点推荐
  • UEFI

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分