UEFI的学习
来源:互联网 发布:hishop云商城2.0源码 编辑:程序博客网 时间:2024/05/01 11:58
UEFI是从legacy BIOS发展而来,leagcy BIOS主要是汇编语言,而UEFI大部分是C语言,另为有百分之一是汇编和机器码,现在在UEFI code中是加入一个CSM module(里面的AmiLegacy16.bin实际上就是legacy BIOS rom),UEFI是一个技术论坛组织,Aptio是AMi的UEFI产品,Tinao是Inter的UEFI产品,到底还有哪些UEFI产品呢,我也没搞清?哪位大侠知道就给说明一下。
UEFI主要分为4个阶段:
1)SEC,Security的缩写,它是平台信任链的根,
主要完成的是CPU的基本初始化(进入保护模式,MTRR,MP,CAR等),转移到C环境(CAR提供C环境所需要的栈),最后将控制权交给PEI core,所谓的控制权就是BFV及CAR的Size和Baseaddress(在code中的sdl文件中有定义,CAR的大小与FV_BB相当);
2)PEI:即Pre-EFIInitialization,完成CPU,基本的Chipset的初始化,切换栈从CAR到Memory上(需要disabled CAR,同时enabled cache),决定Boot mode,是normal boot还是Recovery boot或者是S3 resume,对于服务器而言,不需要有待机的sleep status,因此取消了S3 resume,只有S0和S5,最后要做的就是启动DXELPL,它是最后一个PEIM;
PEI阶段需要注意的几个名次:PEI core(主要的PEI执行文件,负责dispatch PEIM且提供基本的服务),PEIM(PEI module),PPI(PEIM to PEIM的Interface,允许一个PEIM去调用另一个PEIM);
PPI有四个常见函数:InstallPPI(安装PPI到PPI LIST),ReinstallPPI,NotifyPPI(PPI第一次被安装后由于条件不满足没有被执行,等条件满足后才再次被调用),LocatePPI(查找PPI);
3)DXE:Run所有的DXE Drivers,使其进入准备状态,(DXE阶段的Driver与Chipset的初始化相关,建立并提供EFI框架的主要界面),Bind EFI1.1 Driver(在BDS阶段才会被用到,一般先挂在系统上,到BDS阶段用到的时候才根据需求connect到device handle上);检查Architecture Protocols是否都安装(在DXE阶段install protocols和invoke protocols),启动BDS;
DXE阶段的kernel和硬件没有关系;
4)BDS:启动必要的驱动程序(PCI设备的遍历,并为遍历的设备加载oprom,如VGA、PXE、RAID等,boot device的初始化),进入Setup,选择要boot的OS device(UEFI OS还是legacy OS),
SEC和PEI的code(在ROM中的位置是FV_BB)没有被压缩,code在rom上执行,执行效率低,因此code越短越好;
DXE和BDS的code(在ROM中的位置是FV_MAIN)是被压缩的,code须解压在memory上执行(memory已被完全初始化,可以使用所有的memory资源)
- UEFI的学习
- 常用的UEFI学习网址
- UEFI EDKII 编程学习
- UEFI BIOS 学习笔记
- UEFI学习笔记—OEM经常要做的事
- UEFI EVENT的疑惑
- BIOS 的继任者 UEFI
- UEFI的helloworld程序
- UEFI
- Cstyle的UEFI导读: UEFI当中的面向对象模式
- UEFI小结-Handle的来龙去脉
- UEFI小结-Handle的来龙去脉
- UEFI小结-Handle的来龙去脉
- UEFI里面的PCI驱动
- 进入UEFI系统的方式
- UEFI小结-Handle的来龙去脉
- Legacy UEFI启动的比较
- 装系统--UEFI的电脑
- QT下 TableWidget 实现右键菜单栏,以及TableWidget整体美化工作。
- [码海拾贝 之JS] JS 之数组排序
- 医疗行业大数据应用体现在10个角度
- eclipse jetty 插件
- Centos 编译安装ACE
- UEFI的学习
- 传智播客.韩顺平.轻松搞定网页设计(html.css.javascript)
- Objective-C的语法简要说明(c++对照)
- JAVA学习之静态内部类(二)
- [CentOS]如何解决gcc版本冲突?
- iframe用法总结
- JSONObject与JSONArray的使用
- <%@ include file="relativeURL" %>静态及<jsp:include>动态
- linux下C连接mysql示例