想学习 UEFI 编程?福音来了

想学习 UEFI 编程?福音来了绝大多数的应用程序开发者,都明白模块和接口的概念,网络上对于这方面的讨论和课程也很多,那么对于底层开发,是否有类似的概念呢?答案是肯定的。Int

大家好,欢迎来到IT知识分享网。

绝大多数的应用程序开发者,都明白模块和接口的概念,网络上对于这方面的讨论和课程也很多,那么对于底层开发,是否有类似的概念呢?答案是肯定的。Intel 在 2001年推出的 EFI 就是一个关于固件的接口。靠着这个接口,Wintel 联盟统治了 PC 30年。

什么是 UEFI?

EFI 是 Extensible Firmware Interface 的缩写,即可扩展固件接口,UEFI(Unified EFI),是 EFI 的改良版。我们知道,早期的 PC 是由传统 BIOS 负责启动的,BIOS 程序存放于一个掉电后内容不会丢失的只读存储器(ROM)中,系统加电时处理器的第一条指令的地址会被定位到 BIOS 代码中,开始执行初始化程序。但 BIOS 存在诸多缺点,比如,大部分传统 BIOS 程序采用汇编语言开发,但是汇编开发的一个缺点是代码与设备的耦合度太大,代码受硬件变化的影响大。另外,传统 BIOS 代码采用静态链接,增加硬件功能时,代码需做大量改动,而且传统 BIOS 没有提供动态加载设备驱动的方案。而随着 CPU 和其它硬件设备的革新,传统 BIOS 的所有这些缺点成为计算机系统发展的瓶颈。在这样的背景下,EFI/UEFI 应运而生了。UEFI 可以更好地支持新的硬件设备(这可以从它的名称看得出来),同时还具有开发速度快、启动时间短、更加安全等其它特点。

为什么要学习 UEFI 编程?

那么我们为什么要学习 UEFI 编程呢?前面说过,靠着 UEFI,Wintel 联盟已经统治了 PC 30年。但是,所谓三十年河东,三十年河西,随着硬件技术的不断升级和人们需求的多样化,以 x86 为架构的 PC 也表现出了一些不足,其中最大的问题就是电池的续航问题。随着移动办公的日益普及,人们对电池的续航性能要求越来越高,但 x86 天生的架构无法满足这一点。后起之秀 Arm 由于从出生时就携带着高效能的基因,从而在移动设备领域一直独霸天下。过去一些年里,Arm 芯片的性能比不上 x86,所以在 PC 领域一直是不温不火。但是芯片技术的发展遵循摩尔定律,即每隔18-24个月,在价格不变的情况下,芯片的性能会提高一倍。Arm 现在推出的 Cortex-A76,性能已经有了显著提升。再加上 Big.Little 技术,未来基于 Arm 的 PC 能够与基于 x86 的 PC 平分秋色也是非常可期的。

在苹果成功把 MacBook 从 x86 转移到 Arm 后,高通、英伟达等很多巨头也积极研发 Arm PC。很多人认为,2024年将是 Arm PC开始高速发展的一年。但目前还存在很多的工作要做。就以固件为例,虽然 Arm 早在 2013 年就加入了 UEFI 组织,但目前 ARM 上的 UEFI 代码还存在一些问题,比如对 ACPI 的支持不完善,无法自由安装通用操作系统。

想学习 UEFI 编程?福音来了

随着 Arm PC 的持续升温,必然对人才产生很强的需求。比如要在 Arm 硬件上支持 Windows(WoA),那么就需要既懂底层,又懂 Windows 的工程师,而目前这方面的人才非常紧缺。

所以,从职业发展角度看,学好 UEFI,便可以投身到正在兴起的 Arm PC 研发中,可能找到一份非常好的工作。这份工作可能是固件工程师,也可能是应用软件工程师。因为 Arm PC 流行后,大量的应用软件需要适配和优化,如果你对 UEFI 和 WoA 有一定了解,那么便成为紧缺的人才。

当然,学习 UEFI,可以加深对计算机系统的理解,可以打通知识壁垒,提高工作效率,特别是缩短解决问题(debug)的时间。

如何学习 UEFI 编程?

学习 UEFI 编程的方法很多,可以看书,看文档,看代码,但最好的方法还是动手实践。C 语言的发明者丹尼斯•里齐有一句名言:学习一门编程语言的唯一方法就是用它来写代码。学习 UEFI 编程也一样,要多写代码多实践。

当然,动手实践就需要有环境。目前,格蠹科技推出的幽兰本,已经可以在本机编译、部署、烧录和调试 UEFI 代码,对有志于从事底层开发的程序员来说,实在是一个福音。

另外,格蠹科技创始人兼 CEO 张银奎老师,也打算在2024年推出一期关于 UEFI 编程的培训,并且已于昨晚(2024年1月7号周日)举办了一场线上直播,给大家分享了 EFI/UEFI 的前世今生。从与会者人数来看,大家对这个领域还是相当感兴趣的,有很多之前从事这个领域的朋友,也有很多后起之秀。

培训分6节课,都是以实战为主,以下是每节课的内容概要。

实战1 UEFI 跑起来

要点:下载代码、调整信息输出、构建、熟悉镜像格式、烧录、启动、接收和分析调试信息、进入 UEFI 图形界面和外壳环境、执行外壳命令。

实战2 修改 UEFI 界面

要点:HII 基础、定义表单、定义控件、界面和变量绑定、UEFI 的配置机制(PCD)、定义PCD 变量保存设置。

实战3 编写 UEFI 应用——PcdEdit

要点:UEFI 模块、模块的基本文件(DSC、DEC、INF)、应用入口、UEFI 的包、编写代码、观察和编辑 PCD 变量、加载和运行 UEFI App、调试 UEFI App 的方法。

实战4 开发 UEFI 驱动

要点:面向对象基础、UEFI Protocol、GUID、函数指针、方法表、操作 Protocol 的基本函数:打开、寻找、响应。

实战5 权力移交——加载 OS

要点:Boot Manager、通过 UEFI 启动 Windows、通过 UEFI 启动 grub、动态增加启动项、访问 boot loader 的原理和方法。

实战6 电池处理——与 OS 配合

要点:电池设备的驱动、UEIF 的标准设备、Control Method Battery、ASL、使用 ASL 定义设备、结构体、字段、实现 UEIF 的标准方法、通过标准方法报告电池的基本信息和实时状态。

关于课程的更多信息,大家可以扫描下面的二维码查看。

想学习 UEFI 编程?福音来了

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/78378.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信