此处仅以一个具体的例子分析share rom及整个flash的layout,仅BIOS区域(不包括ME)总大小是10MByte。如下图,FV_RECOVERY0(地址0x00A00000)映射到4G顶端(0xffffffff),使用FIT构建flash image的时候还会重定位最终FV_RECOVERY0的地址(用edit直接打开二进制文件的话,会在文件的末端,如图二所示),加入SPI flash descriptor,一般是在fffffff0h处放一条跳转指令,跳转到FV_RECOVERY0处。FVMAIN(地址0)映射到4G-0x00A00000(10M)地址,OEM还可以把EC ROM放在FVMAIN后面。此处FVMAIN的起始地是0会被映射到4G-10M(BIOS ROM大小),如果加入OEM EC之后,起始地0处会是EC,FVMAIN的地址=0+ EC size。

用edit打开最终的bin档案之后,可以看到address =00000000h处对应着上图的FVMAIN,address=9ffffff0对应这上图的FV_RECOVERY0,boot vector在文件最底部也就是0x009ffff0的位置,作为开机跳转指令。

下图是整个Flash device存储空间的layout,其中BIOS区域大小为10M,其4G处映射到resetvector,其0G处映射到SPI flash descriptor。SPI flash descriptor的最开始的16Byte一般用来作为EC的跳转
指针(EC firmware pointer),当我们把BIOS和EC放在一颗SPI flash rom的时候可以使用FIT把ME,BIOS,EC包在一起。


讲完了整个flash rom的layout现在来看看EC是如何和BIOS share和工作的时候互不干扰的。
转载请注明出处,或可关注微信公众号:固件C字营
Cstyle.z.zhou@outlook.com // http://blog.youkuaiyun.com/CStyle_0x007

本文通过一个实例探讨了在UEFI环境下,BIOS区域(10MBytes)的布局,包括FV_RECOVERY0和FVMAIN的映射,以及如何在SPI flash中加入EC ROM。FV_RECOVERY0通常在4G顶端,FVMAIN始于0且可能被EC占用。EC ROM的放置和启动跳转指令的设置确保两者共存而不会相互干扰。文章还提到了SPI flash descriptor的重要性,特别是EC firmware pointer在BIOS和EC共享SPI flash时的角色。
1万+

被折叠的 条评论
为什么被折叠?



