IntelFSP介绍
概述
FSP(FirmwareSupportPackage)是Intelsilicon初始化代码的一个binary形式的发布包。
FSP主要提供chipset,processor初始化代码,并且很容易集成到当前的bootloaders。
FSP独立于bootloader,bootloader需要将FSP集成进来完成Intelsilicon初始化以外的一些功能例如:
1。初始化其它的非intelsilicon相关的硬件
2。总线枚举,例如pci总线,usb总线等总线枚举,目的是devicediscovery。
3。工业规范的支持,例如ACPI,SMBIOS等。FSP格式
1。FSP二进制格式遵循UEFIFirmwareVolumeSpecification。
2。FSP由几个components组成,每个component由一个或者多个FV组成。
3。Components包括FSPT,FSPM,FSPS,FSPI,FSPT。每个component只能有一个实例。
4。每个component的第一个FV的第一个ffs文件必须是FSPINFOHEADER(一个数据结构体)。这个结构用了传递bootloader用来和FSPbinary交互所需要的信息。
5。每个component包含一个可配置的数据区UPD(UpdateableProductData)。这个UPD包含的是FSPcomponent初始化参数。
FSPComponents
FSPT:主要目的是是初始化TemporaryRAM。
此阶段包含
TempRamInitAPI。
FSPM:主要目的是初始化内存。
此阶段包含如下FSPAPI
FspMemoryInit()
FspMultiPhaseMemInit()
FspRamExit()
FSPS:主要目的是CPUIOcontroller等silicon相关初始化
此阶段包含如下FSPAPI
FspSiliconInit()
FspMultiPhaseSiInit()
NotifyPhase()
FSPI:SMM初始化阶段
此阶段用来初始化SMM,提供OSSMM相关runtimesiliconservice,例如RAS。
此阶段包含如下FSPAPI
FspSmmInit()FSPInformationTables
每一个FSPcomponent包含一个FSPINFOHEADERtable,至于其它table可以
有选择地包含。
所有的FSPtables必须遵循4bytes地址对齐。
所有的FSPtables必须以DWORDsignature,DWORDlengthfield开始。
通常来说一个通用的FSPtable查找通过搜寻相应的signature,直到FSPPsignature被发现而终止。
FSPINFOHEADER
Byte
Offset
Size
in
Bytes
Field
Description
0hr4hrSignature
FSPH
4hr4hrHeaderLength
Lengthoftheheaderinbytes。Thecurrentvalueis88。
8hr2hrReserved1
10hr1hrSpecVersion
11hr1hrHeaderRevision
12hr4hrImageRevision
RevisionoftheFSPbinary
16hr8hrImageId
24hr4hrImageSize
28hr4hrImageBase
32hr2hrImageAttribute
34hr2hrComponentAttribute
36hr4hrCfgRegionOffset
OffsetoftheUPDregion
40hr4hrCfgRegionSize
44hr4hrReserved2
48hr4hrTempRamInitEntryOfset
52hr4hrReseved3
。。。。。。
4hrOtherFSPAPIs
OffsetofotherAPIsFSPConfigurationData
每一个FSPcomponent包含一个configurabledataregion用做FSP初始化配置参数。
这个configurabledataregion称作UpdateableProductData(UPD)。
UPD参数可以被静态地客制化。可以利用BinaryConfigurationTool(BCT)
搭配BootSettingFile(BSF),BSPbinary来修改UPD。
UPD参数也可以被bootloader动态地overrided。
UPD以datastructure形式组织所有的配置参数。当bootloadercallTempRamInit(),
FspSiliconInit()等FSPAPI时通常会将UPD配置参数以指针的形式传递给这些APIs。
如果传递的指针是NULL,那么FSP将要用静态buildin的UPD作为API参考的参数。
通常bootloader在callFSPAPIs之前会copybuildinUPD到memory,update相关的
memory中的UPD参数,再将updatedmemory中的UPD作为指针传递给FSPAPIs使用。
UPDstructure
Offset
Field
0x000x07
UPDRegionSignature。
XXXXXXTforFSPT
XXXXXXMforFSPM
XXXXXXSforFSPS
XXXXXXIforFSPI
0X08
RevisionoftheDatastructure
0x090x1F
Reserved〔23〕
0x20n
PlatformSpecificParametersFSPMode
FSPInteface分APIMode,DispatchMode。
UPD只能用于APImode,在dispatchmode,PPIdatabase,PCDdatabase用来作为
FSP和bootloader交互,因此dispachmode仅存在于UEFIbootloader。
dispatchmode不是FSP强制性要求支持,APImode被强制要求支持。
dispachmode是FSP可选择的支持模式,用来更好的集成FSP到UEFIbootloader环境。FSPAPIModeInterface
关于FSPAPI执行环境要求如下
中断必须关闭
FSPAPI只能被BSP执行
确保足够的堆栈空间
x8632bitAPImode
系统操作在32bitflatmode
代码段,数据段选择子对应的段描述符必须是4GB范围
x6464bitAPImode
系统操作在64bitlongmode,分页机制使能
FSP,bootloader的地址空间映射相同(物理地址即虚拟地址)
段选择子被要求设置flat模式(所谓平坦模式既一个段访问整个地址空间)
API调用约定
调用约定体现在参数传递的方式,参数传递的顺序,寄存器环境保存等。
FSPAPI32bit调用接口同c声明调用相似,也就是所有的参数是从右到左压入堆栈
FSPAPI64bit调用接口同EFIAPI类似FSPDispatchModeInterface
Dispatchmode是FSP实现的一个可选的模式,dispatchmode是用来使FSP方便容易地集成到UEFIbootloader中。
Dispatchmode启动流程遵循标准的PI规范,也就是遵守SEC,PEI,DXE,BDS四个PI启动流程。
Dispatchmode,FSTT,FSPM,FSPS,FSPI等所有组件只是作为PEIM或者DXE驱动的容器,直接将这些组件中的FVs暴漏给UEFIbootloader,UEFIbootloader从这些FVs加载相应的PEIMs或者DXE驱动在UEFIbootloader的PEIDXE执行环境执行。
在dispatchmode下PPIdatabase,PCDdatabase,HOB等在FSP和bootloader之间共享用来交互信息。
在dispatchmode下UPD不再被用。
在dispatchmode下NotifyPhase()API也不再备用,取而代之的是FSPS中的DXE驱动实现UEFInativecallback。
在dispatchmode下FSP应该用DXEfundation环境提供的service中的一部分,下面这些service不应该使用
ExitBootServices()
SetWatchdogTimer()
SetTime()
SetWakeupTIme()
UpdateCapsule()
QueryCapsuleCapblities()
FSPdispatchmode完全遵循PI规范,因此大部分FSPAPIs是不需要的。但是无论如何PI定义了PEI和DXE阶段module的格式,例外的是没有定义SEC阶段module的格式,因此在dispatchmodeFSTT依然用FSPAPI模式下的TempRamInit()。
基于dispatchmode启动流程PEIfoundation并没有在BFV中,按照PI规范,SEC必须传递EFIPEICOREFVLOCATIONPPI到PEIFoundationEntryPoint。
Dispatchmode下产生FSPTemporaryRAMExitPPI,这个PPI等同于TempRamExit()FSPAPI,这个PPI是选择性要求。
Bootloader需要按照FSPMArchitectualConfigurationPPI,此PPI包含FSPM中的PEIM需要的配置数据。启动流程
APIModeBootFlow
DispatchModeBootFlow
唐爱六于2023。3。123
张檬金恩圣婚礼太浪漫!一个为爱整容一个爱劈腿,这婚姻看点十足最近娱乐圈终于迎来了一件大喜事,那就是女星张檬跟韩国籍男星金恩圣,在三亚举办了他们的婚礼,两位新人也是第一时间就向网友公布了这一喜讯,随后两人还晒出了婚礼现场的照片,网友们不禁……
绿茵信仰足球游戏的全新挑战者堂堂登场聊起足球,大家想到的肯定是青春,是放弃课间休息也要去操场上颠几下球的高中岁月,是定好闹钟在凌晨起床看球赛直播的熬夜时光,它给很多人带来了快乐,这份快乐也不会因为你是一个穷学生或……
太难了!易建联下场球队就崩盘,曾繁日让人失望,朱芳雨行动吧CBA常规赛,一场焦点大战,山西男篮对决广东男篮!这场比赛的胜负真不好说,虽然广东队是卫冕冠军,威姆斯回来了,阿联的状态也不错,但是赵睿依旧不在,并且首回合他们可是惨败给对手的……
宁德时代发布半年报,净利润同比大涨822022年8月23日晚间,全球动力电池龙头宁德时代(300750。SZ)发布半年业绩公告。宁王再次向市场展示了其无与伦比的市场规模与盈利能力:根据公告,宁德时代在今年上半年实现……
199元也能买到航拍机JJRC这款并不差文张紫宸责编吕东兴总编唐迪今天为大家推荐的这款无人航拍机,可以自己用来拍摄喜爱的风景,记录美好生活。当然,也可以作为礼物送给孩子,因为它是零基础上手,小白也能轻松快速掌握……
秋季是长高黄金季,推荐这5道早餐,孩子吃得好,营养足长得快秋天是骨骼发育的关键时期,现在的很多家长为了节约时间,对孩子的早餐也是马马虎虎的,尤其是现在90后的这一批父母,早晨都喜欢睡懒觉,不想起来给孩子做饭,但是对于孩子来说,正在发育……
到朝鲜旅游带多少钱过去比较合适?其实很早以前就想去朝鲜旅游,但因为种种原因耽搁了。去年跟朋友说,准备去朝鲜旅游的时候,朋友都感到非常惊讶。问我为什么想要去朝鲜旅游。有的甚至以为我要去韩国旅游。很多人对朝鲜有着……
喜欢在冬天穿各种毛衣头条创作挑战赛想在冬季留住一个私藏的春天喜欢在冬天穿各种毛衣纱线带着特有的温柔在时间的涌动里感受季节的脉络与走向一针一线,都是温暖的感觉就像……
如何养成良好的排便习惯?首先要这样做良好的排便习惯为每日定时排便一次,排便顺畅,便后有轻松感。生活中养成这种排便习惯,不仅可有助于排出体内的毒素和废弃物质,清洁肠道,避免便秘,还能促进胃肠道蠕动,减轻胃肠道负担,……
特斯拉致死事故达249起,问题在自动驾驶?蔚小理也问题不断Model3在2021年发生的致命事故特斯拉汽车又发生致命事故了。美国当地时间上周日凌晨,一辆2020款Model3在犹他州追尾了一辆摩托车,导致摩托车驾驶员当场死亡。事……
一人之下真人版开拍,你觉得谁最像?网友毫无关系海贼不识王路飞,便称英雄也枉然!大家好,我乌龙君又双叒叕来了一人之下真人版即将开拍,虽然这对于支持米二的朋友们来说算是一个好消息,但似乎这对于仅仅是喜欢一人之下这部作品的……
云南省未来24小时风景区天气预报晋宁郑和公园,多云转小雨,1021度西双版纳望天树风景区,小雨,1931度怒江大峡谷,小雨,1831度宁洱那柯里茶马古道,小雨,1225度昭通彝良小草坝……