UEFI EDKII 编程学习
来源:互联网 发布:阿里云数据盘 编辑:程序博客网 时间:2024/04/29 22:43
环境搭建部分
第一步:
下载EDK2
https://sourceforge.net/projects/edk2/files/latest/download?source=files
第二步:
将下载的UDK2015.Complete.MyWorkSpace中的BaseTools(Windows).zip解压到自己定义的工作目录下,例如:E:\code\edkWorkSpace\
第三步:
将UDK2015.Complete.MyWorkSpace包中的文件,具体路径如后面的内容(UDK2015.Complete.MyWorkSpace\UDK2015.MyWorkSpace.zip\MyWorkSpace\)全部解压到工作目录(E:\code\edkWorkSpace\)
第四步:
到网站 https://www.acpica.org/downloads 下载asl编译器(可选)
第五步:
执行edksetup.bat --nt32
第六步:
编辑E:\code\edkWorkSpace\Conf\target.txt中的TOOL_CHAIN_TAG = VS2010x86,(当前您使用的编译器),保存后并执行 build 指令
第七步:
执行build run 可打开模拟软件的界面。
标准C模块的加入
使用 git clone https://github.com/tianocore/edk2.git 将代码下载到本地(文件大小在230M左右)
StdLib里面有含标准库的项目(AppPkg, StdLib, and StdLibPrivateInternalFiles.),需要拷贝到E:\code\edkWorkSpace\目录下
编译则使用指令: build -a X64 -p AppPkg\AppPkg.dsc
若需要将标准库中的文件便宜并可在虚拟机(SecMain)中运行,经过研究发现可以在 \AppPkg\AppPkg.dsc 中做如下修改
#OUTPUT_DIRECTORY = Build/AppPkg
OUTPUT_DIRECTORY = Build/NT32IA32
若编译自己的测试程序,则需要在\AppPkg\AppPkg.dsc里面加入自己写的部分(如下带下划线的部分)。例如:
[Components]
#### Sample Applications.
AppPkg/Applications/Hello/Hello.inf # No LibC includes or functions.
AppPkg/Applications/Main/Main.inf # Simple invocation. No other LibC functions.
AppPkg/Applications/Enquire/Enquire.inf #
AppPkg/Applications/ArithChk/ArithChk.inf #
AppPkg/Applications/Main_test/Main.inf
然后使用指令编译:build -a X64 -p AppPkg\AppPkg.dsc -m AppPkg\Applications\Main_test\main.inf (假设您的程序路径在AppPkg\Applications\Main_test\下)
在使用build run 指令运行模拟器程序。
- UEFI EDKII 编程学习
- UEFI&EDKII Introduction:UEFI&EDKII概述[1]
- UEFI规范实现EDKII项目学习笔记绪论[0]
- 如何写一个UEFI EDKII的应用:how to write a UEFI EDKII application
- UEFI Bare Bones 和 EDKII的编译运行
- How to Write a simple UEFI EDKII Application:如何编写一个UEFI简单的应用程序[5]
- UEFI的学习
- UEFI BIOS 学习笔记
- UEFI原理与编程(九):UEFI中的Protocol使用方法
- 常用的UEFI学习网址
- UEFI
- UEFI应用与编程--HelloWorld(01)
- EDKII中的memset
- EDKII 模拟环境搭建
- UEFI学习笔记—入门篇
- UEFI原理与编程(二):UEFI工程模块文件-标准应用程序工程模块
- UEFI原理与编程(三):UEFI工程模块文件-Shell应用程序工程模块
- UEFI原理与编程(五):UEFI工程模块文件-库模块
- oracle标量子查询简介和表连接改写
- PAT 1005
- JavaScript对象之字符串-String
- spring传值方式
- JavaSrcipt的三种函数定义方法
- UEFI EDKII 编程学习
- JavaScript DOM基础知识总结(二)
- Kafka消息系统监控
- 谈谈最近的一些境况
- 第八章 多线程
- caffe使用案例
- Insecure Randomness
- Python显示目录的树形结构
- Ubuntu 14.04 使用 IDEA 开发 JFinal