【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简介来使用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值