闲来无事回头看看,自毕业以来一直都在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,以上仅为个人观点,不喜勿喷。
 
转载请注明出处
Cstyle.z.zhou@outlook.com  //  http://blog.csdn.net/CStyle_0x007

转载 AMI方案和Insyde方案的更多相关文章

  1. SEO诊断方案以及执行方案

    http://www.wocaoseo.com/thread-127-1-1.html 今天和大家一起讨论一下SEO诊断方案以及SEO执行方案要怎么写,主要从哪些方面进行呢,做SEO的朋友们一直在探讨 ...

  2. 【转载】Android推送方案分析(MQTT/XMPP/GCM)

    http://m.oschina.net/blog/82059 本文主旨在于,对目前Android平台上最主流的几种消息推送方案进行分析和对比,比较客观地反映出这些推送方案的优缺点,帮助大家选择最合适 ...

  3. [转载]SecureCRT 绝佳配色方案, 保护你的眼睛

    FROM:http://blog.csdn.net/zklth/article/details/8937905 SecureCRT 绝佳配色方案, 保护你的眼睛   关键词:SecureCRT配色,  ...

  4. 空间搜索(圆范围)中Geohash编码方案和网格编码方案对比探讨

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 多个项目中实现范围(圆)搜索的方案为:依赖库表中的X和Y字段构 ...

  5. 1-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(方案总揽)

    我的这个升级篇的代码适用于自己所有的带WIFI和GPRS模块的开发板,升级功能实质上是通过MQTT把数据发给WIFI和GPRS模块,然后模块进行保存和运行. 这个升级程序是当时自己花了两个星期的时间写 ...

  6. 解决IE6中 PNG图片透明的终极方案-八种方案!

    “珍惜生命,远离IE6”,IE6中的bug令很多Web前端开发人员实为头疼,因此不知道烧了多少脑细胞,在众多的Bug中最令人抓狂的就是IE对png图片的不支持,导致设计师和重构师放弃了很多很炫的效果, ...

  7. Ubuntu分区方案(菜鸟方案、常用方案和进阶方案)

    菜鸟方案 “/”与swap两个分区就可以应付绝大多数的应用 常用方案 分为3个区 1. 挂载点/:主分区:安装系统和软件:大小为30G:分区格式为ext4: 2. 挂载点/home:逻辑分区:相当于“ ...

  8. CS5218替代AG6310方案|设计DP转HDMI转换方案|替代AG6310方案

    AG6310是一款实现显示端DP口转HDMI数据转换器.AG6310是一款单芯片解决方案,通过DP端口连接器传输视频和音频流,其DP1.2支持可配置的1.2和4通道,分别为1.62Gbps.2.7Gb ...

  9. CS5218|DP转HDMI4K30HZ方案|CS5218应用方案

    Capstone CS5218是一款单端口HDMI/DVI电平移位器/中继器,具有重新定时功能.它支持交流和直流耦合信号高达3.0-Gbps的操作与可编程均衡和抖动清洗.它包括2路双模DP电缆适配器寄 ...

随机推荐

  1. ZPL语言完成条形码的打印

    近期因为项目的需求,需要使用到打印机来打印业务相关的条形码和其他信息,由于之前有操作其它打印机的经验,Leader就安排我来做这个了(凑哦,这能说我是懵逼的么).于是就开始了我的探索之旅啦,不对,是踩 ...

  2. bash shell脚本之成员变量

    shell中变量的使用 cat test3: #!/bin/bash # testing variables days= guest="Katie" echo "$gue ...

  3. 【JAVA各版本特性】JAVA 1.0 - JAVA 12

    make JDK Version 1.01996-01-23 Oak(橡树) 初代版本,伟大的一个里程碑,但是是纯解释运行,使用外挂JIT,性能比较差,运行速度慢. JDK Version 1.119 ...

  4. springboot Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

    报错如下: 在请求目标中发现无效字符.有效字符在RFC 7230和RFC 3986中定义. 原因是Tomcat在 7.0.73, 8.0.39, 8.5.7 版本后,添加了对于http头的验证. 就是 ...

  5. Delphi 类的方法

  6. Ubuntu安装Python 3.6之编译安装+使用PPA源安装

    下面分别详细介绍一下Ubuntu 14.04/16.04安装Python 3.6的两种方法: 方法一 自己编译安装: # 安装编译必需的软件包 sudo apt install build-essen ...

  7. Ubuntu18.04安装OpenCV4.1.0

    Ubuntu18.04安装OpenCV4.1.0 1.首先要安装依赖 sudo apt-get install build-essential \ cmake git libgtk2.0-dev pk ...

  8. scala学习(4)---Array定长数组操作

    ScalaArrayNote: https://www.jianshu.com/p/d906f00c05bf

  9. python 中的GIL (全局解释器锁)详解

    1.GIL是什么? GIL全称Global Interpreter Lock,即全局解释器锁. 作用就是,限制多线程同时执行,保证同一时间内只有一个线程在执行. GIL并不是Python的特性,它是在 ...

  10. C#实现异步阻塞TCP(Send,Receive,Accept,Connect)

    1.类 (1)服务器端操作类 public class TcpServiceSocket { //接收数据事件 public Action<Socket, string> recvMess ...