最近一直很忙,没有时间来这里坐坐,现在我继续给大家介绍EFI的基本概念之框架结构(Framework),前面一篇文章已经提到,EFI的目标就是实现BIOS的模块化,标准化,简单化。为了实现这个目标,就需要设计出相应的框架出来,只有框架支持模块化,才能去谈最终的产品实现了模块化,所以框架是基础。我接下来要介绍的框架结构是由Intel公司设计出来的,虽然intel在推广EFI的时候明确表示,这个框架仅仅是一个推荐方案,可以自己去设计出更好的,更加完美的框架结构,但是至今没有看到第二个框架出现,目前世界上只有两个EFI的产品,一个是Intel公司的Tiano,另一个是AMI的Aptio,他们都使用同一个Framework,虽然有很多公司都在做EFI BIOS,包括国内的好多厂商也在参与,但是他们都是在前面两个产品的基础上进一步去更改/添加代码,完成客户需求。在此我强烈建议,如果国内真的想发展自己的EFI BIOS,希望能重新设计一个Framework,如果没有这个能力,也希望能完全靠自己去实现Intel的Framework,那样才能实现真正的自主知识产权,如果仅仅在上面提到的两个产品上去修改,去完善,那么还是被动,因为核心研发在别人手上。说得有点远,我们现在就来看看这个Framework,请看下图:

笔记本电脑系统架构 笔记本电脑框架结构_dos

这个就是Intel设计出来的一个完整的EFI BIOS示意图,其中绿色的部分就是Framework,我现在从下至上一一介绍。

1)Hardware 这个没有什么好说的,就是指我们的平台,主板。

2)Framework,一个大的“H”型结构,好像一个大的容器,两端都能装东西,装入协议和接口,下端的协议用来访问硬件,上端协议用来和操作系统进行交互,而两端的协议进行通信的桥梁就是Framework所设计出的两个基本模块:DXE Foundation和PEI Foundation。之所以有两个,是因为在BIOS过程中分两个阶段,他们各自包含了一个称之为调度器(Dispatcher)的东西,来调度执行子模块。这两个Foundation里面到底有哪些东西,我会在后面的文章中继续介绍。Framework还包含了Framework Driver,它实现了除Foundation之外的功能,比如访问硬件的接口等等,注意,它仅仅包含接口而已,不包含接口的实现。

3)Platform Drivers,这个是和具体硬件平台相关的驱动,访问硬件接口的实现,前一篇文章已经提到,EFI在设计的时候就考虑到跨平台,所以我们在这里看到了他把何平台有有关的东西做到了一个模块里面,那样在移植到其他平台的时候,只需要换掉这个部分就可以了。

注:在这里我们经常会看到"Driver"这个词,我想说明一下,这个“Driver”和我们日常所听到的驱动程序有点不一样,可以翻译成接口,我觉得更加恰当一些。

4)EFI Drivers,这个指一个符合EFI 驱动标准(EFI Driver Modle)的驱动程序,EFI的标准化甚至渗透到了驱动层面,为了兼容性,也制定了驱动标准,凡是符合此标准的程序,都可以在所有的EFI BIOS上直接运行,而不需要任何改动。这样也给做外围设备的厂商提供了方便,他们在编写设备驱动程序的时候,只需要去了解驱动模型就好,而不要去研究整个EFI BIOS,也不用考虑不同的EFI BIOS会有不兼容这个问题。

5)Capatibility Support Module(CSM),为了兼容现有的汇编语言编写的设备驱动程序和操作系统,而提供了这个部分,计算机领域都要考虑向前兼容的问题,直到BIOS的所有部分都符合EFI标准,这个模块才会拿掉,不过现阶段,这个东西还会存在很长一段时间,因为目前使用EFI BIOS的操作系统很少,Mac OS,Vista+SP1,Linux也正在准备,前景很好:),还有重要的一点,就是现阶段的一些操作系统不可能很快就被淘汰,Dos到今天还在广泛使用。

6)EFI,再往上一层黄色薄薄的一层,EFI本身所表示的就是接口,所以我们可以看到,在Framework这幅图里面,它只占了很少的一部分,仅仅提供了OS和Framework之间的接口而已。绝大多数工作,都是在Framework中完成。

7)OS,最上面灰色的部分,这幅图里面有两种OS,一种是支持EFI的操作系统,另一种是传统的(Windos XP/98,DOS等等),后者在启动过程中还需要CSM支持,用Int 19H中断,所以它放在了CSM的正上方,而支持EFI的操作系统,是不要CSM支持的,它的启动方式是EFI标准所规定的,这个我们在后面继续介绍。

 

以上就是这幅图的全部内容,感兴趣的朋友如果有不清楚的,或者不同意见的,可以一起讨论,我所讲的也不一定完全正确,都是这两年学习的一些总结。