本文介绍基于开源UDK+FSP方案在Intel 10代酷睿Cometlake-U硬件平台上实现power on实战,以及介绍如何使用完全开源的UDK来实现对我们OEM的板子进行porting与debug方法。主要从几个方面进行介绍分别是:目标的硬件开发板、需要准备开发环境 、OEM porting及构建、烧录并测试、持续改进等主题。通过使用开源UEFI方案我们现在我们可以在不花钱购买IBV如AMI、Insyde的代码的情况下开发基于X86的主板,使用开源方案可以节省数十万的的向IBV购买代码的开销,今天这一篇先分享当前的进展情况,后面会详细介绍。
- 图1是我们实验用的主板的简单框图,实验的是intel的第十代cometlake-u的CPU,搭配SODIMM的DDR4-2666内存,存储使用PCIE NVME的SSD,目前的进展来看CPU、DDR、EDP、HDMI、USB3.0、USB2.0、LPC、SMBUS、HDA等外设均能正常在windows10下正常工作。
- 图2是代码的目录结构,主要包括UDK、FSP、edk2-platforms/edk2-non-osi等模块,以及自己写的快速编译代码的脚本文件oembuild.sh/oemclean.sh,代码在linux环境下可以正常编译。
- 图3是编译完成后截取的部分编译日志文件,可以看到生成了多个FV,及最终的COMETLAKEURVP.fd文件。这个文件名是参考RVP的名字,可以修改成任何文件名。
- 图4是编译完成并把COMETLAKEURVP.fd与ME、ECmerge到一起后,用SF600烧录到目标板子上之后开机按键盘热键,打开的BIOS boot manger窗口,在这里我们可以选择不同的启动设备来启动系统。这里我们选择从U盘启动就可以给SSD安装操作系统。系统安装成功之后可以选择从硬盘启动到windows,当然我们也可以选择启动到内部的UEFI SHELL环境来进行debug或其他信息的查看。
- 图5是最新目标机器启动到windows之后输入msinfo命令查看的系统信息,我们可以在这里看到BIOS的版本是“Intel EDK”而不是传统的insyde或者AMI。
一.实验开发板
- CPU:Intel Core I7-10710U (10代CometLake)
- DDR:16GB 2Rx8 PC4-2666V-SE1-11
- SSD:MZVLB256HAHQ
- OS:Win10 1909 64bit (10.0.18363 build 18363 )
- 其他:键盘,鼠标,屏幕,显示器等

图1
二.开发工具和实验环境:
- Ubuntu
- UDK/FSP/edk2-platforms/edk2-non-osi
- nasm
- ASL
- Ubuntu 20.04 LTS (GNU/Linux 4.4.0-19041-Microsoft x86_64)
$root@DESKTOP-Cstyle:/usr/bin# cat /proc/version
Linux version 4.4.0-19041-Microsoft (Microsoft@Microsoft.com) (gcc version 5.4.0 (GCC) ) #488-Microsoft Mon Sep 01 13:43:00 PST 2020
- acpica-unix2-20200717.tar
$root@DESKTOP-Cstyle:/usr/bin# iasl -v
Intel ACPI Component Architecture ASL+ Optimizing Compiler/Disassembler version 20200717 Copyright (c) 2000 - 2020 Intel Corporation
- nasm-2.15.03.tar.bz2
$root@DESKTOP-Cstyle:~# nasm -v
NASM version 2.15.03 compiled on Aug 8 2020
- UDK及FSP
从GitHub下载最新版本如下图:

图2
三.基于硬件设计UEFI BIOS Porting
- 参考Platform board的选择,这里我们选择“CometlakeURvp”
- GPIO 设定
- 内存SPD设定
- GOP设定
- ME设定
- 其他UEFI代码porting
四.构建UEFI固件
- 切换到UDK根目录
- 执行oembuild.sh
- 切换到windows系统手动merge ME 与EC
- 使用SF600烧录BIN文件到目标机器
- 开机

图3
五.安装系统
- 选用32GB以上U盘制作windows安装镜像
- 开机按热键选择从U盘启动
- 安装系统

图4
六.安装驱动
- 正常启动到WIN10
- 查看BIOS版本(如图:INTEL EDK......)
- 安装驱动
- 确保所有外设可以正常使用
七.测试&解Debug
- 根据测试报告定位并解决各种Bug
- 与测试&EE&ME&Thermal等部门协助解决Bug直至达到出货标准
- 大规模出货

图5
八.持续改进,后续会分享更多Open source UDK UEFI BIOS在intel最新硬件平台上开发的细节,可持续关注。
转载请注明出处,或可关注微信公众号:固件C字营
Cstyle.z.zhou@outlook.com // http://blog.youkuaiyun.com/CStyle_0x007

本文介绍了如何在Intel 10代酷睿Cometlake-U硬件上,使用开源UDK+FSP开发UEFI BIOS。内容包括开发环境搭建、OEM porting、编译烧录、系统安装及驱动调试等步骤,展示了使用开源方案替代商业BIOS代码的可能性。
335





