在RK3588上体验UEFI
Unified Extensible Firmware Interface
UEFI是一种固件技术,源于英特尔,最初的开发代号叫Tiano。项目的开始时间大约在本世纪初,当时的固件代码都很陈旧,主要用汇编语言和C语言编写,繁杂拖沓,难以维护扩展。与此同时,英特尔当时投巨资的安腾项目使用了众多开创性的创新设计,需要在固件层做很多修改,要在陈旧的BIOS上代码做这些修改难度很大。为此,Tiano项目应需而生,引入当时流行的COM技术精华,普遍使用接口技术,使用GUID来表示接口,使用C++代替C语言。
# 大哉,固件
2004年,Tinao项目初步完成,以EFI为正式名字对外发布。在Intel网站,还可以找到当年的一则新闻稿:
Intel Invites Industry In Design Of Technology To Succeed BIOS,Industry Collaboration Key in Addressing Oldest Software Technology in PC Platforms。
标题大意是,Intel引领产业设计取代BIOS的新技术,针对PC平台上的最古老软件技术开展产业合作。
这个标题把BIOS称为PC平台的最古老软件技术是很合适的。的确,BIOS源于已经成为历史的CP/M操作系统和DRI公司,它的发明者是DRI的创始人Gary Arlen Kildall。我在《软件简史》第六篇《亢龙有悔》中详细描述了Gary的传奇人生和他对PC产业和系统软件所作的巨大贡献。
《软件简史》中关于PC软件
和BIOS技术的追根溯源
Kildall是PC技术的开路者,他在Intel开发8086时,就是Intel的软件顾问。他成名时,比尔·盖茨还在找方向,比尔·盖茨曾多次到Kildall的家里登门求教。从下面这张照片可以看出一些微妙的信息。
比尔·盖茨(中)与Kildall(右)的合影
固件技术的核心价值是隔离硬件差异,让操作系统可以以统一的接口来管理五花八门、不断变化的硬件。这也正是Gary Arlen Kildall当初发明BIOS技术的初衷。这个技术的价值也被比尔·盖茨所心领神会,凭借这个技术,微软的Windows操作系统在PC时代畅通无阻,只要是有BIOS的盒子,就可以安装Windows。
# 林纳斯大神怒批ARM
2005年,Intel连同几家伙伴一起成立UEFI论坛(UEFI Forum),从此,Tiano技术的成果开始以UEFI的形式发展。UEFI论坛的最初成员有:
AMD, American Megatrends, Inc., Dell Inc., HP, Intel Corporation, International Business Machines Corporation, Insyde Software Corp., Microsoft Corp., and Phoenix Technologies Ltd. to Collaborate
注意,上面的成员列表中没有ARM,原因当然有很多。从ARM玩家的角度看,当时ARM的主要场景还是嵌入式和垂直领域。对于这些场景,通常是像苹果那样,一家公司做整个软件栈,软件兼容的压力不是很大,所以对固件层的需要不是那么迫切。
但随着ARM系统的硬件越来越强大,越来越多的ARM系统开始使用通用的LINUX内核,这时兼容问题便日益严重了。太多厂商不停往Linux内核的代码树上合并看似相同却又不同的适配代码。这种现象持续了几年,导致Linux内核的arch/arm目录不断膨胀,一大堆以mach开头的目录,一眼看不到边,直到今天,这个目录仍然如此。
终于有一天,当一位名叫Tony Lindgren的人想把自己的代码合并到内核代码树时,遇上了林纳斯大神心情不好,大发雷霆。
FromLinus Torvalds <>
DateThu, 17 Mar 2011 19:50:36 -0700
SubjectRe: [GIT PULL] omap changes for v2.6.39 merge window share 292
On Thu, Mar 17, 2011 at 11:30 AM, Tony Lindgrenwrote:
>
> Please pull omap changes for this merge window from:
Gaah. Guys, this whole ARM thing is a f*cking pain in the ass. You need to stop stepping on each others toes. There is no way that your changes to those crazy clock-data files should constantly result in those annoying conflicts, just because different people in different A