硬件工程师知识点6- BIOS Introduce From P

2019-08-04  本文已影响0人  Elias666666

Author: Elias

Consultant: Vincent/Free

时隔快一年,重回x86.,错误的地方还请指出。

Contents

-x86 board boot up sequence

-ME phase

-SEC phase

-PEI phase

-DXE phase

-BDS phase

-TSL/RT/AL phase

ME  phase

ME为management engine,是一段与HW联系非常紧密的code,ME 运行最早,可能比硬件PLTRST#更早,没有ME SLP_Sx似乎起不来,主板开机PCH工作后第一件事就是从BIOS里特定区域load ME code,再去跑SEC。

•GPIO type/level config

•Signal config,e.g. PCIE与相应的CLKREQ 配对

•BIOSROM的type和大小

•Signal enable/disable,如PCIE X2/X4/X8配置,HDMI/DP display port enable等

•Strap pin设置

•Flash规格设置

•etc..

例,ME flash tool里关于PCIE/SATA口及对应CLKREQ#的配置

Lessonlearn:ME的设置与硬件非常紧密,从debug的角度看,硬件的设计改动必须与BIOS确认ME是否需要修改。

SEC phase

1.CPU从BIOS的固定分区开始执行代码,初始化必要的CPU/PCH环境。

2.CPU从BIOS里load microcode,microcode为CPU的补丁,是Intel直接给BIOS的编译好了的bin文档。microcode作用:将复杂指令翻译成硬件电路能直接执行的简单指令序列;CPU bug的补救等。

3.BIOS在CPU cache临时划分一部分作为临时RAM使用,初始化临时RAM。

4.定位BIOS的BFV分区(Boot Firmware Volume),定位BFV里的SEC镜像。

5.从16/位模式切换为系统的32/64位模式。

6.定位SEC入口函数。

7.通过SecCoreData切换到PEI phase。

BIOS SEC debug code描述了在进行到某一个阶段时debug卡/80卡丢出来的代码,有助于分析问题,如常见的档55(内存没插好)档52(DRAM SPD没识别成功)等。

PEI phase

1.初始化内存

2.主板状态(S0/S3/S4…)检测

3.主板灾难性事件检测

4.初始化CPU/PCH GPIO等

5.准备HOB(Hand-off blocks)列表跳转到DXE phase

DXE phase

1.初始化系统设备,加载驱动

2.创建handle及protocol

3.DXE派遣器根据GUID派遣所有的DXE driver给相应设备

常说的POST(开机自检)绝大部分工作在这个阶段。

BDS phase

Boot Device Selection

•为设备加载必要的设备驱动。

•根据系统选项执行启动项。

[if ppt]•[endif]

如果加载启动项失败,系统将重新执行DXE dispatcher 来加载更多的驱动,然后重新尝试加载启动项。

TSL/RT/AL phase

TSL(Transient System Load)是操作系统加载器(OS Loader)执行的第一阶段。该阶段内 OS Loader 作为 UEFI

的应用程序运行,系统资源仍由UEFI 内核控制。

TSL阶段的目的是为OSLoader 准备执行环境,具备操作系统的雏形,UEFI Shell 是这个檩式系统的人机交互界面,正常情况下不会进入。

RT phase

RT(Run Time),系统的控制权从 UEFI 内核转到OS Loader,UEFI 占用的各种资源被回收到OS Loader。

AL phase

AL(AfterLife),如果系统在 RT阶段遇到灾难性错误,就会进入

AL 阶段,系统固件提供错误处理和灾难恢复机制。

上一篇下一篇

猜你喜欢

热点阅读