当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]统一可扩展固件接口(UEFI)对ARM系统的预引导固件是一个新机遇。 UEFI负责定义操作系统和系统固件之间以及固件驱动程序和系统固件之间的接口。此外,UEFI的平台初始化(PI)负责定义固件到芯片之间和固件内部的接口。 UEFI是处理器架构无关。

ARM处理器已经在智能手机市场占主导地位,并越来越成为整个嵌入式领域的主流。最近,ARM处理器也进军服务器领域,追求计算连续性。

然而,历史上,ARM系统没有一个预引导固件的标准。这使得每个设计都有自己独特的与所引导的操作系统紧密结合的模式。这种传统的方法意味着固件开发者必须保持完全不同的代码库,即使系统可能使用的外围设备(网络,SATA接口,USB控制器等)和整个设计功能集是相同的。传统的ARM设计依赖诸如UBoot,Redboot,或专有软件启动软件包。

如何有效地开发生产这些产品来满足快捷上市需求已成为一个挑战。很有必要用某种形式的融合固件基础设施来实现代码重用的最大化,使这些产品可在有限的工程资源条件下实现更快推上市场,并同时添加创新功能。

统一可扩展固件接口(UEFI)对ARM系统的预引导固件是一个新机遇。 UEFI负责定义操作系统和系统固件之间以及固件驱动程序和系统固件之间的接口。此外,UEFI的平台初始化(PI)负责定义固件到芯片之间和固件内部的接口。 UEFI是处理器架构无关。

ARM公司,苹果,惠普和微软的专家们一起确定了UEFI的ARM绑定。这样,使用UEFI就可以最大限度地实现不同设计间的代码重用,包括那些使用不同的处理器架构的设计。

历史

在UEFI之前,有EFI(可扩展固件接口)。EFI最初创立于1998年,为的是让使用英特尔安腾处理器的系统摆脱BIOS对设计大型计算机的束缚,例如,BIOS对原有8259中断控制器的依赖,仅有64K的IO端口空间,仅有192K的OptionROM执行空间,单一的PCI段组。所有这些都影响系统的可扩展性。我们也预见到将要遇到的2.2TB主引导记录(MBR)硬盘驱动器分区限制,并定义了新的GUID分区表(GPT)格式。

在摆脱束缚的同时,EFI还采用了一个模块化的,灵活的可扩展体系结构,并使用高层次的编程语言。创建EFI时就考虑到它应与处理器架构无关,当时就支持安腾,x86和一个与处理器无关的字节代码,叫EFI字节代码(EBC)。

EFI是一个英特尔公司拥有的规范定义操作系统和系统固件之间,以及设备引导驱动程序和系统固件之间的接口。英特尔还创建了“框架”来定义系统固件内部接口以使EFI的实现进一步模块化。

2005年,计算机行业决定组建UEFI论坛来规范EFI和“框架”所涵盖的接口。英特尔贡献了EFI和“框架”规范给UEFI论坛作为新的起点。名称从EFI变为UEFI(U为统一的缩写)标志着定义、推广和使用的任务从此落在业界的肩膀上。


Figure 1: The UEFI Forum

由UEFI论坛定义的第一个规范(UEFI 2.0)在AMD和英特尔的帮助下定义了x64处理器的绑定。 “框架”也演变成了平台初始化(PI)规范。UEFI的ARM绑定作为UEFI 2.3规范的一部分于2009年公布。

开源社区“tianocore.org”于2004年开始,采用BSD许可证。随着ARM绑定的公布,苹果和惠普向tianocore.org贡献了UEFI的参考实现,其中对Beagle Board(beagleboard.org)的一个实现,使硅片供应商可为他们的硬件提供UEFI的驱动程序。 ARM公司近日贡献了使用Cortex A9 多核处理器的Versatile Express参考平台的核心代码,以及

· 修复了ARM GCC工具链的构建环境

· ARM的RealView仿真底板代码的更新

· 新的包含ARM参考平台通用组件的ArmPlatformPkg

· 支持TrustZone控制器

· 支持多核

· 支持PL18x MMC卡控制器

· 一个特制的启动设备选择BDS库以支持直接启动Linux

有关在ARM上实现UEFI的优越性和UEFI论坛组织结构的详细说明,请见下回分解。
现在我将探讨它,特别是在ARM的系统上的优越性。我也会更详细地描述UEFI论坛的组织结构。

优越性

尽管现有的ARM预引导固件并没有BIOS的束缚,使用UEFI标准对ARM预引导固件仍有很多优越性。 OEM / ODM厂商一直在试图降低开发成本。代码共享是在预引导固件领域实现这目标的一种方式。

ARM和x86都注重计算连续性,UEFI不仅使得在ARM产品之间或在x86产品之间代码共享,还可以让代码在不同处理器架构的产品之间共享。产品可以共享外围设备(网络,SATA,USB控制器等),以及众多的设计功能集。

图2显示了从x86到ARM的一个移植有99.42%的代码不需要更改。


图2: ARM移植中添加和更改的程序行数

模块化的UEFI技术还可以使芯片厂商能够为自己的硬件提供驱动程序。这使得OEM / ODM厂商能够灵活地使用来自不同供应商的模块,扩大了选择余地。

UEFI在ARM的实现提供了真正独立于操作系统的启动解决方案,而其他大多数现有的ARM启动解决方案(UBoot,小内核等)是与他们的支持操作系统相耦合的。对计算连续性的追求也包括支持Windows和Linux等多个操作系统。

把预引导固件标准化于UEFI也使潜在的独立固件供应商能够进入市场提供支持。这将有可能让这些厂商为多个客户提供支持,有效地部署模块,并提供可扩展的共同解决方案。这种标准化也将减少芯片厂商的开发成本,现在他们只需要支持一种类型的驱动程序给所有的OEM/ ODM来整合。这可以提高验证效率和调试的能力。

对于操作系统厂商,这种标准化使它们能够集中在同一个引导程序方面的投资。这种标准化也将为独立软件开发商提供新的创新的机会。

组织结构

UEFI论坛是一个非赢利的合作贸易组织,旨在促进和管理UEFI标准。 AMD,安迈,苹果,戴尔,惠普,IBM,系微,英特尔,联想,微软和凤凰科技是发起人在董事会任职。 ARM公司,博通,博科,ARCI,Emulex,富士通,鸿海,浪潮,LSI,百敖软件,日电,英伟达,甲骨文,QLogic,桑迪亚国家实验室,希捷,东芝,威盛和威睿是贡献者成员,还有130多个公司和个人的使用者成员。这是在预引导固件行业最广泛的行业代表。

如图3所示,论坛有四个工作组。发起者和贡献者有机会在这些工作组贡献和施加影响:

图3: UEFI 论坛组织结构图

工业通讯工作组(ICWG)

ICWG旨在通过教育,宣传和营销各种方案使业界对UEFI规范有清楚的认识并鼓励业界普及其使用。ICWG与ODM和OEM,产业界的合作伙伴,技术联盟/协会团体同行,以及行业媒体进行交流和协作,以达到他们对UEFI的认识和广泛采纳。

ICWG负责有关UEFI论坛进展和成功的对外交流。这个工作组将制定如新闻稿,新闻文章,白皮书,演示文稿,相关文件等必要的技术和市场营销方式。

ICWG将帮助指引会员公司的营销和新闻发布,以确保信息内容及相关UEFI活动的时间安排上的一致性。

平台初始化工作组(PIWG)

该工作组的范围如下:PI规范和其他由工作组的大多数商定的相关规范。这些规范的实现是作为固件在UEFI规范的界面层之下提供计算机系统初始化服务。PI的实现不是UEFI规范的必须。

UEFI规范工作组(USWG)

该工作组的范围是管理和发展的“统一可扩展固件接口”规范的定义。该规范的目的是定义在平台固件和操作系统软件之间的控制转移中使用的编程接口和相关数据结构和约定。此外,操作系统启动前环境中附加卡适配器引导支持,制造测试和自动化等的编程接口需要也在考虑的范围。

为支持主要规范工作,该工作组还被授权编写“UEFI的驱动程序作者指南”及任何类似的材料,这将有助于在UEFI产品的开发。

UEFI测试工作组(UTWG)

该小组负责(1)制作和维护UEFI自我认证测试套件,(2)认可开源的平台初始化规范的自我认证为测试套件和(3)组织UEFI的插拔大会活动和培训。

每个工作组可组建子团队来就特定专题召集专家对某些界面和功能深入探讨。例如,USWG有一个网络子团队专职网络有关的协议,包括对IPv6的支持,一个安全子团队专职与安全相关的协议,一个配置子团队专职人机接口基础设施相关的协议。当然,还有一个ARM绑定子团队来定义UEFI2.3规范中的ARM绑定。 ARM公司,苹果,惠普,微软和凤凰科技是该子团队的主要成员。

关于作者

魏东是惠普公司的高管级杰出技术专家和策略家。他是IEEE的资深会员。他有领导业界创新和标准化的丰富经验。他是UEFI论坛的副董事长(行政总裁)和测试工作组主席。他也是在ACPI5.0 国际标准组织的秘书。作为惠普UEFI和ACPI的总设计师,他负责 为使用x64, x86, ARM, ia64 and PA-RISC处理器的系统定义硬件,BIOS固件和操作系统的平台接口。他经常在惠普世界,惠普技术论坛,英特尔开发者论坛,微软Windows硬件大会,ARM开发研讨会,和PCI会议上发表演讲。他拥有主管级工商管理,电子工程,和物理学的硕士学位。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

史胜辉,在MTK工作了11年,一直在基带芯片的USB驱动领域做开发和验证。从最开始做USB2.0/3.0 IP验证和驱动开发到后面带领团队做上层协议驱动开发,以及跟硬件设计部门合作开发全新的USB硬件加速器。

关键字: 基带芯片 驱动领域 驱动开发

点击上方名片关注我们朱老师推荐语:此岗位为AIoT终身成长大会员同学提供的自己公司的岗位内推,总部在深圳,是一家专业从事闭路电视监控设备、会议摄像机的研发、制造、销售的高科技企业,有学过嵌入式课程或者海思项目的同学,想换...

关键字: 开发工程师 linux驱动 驱动开发

最近在学习MIPI接口的LCD驱动开发与调试,这里我主要用的是MIPI-DSI接口,它学习起来真的是太复杂了,特别是对于我这种很久都没写驱动来说更是头疼,但是头疼归头疼,工作咱们还是要完成的,那就只能硬着头皮往下肝吧!首...

关键字: MIPI 驱动开发 调试

关注、星标嵌入式云IOT技术圈,精彩及时送达来源|  Linux与SoC整理出了6种驱动开发时与设备注册、设备树相关的调试方法,彼此间没有优先级之分,每种方法不一定是最优解,但可以作为一种debug查找问题的手段,快速定...

关键字: 驱动开发

最近在学习MIPI接口的LCD驱动开发与调试,这里我主要用的是MIPI-DSI接口,它学习起来真的是太复杂了,特别是对于我这种很久都没写驱动来说更是头疼,但是头疼归头疼,工作咱们还是要完成的,那就只能硬着头皮往下肝吧!首...

关键字: MIPI 驱动开发 调试

哈喽,我是老吴,我来继续分享我的学习心得啦。gpio和pinctrl子系统在内核里的使用率非常高,和嵌入式产品的关联非常大。从这两个子系统开始学习驱动开发是个不错的入门选择。本文目录:一、gpio 与 pinctrl二、...

关键字: gp pi 驱动开发

前阵子工作上做了一些关于 ADC 的支持,由于现在 ADC 相关的支持都被移动到了 IIO (Industrial I/O) 子系统下,我查阅了一些关于 IIO 资料,包括书籍、文章、内核文档和代码。个人感觉最好的入门文...

关键字: IO 驱动开发 嵌入式

来源:知乎,作者: 埃尔维斯·刘能 链接:https://www.zhihu.com/question/34686343/answer/308464284 前言:上班划水在知乎看到一个帖子,网友问: 现在要选个方向,嵌入...

关键字: 嵌入式 驱动开发 ADI IC厂商

作者:程序员最幽默(ID:humor1024) 【0】 网传互联网公司加班表 【1】 互联网工作生存指南 【2】 据说,互联网公司员工上课座位如下 【3】 当代互联网企业真实写照 【4】 互联网公司排位,你同意吗? 【5...

关键字: 互联网 程序员 驱动开发 BSP

来源 :https://github.com/juwikuang/china_job_survey ▍趋势 2020年4月,中国大陆程序员平均工资14249元。 ▍一线城市工资 ▍各主要程序员城市工资变化 ▍异常的城市...

关键字: 程序员 驱动开发 编程语言 人工智能
关闭
关闭