随笔分类 - Bootup
摘要:简要说明 Protocol是UEFI中的一个重要概念(事实上《UEFI SPEC》中有超过70%的内容都是在讲Protocol),下面简单说明下: 首先,非常重要的一点,Protocol不是什么特殊的东西,它就是一个结构体,比如说下面是一个用于存储设备访问的Protocol: /// /// Thi
阅读全文
摘要:说明 本文涉及的代码都可以在vUDK2017: https://github.com/tianocore/edk2.git Tag vUDK2017.中找到。 一个不怎么好的测试代码 有两个驱动,NullDxeDriverOne.inf和NullDxeDriverTwo.inf,它们做的事情只有一件
阅读全文
摘要:一、Build流程框架 Build的三个阶段: 1、Autogen 解析meta-data文件,dsc文件,.inf文件,.fdf文件,.dec文件,生成Autogen.c 、Autougen.h 、.depex、 Makefiles等文件 2、Make 主要是来处理source文件并通过Make生
阅读全文
摘要:一、基本概念 1.FDF文件: Flash Description File (固件描述文件)定义了固件的布局、包含的模块和其他与映像生成相关的内容。 作用: .fdf 文件用于指定固件映像的布局,包括:固件区域的定义、模块和驱动程序的链接位置、固件的启动设置。GenFds 工具用于将 FDF 文件
阅读全文
摘要:一、基本概念 在 UEFI中,PCD(Platform Configuration Database)是一种用于管理平台配置数据的机制。PCD 允许固件和操作系统在运行时读取和修改配置数据,以支持系统的定制和优化。 目的 为了把代码中可配置的信息抽象出来成PCD,使得Module和Platform容
阅读全文
摘要:简介 UEFI boot manager是一个固件方针引擎,它可以通过修改global NVRAM 变量来配置;它会按照global NVRAM variable 定义的顺序来加载UEFI driver or UEFI application。当固件初始化完成,就会把控制权交给boot manage
阅读全文
摘要:一、核心结论(先看结论) /dev 下的设备节点是由 用户空间进程 ueventd(Android 的简化版 udevd)创建的。 设备节点的创建是因为 内核在设备注册时(device_register)通过 kobject_uevent() 发送了 uevent 消息。 ueventd 监听这些来
阅读全文
摘要:PEI 阶段 PEI 阶段有它自己的使命,其中非常重要的一个就是初始化内存,建立内存信息,然后传给下一个阶段。为了完成PEI 的这些任务,它也需要有内存管理。 PEI 阶段最为重要的结构是HOB, 初始化内存服务前,PEI 申请的内存其实是插入到FV 文件 也就是FLASH 里面去运行。 在此状态下
阅读全文
摘要:本文接着上文开始往下讲 1. SecondStageMain 此时就到了init的第二阶段。 int main(int argc, char** argv) { ... //执行此处 if (!strcmp(argv[1], "second_stage")) { return SecondStage
阅读全文
摘要:本文接着上文开始讲解,上文中最后一步执行后会执行init启动过程中的第二步SetupSelinux(Selinux配置阶段),这样又会走到main.cpp中的main方法。 1. SetupSelinux 由于上一篇中最后一步在重新执行init的时候携带了参数selinux_setup,所以此处会走
阅读全文
摘要:开机有好几种方式启动,本文主要讲的是按Power键开机流程。 本文参考AOSP 12原生代码,链接为:AOSP 12 Searchhttp://aospxref.com/android-12.0.0_r3/ 1. BootLoader加载 当按下设备电源键时,最先运行的就是 bootloader(固
阅读全文
摘要:kernel/reboot.c void kernel_restart(char *cmd) { kernel_restart_prepare(cmd); migrate_to_reboot_cpu(); syscore_shutdown(); if (!cmd) pr_emerg("Restart
阅读全文
摘要:一、预加载机制总览 Zygote通过预加载关键系统资源,实现子进程的快速启动。其核心逻辑包括: 关键特性: 在Zygote启动阶段完成 使用共享内存减少内存占用 支持动态配置预加载清单 与fork机制协同工作 二、预加载流程源码解析 1. 入口方法 // frameworks/base/core/j
阅读全文
摘要:综述 FDF的全称是Flash Description File。 它是构成BIOS二进制的描述符,即FDF文件描述了BIOS二进制的组成结构。 本文的目的就是介绍FDF文件内部的组成以及它们是如何完成对BIOS二进制的描述。 下面首先来看下BIOS二进制的大致结构: 上述的结构中有几个需要说明关键
阅读全文
摘要:EDK II增加新的代码后,uefi编译编译报错,错误如下: Fd File Name:QCOMMODULE_EFI Generate Region at Offset 0x0 Region Size = 0x22000 Region Name = FV Generating FVMAIN_COMP
阅读全文
摘要:很早就听说过board-id能用来区分项目,没负责过这个,也一直没有时间去了解。board-id的可以通过gpio或者eeprom来存放,board-id也就是CDT中的部分内容,如果时gpio的方式,可配置的项目有些而且在主板上的都是hardcode,这样不利于维护。 XBL-CDT defaul
阅读全文
摘要:在上一篇博文中主要描述了启动流程,及代码执行流程,并重点介绍了一下我重点关注的部分。这个sbl部分也算有点庞大,我们没有精力也没有必要去分析全部,所以接下来就来分析一下sbl1中另外几个需要格外关注的部分: CDT :主要提供平台设备数据 log system:log日志系统,当然没有kernel里
阅读全文
摘要:高通8k平台的boot过程搞得比较复杂, 我也是前段时间遇到一些问题深入研究了一下才搞明白。不过虽然弄得很复杂,我们需要动的东西其实很少,modem侧基本就sbl1(全称:Secondary boot loader)的代码需要动一下,ap侧就APPSBL代码需要动(对此部分不了解,可参照:boota
阅读全文
摘要:Systemd程序 Systemd其实是Linux系统用来管理系统的一个程序,用来代替原来的init进程(用来管理启动系统其它的服务进程),现在很多Linux发行版都已经自带Systemd程序了。 systemctl命令 1. Unit systemctl命令是Systemd中最重要的一个命令,用于
阅读全文
摘要:在UEFI开发中,inf、dsc、FDF 和 DEC 文件是EDK II构建系统的重要组成部分,各自有不同的作用。 1. INF 文件 (Module Information File) 作用: 描述模块的构建信息,如源代码、依赖库、编译选项等。 内容: 包括模块类型、GUID、源文件、库依赖、PC
阅读全文


浙公网安备 33010602011771号