07-24-2018, 11:02 AM
(07-24-2018, 10:07 AM)hehuiim 提到: 感谢回复,descriptor这个我有了解了,这边定义了各个区域的大小,位置,权限等等。。。
我不清楚的是coreboot.rom是替换其中的哪个域?是BIOS域吗?按你说的是替换原先的BIOS部分?而且不是整个coreboot.rom替换,只是替换CBFS?
另外coreboot社区是否有这部分的具体说明呢?刚接触不是太了解,如果社区有各类说明文档能否帮忙给下链接,我自个学习即可。谢谢!!
另外FITC是intel提供的flash image tool,用来将ME/FD/BIOS等固件整合成整个flash镜像的工具。
coreboot只有BIOS部分的代码,这部分是CPU执行的。对于x86,固件是放在flash末尾的(对于Intel平台实际上是BIOS部分的末尾,但一般来说是一样的)。coreboot对固件所有的组成部分(bootblock,romstage,ramstage,payload,各种数据)做了个简单的组织形成了CBFS,整个CBFS就是固件的内容。我们只要把CBFS放到BIOS部分的末尾就好了。
由于coreboot社区移植的大部分主板都不是出厂就用coreboot的机器,里面有自带的IFD、ME、GbE的部分,因此一般的做法是把它们和coreboot.rom拼在一起形成一个新的镜像。例如Lenovo X220的原厂固件有8M,其中IFD+ME+GbE有5M,这样构建coreboot的时候,CBFS至多有3M(实际上2M在大多数情形下就够了),构建出coreboot.rom后,用 dd if=factory.rom of=build/coreboot.rom bs=1M count=5 conv=notrunc 把原厂固件的IFD,ME,GbE写进coreboot.rom的前5M.
另一种方法是把IFD,ME,GbE都提取出来,在配置的时候指定。 https://www.coreboot.org/Intel_Sandybrid...d_Tutorial
如果FITC是把各种成分整合成一个可以直接刷进flash的镜像的话,那么这个镜像实际上和用编程器读写用的镜像是一样的。