《UEFI内核导读》开源UDK UEFI BIOS开发实战

固件C字营·版权所有

---------------------------------------------------------------------------------------------------------------------------------

本文是《UEFI内核导读》其中一章,介绍基于开源UDK+FSP方案在Intel 10代酷睿Cometlake-U硬件平台上实现power on实战,以及介绍如何使用完全开源的UDK来实现对我们OEM的板子进行porting与debug方法。主要从几个方面进行介绍分别是:目标的硬件开发板、需要准备开发环境 、OEM porting及构建、烧录并测试、持续改进等主题。今天这一篇先介绍当前的进展情况。

A.图1是我们实验用的主板的简单框图,实验的是intel的第十代cometlake-u的CPU,搭配SODIMM的DDR4-2666内存,存储使用PCIE NVME的SSD,目前的进展来看CPU、DDR、EDP、HDMI、USB3.0、USB2.0、LPC、SMBUS、HDA等外设均能正常在windows10下正常工作。

B.图2是代码的目录结构,主要包括UDK、FSP、edk2-platforms/edk2-non-osi等模块,以及自己写的快速编译代码的脚本文件oembuild.sh/oemclean.sh,代码在linux环境下可以正常编译。

C.图3是编译完成后截取的部分编译日志文件,可以看到生成了多个FV,及最终的COMETLAKEURVP.fd文件。这个文件名是参考RVP的名字,可以修改成任何文件名。

D.图4是编译完成并把COMETLAKEURVP.fd与ME、ECmerge到一起后,用SF600烧录到目标板子上之后开机按键盘热键,打开的BIOS boot manger窗口,在这里我们可以选择不同的启动设备来启动系统。这里我们选择从U盘启动就可以给SSD安装操作系统。系统安装成功之后可以选择从硬盘启动到windows,当然我们也可以选择启动到内部的UEFI SHELL环境来进行debug或其他信息的查看。

E.图5是最新目标机器启动到windows之后输入msinfo命令查看的系统信息,我们可以在这里看到BIOS的版本是“Intel EDK”而不是传统的insyde或者AMI。

一.实验开发板

1.CPU:Intel Core I7-10710U (10代CometLake)

2.DDR:16GB 2Rx8 PC4-2666V-SE1-11

3.SSD:MZVLB256HAHQ

4.OS:Win10 1909 64bit (10.0.18363 build 18363 )

5.其他:键盘,鼠标,屏幕,显示器等

二.开发工具和实验环境:

1.Ubuntu

2.UDK/FSP/edk2-platforms/edk2-non-osi

3.nasm

4.ASL

A.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

B.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

C.nasm-2.15.03.tar.bz2

$root@DESKTOP-Cstyle:~# nasm -v

NASM version 2.15.03 compiled on Aug 8 2020

D.UDK及FSP

从GitHub下载最新版本如下图:

三.基于硬件设计UEFI BIOS Porting

1.参考Platform board的选择,这里我们选择“CometlakeURvp”

2.GPIO 设定

3.内存SPD设定

4.GOP设定

5.ME设定

6.其他UEFI代码porting


四.构建UEFI固件

1.切换到UDK根目录

2.执行oembuild.sh

3.切换到windows系统手动merge ME 与EC

4.使用SF600烧录BIN文件到目标机器

5.开机

五.安装系统

1.选用32GB以上U盘制作windows安装镜像

2.开机按热键选择从U盘启动

3.安装系统

六.安装驱动

1.正常启动到WIN10

2.查看BIOS版本(如图:INTEL EDK......)

3.安装驱动

4.确保所有外设可以正常使用

七.测试&解Debug

1.根据测试报告定位并解决各种Bug

2.与测试&EE&ME&Thermal等部门协助解决Bug直至达到出货标准

3.大规模出货

八.持续改进,尽情期待......


固件C字营·武汉·编著

更多关于《UEFI内核导读》的详细内容,敬请关注微信公众号:固件C字营

原文链接:,转发请注明来源!