UEFI开发探索01-起篇

2013年的时候,和联想的双网安全隔离计算机项目进入了平稳阶段。经过了前几年的合作开发,几代不同的产品的磨合,Q45、G41、H61等,整个方案已经成熟。再开案的话,我觉得大部分问题都会集中在硬件方面,软件问题不会太多。

不过,实际上软件还留下一个问题需要想办法解决,那就是Option ROM对UEFI的支持。在2012年出货的产品中,因为时间比较紧,为了把Option ROM移植到UEFI下(联想2011年左右基本都转换为UEFI BIOS),我采用了一种比较省事的方法,用AMI的VBE来开发。主要是考虑到有问题可以去请教联想的BIOS工程师,这是种比较保险的做法。

因此,即便我了解intel提供了UDK可以直接进行开发,我仍旧走了上述的路线。当时的开发很难,从VBE新手到开发出符合要求的UEFI driver(实际上就是个option rom),花了我三个礼拜,像打了鸡血一样不眠不休的完成了。

在此要感谢当时还在Intel的Raymond,张银奎老师,帮我向intel bios部门咨询解决了显示的一个问题。以及我刚出生没多久的宝贝,因为她我才在北京待不住,用了最快的速度解决了这个项目问题,就为了早一刻回南京抱她。

所以,2013年的时候,摆在我面前的问题是,如何用intel UDK把Option ROM开发出来。一方面用在联想的合作项目上;另外一方面,把它用在公司的另外一个产品-隔离卡上。

随着UEFI越来越普及,未来肯定会只支持UEFI,当时隔离卡上面的Legacy oprom会无法运行的。几年过去了,这个论断终于实现了。现在是2019年,公司就是因为当时的这个技术设计,今年3月还没过完,半个月的销量,超过了去年同期一个月的销量了。我甚是欣慰。

完成这个目标的时间就比较充裕了,毕竟和联想的案子已经有一个可用的软件版本了(用VBE开发的),而隔离卡这边的需求还没到时候。

仿照之前学习底层开发的过程,我制定了一个小计划,从控制键盘、图形显示、鼠标显示、访问PCI端口、SMBUS通讯、USB访问、网络访问….这样的顺序开始尝试写代码。

虽然因为各种原因,在完成了最初的目标(支持公司产品在UDK下的开发)后,有些工作没有继续了。但我觉得还是基本上把UEFI下的开发摸了个遍,即便要开发其他的产品,现有的代码也能用得很好。

图1 robin’s Uefi 代码列表

我写的博客虽然是从Foxdisk开始的,但在计划中,UEFI的开发就已经位列其中了。

今天终于如愿开始了,记录我挥汗编程的日日夜夜,也纪念我当时用来在家开发,如今已经退役的老朋友,它使用了“很古老” 的华硕945主板,跟了我那么多年,终于没有机会再使用它了。

是为开篇。

(原文地址:
http://yiiyee.cn/blog/2019/03/20/uefi%e5%bc%80%e5%8f%91%e6%8e%a2%e7%b4%a201-%e8%b5%b7%e7%af%87/ )

发表评论

电子邮件地址不会被公开。