bootable/bootloader/edk2/QcomModulePkg/
bootable/bootloader/edk2/BaseTools/BuildEnv
bootable/bootloader/edk2/QcomModulePkg/Application/LinuxLoader/LinuxLoader.c

1、高通 (Qualcomm) 平台 UEFI 启动日志

bootable/bootloader/edk2/QcomModulePkg/Application/LinuxLoader/LinuxLoader.c
进入Linux加载器应用程序入口点 LinuxLoaderEntry,进入了 OS Loader (操作系统加载器) 阶段,准备加载 Android 内核

UEFI Start     [ 1030]
 - 0x05FC01000 [ 1035] Sec.efi
//......
UEFI Total : 1454 ms
POST Time      [ 2484] OS Loader
//......
Shutting Down UEFI Boot Services: 3980 ms
//......
Exit EBS        [ 4292] UEFI End

1.1 LinuxLoaderEntry方法加载

  • BootStatsSetInitTimeStamp () 初始化启动时间统计的共享内存区域
  • InitThreadUnsafeStack ()
  • StackGuardChkSetup ()
  • BootStatsSetTimeStamp (BS_BL_START)
  • DeviceInfoInit () 读取持久化的设备状态,如果数据无效(Magic 不匹配),则根据当前的安全策略重置并写入默认值。这里主要有引导加载程序处于锁定状态DevInfo.is_unlocked ,是否解锁关键分区DevInfo.is_unlock_critical;QcomModulePkg/Library/BootLib/DeviceInfo.c
  • EnumeratePartitions ()
  • UpdatePartitionEntries ()
  • GetKeyPress (&KeyPressed)
  • SetDefaultAudioFw ()
  • PrintCpuFrequency ()
  • GetHOMEKeyValue()
  • GetRebootReason (&BootReason) 读取重启原因,会被 BootLoader 用来决定下一步是正常启动 Android,还是进入 Fastboot/Recovery 模式
  • RecoveryInit (&BootIntoRecovery)
  • BoardInit () 是高通平台 UEFI 代码中负责板级硬件初始化的关键函数。它的核心职责是配置当前开发板特有的硬件参数
  • LoadImageAndAuth (&Info, FALSE, SetRotAndBootState)
  • BootLinux (&Info) 将控制权从 UEFI 固件移交给 Linux 内核

1.2 UpdateCmdLine构建和整理传递给 Linux 内核的命令行参数

bootable/bootloader/edk2/QcomModulePkg/Library/BootLib/UpdateCmdLine.c 构建和整理传递给 Linux 内核的命令行参数
/proc/cmdline 其中androidboot前缀参数转化为ro.boot*系统属性

2、fastboot命令

fastboot界面:bootable/bootloader/edk2/QcomModulePkg/Library/BootLib/FastbootMenu.c
fastboot命令:bootable/bootloader/edk2/QcomModulePkg/Library/FastbootLib/FastbootCmds.c
例如高通添加:fastboot oem device-info
例如AOSP:
fastboot flashing unlock
fastboot flashing lock
fastboot flashing unlock_critical
fastboot flashing lock_critical

struct FastbootCmdDesc cmd_list[]
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐