【UEFI实战】FSP简介
说明
在【UEFI实战】SlimBootloader简介中有说到,编译Slim Bootloader的时候需要使用到FSP,本文就是用来介绍FSP是什么,它的作用,以及如何编译等内容。
什么是FSP
FSP的全称是Firmware Support Package。
关于它的详细介绍,可以在Intel® Developer Zone找到。
这里简单介绍下:
1. FSP提供了Intel的部件,包括处理器、内存控制器、芯片组的初始化;
2. FSP被编译成独立的二进制,并可以集成到Bootloader中,这里说的Bootloader可以是Slim Bootloader,coreboot,UEFI等等;
3. FSP的优点有免费、方便集成、可减少开发时间,等等。
FSP的二进制结构大致如下:
它包含三个大的部分,分别是:
1. FSP-T:它主要用来初始化CACHE以及其它早期需要的初始化,对应提供给外部的接口是TempRamInit();
2. FSP-M:它主要用来初始化内存以及其它需要的初始化,对应提供给外部的接口是FspMemoryInit()和TempRamExit();
3. FPS-S:它主要是CPU和芯片组的初始化,对应提供给外部的接口是FspSiliconInit()和NotifyPhase(),其中后者又分为不同的阶段的调用,包括PCIE扫描之后,ReadyToBoot时和EndOfBootServices的时候;
上述三个组件都会包括一个配置文件,用来进行定制化。
因此Bootloader要操作FSP,就需要完成文件配置,接口调用,整个流程如下:
Bootloader中需要有相应的代码做上述的操作,以UEFI为例,在EDK中有几个PKG与FSP相关:
从上面的Pkg也能看出一点,FSP已经经历了不同的世代,目前我们使用的是FSP2.0的版本,所以只需关注上面两个就行了。
不过需要注意,这里的Pkg并不是提供FSP源代码的,只是提供了EDK与FSP之间的中间层,真正的用来初始化Intel组件的FSP的代码并没有开源,所以这里也拿不到。
本文后面讲到的FSP的编译,实际上是Intel提供的,对于模拟器QEMU的一个FSP,由于本文关注的是FSP本身,对于Intel组件的初始化并不关系,所以也够用了。
FSP的编译
本文使用QEMU的FSP,它其实已经在编译Slim Bootloader的时候(【UEFI实战】SlimBootloader简介)下载,具体的QemuFspPkg目录如下:
在同一层目录下就有BuildFsp.cmd命令,执行即可以完成编译,生成的二进制位于BuildFsp目录下:
注意这里的QemuFspPkg并不是在开源的EDK2中默认就有的,而是通过Patch打上去的,而对应的Patch是在Slim Bootloader中的,具体的操作可以参考Slim Bootloader下的\BootloaderCorePkg\Tools\PrepareFspBin.py这个文件。
FSP的使用
FSP不能单独使用,关于本文编译的FSP,可以参考【UEFI实战】SlimBootloader简介来使用。
【UEFI实战】FSP简介相关推荐
- 【UEFI实战】LinuxBoot
综述 LinuxBoot是一个开源的固件,用来替代UEFI BIOS加载Linux的系统. 官网是LinuxBoot. 对应的代码库位于LinuxBoot · GitHub. 另外,本文是在[UEFI ...
- 【UEFI实战】EDK的编译流程说明
前言 使用EDK进行UEFI开发,开始的时候很容易遇到的问题就是编译不过,并非代码的问题,而是编译环境存在异常. 本文主要介绍EDK是如何进行编译的,使用的平台是Windows.这里还想说一点,事实上 ...
- 【UEFI实战】OS下如何查看系统相关信息
说明 本文主要介绍OS下如何来查看系统信息,这些系统信息大多是通过BIOS上传的.这里的OS主要分为Linux和Windows两个部分来说明,前者使用的发行版系统是Ubuntu18.04,后者使用的是 ...
- 【UEFI实战】UART的初始化
说明 UART全称是Universal Asynchronous Receiver/Transmitter,这里它表示的是一种实现串口通信的芯片,在整个串口系统中它的位置如下图所示: RS232 +- ...
- 【UEFI实战】SlimBootloader中调用FSP
综述 FSP的全称是Firmware Support Package.FSP有以下的特性: FSP提供了Intel重要组件(包括处理器.内存控制器.芯片组等)的初始化: FSP被编译成独立的二进制,并 ...
- 【UEFI实战】Project Mu简介
什么是Project Mu Project Mu是微软推出的一个项目,官网是 Project Mu Project Mu简单来说就是一套edk2基础上的UEF固件,但是具有自己的特点,如图所示: Pr ...
- 713页鸿蒙巨作《鸿蒙HarmonyOS手机应用开发实战》简介
<鸿蒙HarmonyOS手机应用开发实战>一书由清华大学出版社出版,已经于2022年1月上市.拿到了样书,第一时间希望与读者朋友们分享下这本书里面的内容. 这本书的背景 近期拿到了样书,迫 ...
- 目标检测算法模型YOLOV3原理及其实战 课程简介
前言 在移植目标检测算法模型到海思AI引擎上运行的过程中,深切感受到理解和掌握算法模型原理的重要性. 基于此,我出了一门专门来讲目标检测算法模型原理及实战的课程.虽然讲的是YOLOV3模型,但是对理解 ...
- 电商详情页系统实战(1) - 简介
1 缓存技术掌握不够,会对发展带来了哪些阻碍 1.1 工作中 如果你这块技术掌握不够,然后你的公司的项目遇到了一些相关的难题,高并发+高性能的场景,hold不住类似的这种高并发的系统 因为缓存架构做得 ...
最新文章
- 创 keras_contrib 安装
- IIS7.5 安全配置研究(推荐)
- Windows 技术篇 - 远程桌面连接不保存密码、每次都要输入密码问题解决
- 杨辉三角java代码_【LeetCode】118. 杨辉三角(Pascal#x27;s Triangle)解题思路
- 2018年山西省环境空气质量综合指数平均下降10.8%
- 驰骋工作流引擎表单设计器--表单装载前数据填充
- 在Access数据库中使用SQL查询分析器
- 2020 农行笔试题——软开
- 【51单片机快速入门指南】5.2:SPI读取 12位ADC XPT2046 芯片
- 支付宝小程序下单支付接口:40004 ACQ.INVALID_PARAMETER
- Zero-shot Adversarial Quantization论文翻译+解读
- 【vue】bable的介绍以及编写vue文件
- windbg分析C++ EH exception
- skimage 学习第二天:ski官网示例程序总结(1)
- http 请求 405 错误,解决办法
- 【c51单片机】交通红绿灯设计
- JavaApplet运行
- LabVIEW热敏电阻温度计程序
- Linux学习:sheel编程
- SitePoint Podcast#180:David Lee King的Face2Face
热门文章
- 腾讯慧眼高可用架构设计
- springboot中mybatisplus基于注解的多对多级联查询
- 计算机网络安全技术论文范文,计算机方面论文范文数据库,与关于计算机网络安全防护技术的相关毕业论文题目范文...
- win2003服务器360修复漏洞打不开网页,WIN2003服务器出现HookPort 服务启动失败的解决办法!...
- list, vector, map, set 区别与用法比较
- webgl之Three.js学习 day10定制着色器和渲染后期处理
- 图结构算法学习(一)——有向图
- [Toddler's Bottle]-collision
- python多维数组排序算法_python 多维数组的排序
- 猫头鹰,夜猫子和睡眠 | 生活描绘