本篇为UEFI实战系列第一部分。
UEFI实战前10个部分计划如下:
UEFI 实战(1) 开发环境
讲述如何配置开发环境。
UEFI 实战(2) HelloWorld讲述dsc, inf文件的格式, application常用的变量,数据结构和函数。UEFI 实战(3) C++讲述如何用C++开发UEFI程序。UEFI 实战(4) protocol讲述UEFI中protocol的概念UEFI实战(5) driver讲述UEFI中driver模型UEFI实战(6) 文件读写UEFI实战(7) Hii interface 之 FormUEFI实战(8) Hii interface 之 String 和FontUEFI实战(9) GUIUEFI实战(10) Network
UEFI 实战(1)
配置开发环境
1. 下载 Windows SDK
2. 下载EDK2
3. 打开visual studio 2008 command prompt
cd EDK2
edksetup.bat
4. 编辑Conf\taget.txt, 修改 编译工具TOOL_CHAIN_TAG 为
TOOL_CHAIN_TAG = VS2008x86
5. build
build命令有两个参数, -a 和-p, -a 用来选择平台(IA32 X64,...) -p用来选择要编译的package,默认的package是Nt32Pkg, 所以build命令与 build -a IA32 -p Nt32Pkg\Nt32Pkg.dsc 等同,用来编译UEFI模拟器。
6. build run
与build -a IA32 -p Nt32Pkg\Nt32Pkg.dsc run 命令等同,用来运行UEFI模拟器。
制作UEFI USB启动盘
分两种情况,如果目标平台是UEFI平台,按如下步骤来做:
1。 格式化U盘为FAT(FAT,FAT16, FAT32)格式
2。 在U盘上建立目录 efi\boot
3。 将efi的应用程序 copy到 efi\boot 目录,并改名为bootx64.efi 或者bootia32.efi。
因为UEFI的启动文件是FAT盘内efi\boot目录里的bootx64.efi 或bootia32.efi, 与legacy bios需要MBR来引导OS不同。
如果目标平台是legacy bios, 需要在U盘中制作MBR和引导文件, 按如下步骤来做:
1。 编译duet package
build -a IA32 -p DuetPkg\DuetPkgIa32.dsc 或者
build -a X64 -p DuetPkg\DuetPkgX64.dsc
2。 生成引导文件
cd DuetPkg
postbuild.bat Ia32 或者 postbuild.bat X64
3。 插入U盘,假设J:是U盘, 向U盘写入MBR
createbootdisk usb J: FAT32 IA32 或者 createbootdisk usb J: FAT32 X64
4。拔出并重新插入U盘, 向U盘copy UEFI文件
createbootdisk usb J: FAT32 IA32 step2 或者 createbootdisk usb J: FAT32 X64 step2
此命令向U盘根目录copy了efildr20, 该文件用于引导系统进入UEFI环境,并向efi\boot目录copy了引导文件bootia32.efi或bootx64.efi
接下来就可以用U盘来运行UEFI了。
如何Debug
UEFI有两种debug方式,一是在模拟环境Nt32Pkg下debug,另一种是通过串口调试真实环境中的UEFI程序。我从来没见过传说中的利用串口调试,所以下面只能说说Nt32Pkg下的debug。
在需要调试的代码前面加入_asm int 3; 编译,然后再模拟环境中(Nt32Pkg)中运行该程序,当模拟器执行到int 3;指令时,会弹出对话框,然后就可以调试了。
相关文章
- web(1)--Web前端开发环境配置与HTML基础
- 你必须知道的指针基础-1.预备篇:搭建GCC开发环境
- Scala学习1————scala开发环境搭建(windows 10)
- 【OpenStack】OpenStack系列1之OpenStack本地开发环境搭建&&向社区贡献代码
- 实验1 Windows汇编语言开发环境
- 详细介绍在windows系统中配置 cocos2d-x 开发环境及简单使用(VS2012+Cocos2d-x 3.0rc1)
- ES6 - 基础学习(1): 开发环境搭建
- 跟着BOY学习开发cocos2d-x 游戏 实战篇(1)之 loading 界面编写
- 【学习笔记1 --- Cocos2d-x开发环境配置 + Win7 + VS2010】
- Koa与Node.js开发实战(1)——Koa安装搭建(视频演示)