闲来无事回头看看,自毕业以来一直都在BIOS这个行业打转,目前的各种新闻来看全球的IT行业都似乎不太景气,PC出货量一泻千里,想要有所转机看起来不是一天两天的事情,想来无事来看看做过的几个UEFI BIOS方案有什么不同。目前市面上常见的X86平台的UEFI实现方案大致分为几个,AMI,Insyde,phoenix还有一个就是号称是国产的百敖软件,再者就是intel自己的tiano,亲自见到并用过的有两家,AMI的Aptio以及Insyde的H2O,以下就自己的体会做一个梳理。
AMI方案:(8分)这个是本人用的时间最长的一个,大概用了5年多,从Core 8时代开始AMI就是BIOS领域的龙头,到APtio 4以及Aptio V更是
占领了大部分的市场份额。它在各个OEM厂商中得到了比较大的支持。
AMI方案优点:
1.有比较友好的编译编辑工具支持Veb是AMI开发的针对aptio的一个比较方便的编辑,编译与代码版本控制工具。它除了提供普通的文本编辑功能之外,还有提供了类似于Token,Elink,IO,PCI,等各种方便OEM修改的功能,当然这些东西最好是少用,用的越久就会越傻,慢慢的就变得只知token的token工程师了,当然这个不是咱们这种喜欢寻根问底的人所希望的,最好的方法是通过编译产生的中间文件,找出当你修改某个token或者是选中某个钩钩的时候,系统会生成什么样的配置文档,一般来说这些选项和钩钩都会生成一个文本文档,最终都会通过批处理或者是makefile转换成标准EDK的配置文档inf,dec,dsc,fdf这些配置文档识别的格式,然后插入到这些配置文档当中,在最后的make步骤当中被EDK的build程序所调用,最终达到方便修改的目的。当然如果你只是做项目的话,只改改toke如果只是一些小公司或许在要求不高的情况下就能对付过去了,不过这种方法肯定不会长久,一旦你找不到token就傻眼了。
2.刚刚说到的AMI的方案的最大的优点是开发流程方便,友好,还有就是AMI的技术支持也还是不错的前提是你大厂,有跟他们签协议,一般的问题报EIP之后他们会比较快速给你提供支持。
3.AMI的代码写的比较规范包括命名,注释什么的这些都是体现一个软件公司的实例。
4.AMI提供了许多的OEM portting的指导规范,一般的OEM功能的porting基本都能从他们提供的文档上找到操作方法,一般都是比较傻瓜的,稍微有点基础的人都能做得到。
AMI方案的缺点:
1.最大的缺点是太傻瓜,做的太过于面面俱到,以至于新手入门简单改改token就能完成任务,但是很难理解到其内部的精髓,它把大量的UEFI内部的细节给隐藏起来,以至于即使是他们提供的porting文档也只介绍如何使用他们经过封装之后的API和token,让人很难去看到本质。
总之,优点在于实力雄厚,代码规范,入门简单,操作方便,缺点在于一叶障目难见泰山真面目。
Insyde方案:(6分)这个是近一年左右接触到的方案,Insyde作为intel的亲儿子最开始据说是做EC起家的,读过他们的EC代码还不错,但是如果读他们的H2O的话你会有一种要撞墙的感觉,简直就是狗屎,当然我不是说代码本身写的不好,而是代码里面的调理,注释,各种乱七八糟的注释,完全不知道那是代码,那是注释,你会有要吐的感觉。
Insyde方案优点:
1.虽说代码读起来有要吐的感觉,但是并不是毫无优点,它最大的优点在于比较完整的保持了UDK的代码结构,这样如果你熟悉UDK的话会发现比较容易找到你想要找到的东西。参照标准的UEFI和UDK的文档你会比较容易读懂代码。
2.好像没有其他优点了
Inyde方案缺点:
1.没有比较友好的编辑编译界面,只能在CMD下编译,用edit或者SI修改,代码搜索不方便。
2.代码编写注释混乱,影响阅读代码的心情。
3.入门相对AMI比较难。
4.部分的代码不提供给OEM,只提供了EFI格式或者是bin档,显得非常小家子气,这个是最让人鄙视的。
4.每一个平台没有一个比较同一的编程接口提供给用户,方便porting和阅读。虽然也有类似的core,chipset ,oem这种层次,但是不够清晰。
总之,缺点大过优点,不过鉴于insdye是intel的亲儿子,在自己的努力和intel的支持之下,在众多的平板笔记本领域还是有自己的一席之地。初学者不建议玩这个。
UDK方案,这个是开源方案,主要由intel发起与贡献,后期在tinao的基础上得到了各个软件硬件厂商的支持不断扩大发,成为现在的UDK,基本上是UDK+RC+OEM lib+CSM就构成了一个完整的BIOS
基本上insyde的方案就是这种,它的最大优点在于有详尽的文档,规范的编码风格,开源的代码,有众多的人参与到社区讨论学习,贡献自己的代码,甚至包括编译工具都是开源的,用户可用自行修改(AMI就是这么干的),缺点在于如果想要用UDK直接来开机,需要比较强的实例和芯片原厂的支持比如RC,OPROM等需要NDA才能拿到,一般的小公司是没有这个实例和渠道的。
其他方案:没用过,不好评论。
OK,以上仅为个人观点,不喜勿喷。