首页 > 编程知识 正文

uefi编程实践,uefi usb floppy

时间:2023-05-06 06:32:33 阅读:150254 作者:418

【Android SDM660启动流程】- UEFI XBL代码流程分析

一. UEFI XBL

1.1 boot_images代码目录

1.2 UEFI代码执行流程

1.3安全验证)。

1.4Pei(EFI前期初始化)。

1.5 DXE (驱动执行环境) )

1.6 BDS (启动设备选择) )

1.7XBL加载

1.8 rt (运行时间) )。

首先来看看SDM660芯片的冷启动流程,设备开机后,先跑的是APPS PBL,然后运行XBL SEC、XBL Loader,用Loader引出XBL CORE APPSBL,最后进入HLOS

让我们来看一下这些相关模块的大致功能。

应用程序权限加载器(apps PBL ) )。

PBL启动时,CPU仅开启第一个核心CPU Core 0,并在ROM中运行固件。 这部分是高通量写入芯片而死的固件,外部开发者无法修改这部分。

主要功能如下。

)1)初始化系统的安全环境,以使后续的XBL的APPS正常工作。

2 )根据引导gpio的配置,选择从哪个设备引导操作系统(Nand、USB等)。

)3)通过检测GPIO判断是否进入嵌入式下载模式,用户可以通过文件下载完整的系统镜像。

)4)用L2 TCM加载XBL1 ELF、OCIMEM和rpm代码。

可扩展引导加载器(xbl ) )。

我们从XBL开始执行了我们编译并下载到eMMC/UFS的系统镜像。 XBL中主要是与初始化相关的硬件环境和代码安全环境。

)1)初始化Buses、DDR、Clocks和CDT,并启动QSEE、QHEE、RPM_FW和XBL core images。

)2)启用内存清理和共享(系统死机时内存清理)、看门狗、内存清理等功能。

)3) USB驱动器初始化、USB充电功能、温升检测、PMIC驱动器初始化、DDR training模块。

XBLcore(uefiorlk,ABL ) )。

XBL core是以前的引导加载器,主要功能是初始化display驱动程序,提供快速引导功能,引导到HLOS kernel。

请注意,在ABL中,也只有CPU核心0在运行。 其他CPU核心进入HLOS Kernel后开始初始化并生效。

本文侧重于可扩展引导加载器(xbl ),主要学习UEFI XBL体系结构和UEFI XBL代码流程。

一. UEFI XBL

1.1 boot_images代码目录

UEFI XBL代码路径是SDM 660 _ Androidsnapdragon-amssboot.xf.1.4boot _ images

# SDM 660 _ Androidsnapdragon-amssboot.xf.1.4boot _ images

ArmPkg---- ARM体系结构相关的Protocols

ArmPlatformPkg---- ARM开发板相关的UEFI代码

basetools-- -编译与edk和EDK2相关的工具。 例如

嵌入式pkg----

FatPkg

IntelFrameworkModulePkg

IntelFrameworkPkg

MdeModulePkg

MdePkg

qo mpkg-- -高通定制的相关pkg,如display和usb充电

壳牌pkg----uefi壳牌环境

1.2 UEFI代码执行流程

从图中可以看到,UEFI代码的执行过程如下。

安全验证(SEC ) Pei ) EFI前期初始化(dxe )驱动运行时环境(BDS )引导设备选择(uefiloader )操作系统加载前期(rt )运行时)。

然后根据该流程分析UEFI代码。

1.3安全验证)。

SEC的汇编代码入口位于以下位置:

在amssboot.xf.1.4boot _ imagesqcom pkgxbl corea arch 64module entry point.masm的_ModuleEntryPoint中

SEC的c代码入口位于以下位置:

在amssboot.xf.1.4boot _ imagesqcom pkgxbl coresec.c的CEntryPoint上

1.4Pei(EFI前期初始化)。

在amssboot.xf.1.4boot _ imagesmdemodulepkgcorePeiPei main Pei main.c的PeiCore中

1.5 DXE (驱动执行环境) )

DXE的加载位置如下。

在amssboot.xf.1.4boot _ imagesembedded pkglibraryprep ilib prep ilib.c的LoadDxeCoreFromFv中

DXE的条目代码位于以下位置:

在amssboot.xf.1.4boot _ imagesmdemodulepkgcoredxedxemain dxe main.c的dxe main中

1.6 BDS (启动设备选择) )

代码在:

在amssboot.xf.1.4boot _ imagesqcom pkgdriversBDS dxe BDSentry.c的BDS entry中

代码在:

在amssboot.xf.1.4boot _ imagesqcom pkgdriversqcom BDS qcom BDS.c的BdsEntry中

1.7XBL加载

代码在:

amssboot.xf.1.4boot _ imagesqcom pkgxbl loaderboot _ loader.c

1.8 rt (运行时间) )。

代码在:

在amssboot.xf.1.4boot _ imagesmdemodulepkgcoreruntime dxeruntime.c的RuntimeDriverInitialize中

参考:

《80_P2484_117_B_UEFI_With_XBL_On_MSM8998_SDM660_SDM.pdf》

3359 blog.csdn.net/u 014089131/article/details/73617716

3359 blog.csdn.net/jlg cumt/article/details/104842586

3359 blog.csdn.net/jlg cumt/article/details/104814931

3359 blog.csdn.net/jlg cumt/article/details/104836900

3359 blog.csdn.net/jlg cumt/article/details/104790690

3359 blog.csdn.net/jlg cumt/article/details/104756673

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。