UEFI规范实现EDKII项目学习笔记绪论[0]

2015-07-10   北京海淀区  张俊浩

这段时间在学习UEFI( Unified Extensible Firmware Interface,统一的可扩展固件接口),熟悉EDKII(EFI Developer KitII,EFI开发工具包)项目,本想对UEFI框架脉络和EDKII项目的组织结构较为熟悉时候再着手写UEFI、EDKII项目的学习笔记,这样会对一些概念、工程的开发把握、阐述会更准确些~但发现冰冻三尺非一日之寒,一口也吃不下一个大胖子,所以先把博客写成散、零碎的UEFI、EDKII笔记,较为真实的记录自己的学习过程~等到对UEFI和EDKII较为明朗的时候,再反过来整理这些博客~

学习UEFI和EDKII项目,发现中文资料很少,主要是UEFI论坛(http://www.uefi.org)、Tianocore社区(http://www.tianocore.org)上的各类规范、手册进行学习、开发。本人的UEFI、EDK学习也是通过UEFI论坛、Tianocore社区,还有一本中文书籍戴正华的《UEFI原理与编程》,当然也有百度各种文库、博客资源,从中国知网下载一些期刊、文献来科普、学习。发现UEFI规范、EDKII项目的刚开始学习重点不在于解决一些具体概念(比如key concepts)或者EDKII项目中某个具体的技术点,而在于有一条宏观上的较为清晰、明确的学习路线,或者说是对UEFI论坛、Tianocore社区上各类文档、说明性资源的有一个较为明晰的把握,这也是期望接下来的学习之路能理清的。

刚接触UEFI及其实现EDKII项目,能感觉到UEFI比BIOS(Basic Input Output System,基本输入/输出系统 )、 Uboot ( Universal Boot Loader,通用的引导程序)等常用的引导程序更为强大的生命力(硬件芯片上原则上BIOS、Uboot、UEFI都可以支持MIPS、 x86、ARM、PowerPC等诸多CPU系列。BIOS开发采用汇编开发效率低,而且技术垄断在少数大公司;Uboot主要支持Linux类操作系统;UEFI由于可编程性好、可扩展性、高性能、安全性获得主流操作系统Linux系、Windows、MacOS等支持),但陌生的UEFI概念、EDKII项目框架,还有网上对于UEFI的介绍铺天盖地的好评,自然的高大上~找到一条相对明朗的学习路线成了很关键的事情:自己是通过EDKII项目来熟悉UEFI的,Tianocore社区http://www.tianocore.org ->EDKII->Getting Started for Developers—>Getting Started with EDK II->Step-by-step Instructions,还有《EDKII_UserManual_0_7》是EDKII项目学习的一个入门线路,还有戴正华的《UEFI原理与编程》作为辅助(毕竟手册式文档,几乎很少个人感情色彩、学习体验的呈现)。

开始的几篇EDKII学习笔记,模仿EDKII_UserManual框架来整理目前的学习情况,主要包括:EDKII概述, EDKII源码的下载,EDKII项目Linux、Windows开发环境的搭建,EDKII项目的配置编译,模拟器的运行,还有简单UEFI应用程序的编写。(These blogs provides detailed instructions for downloading,  configuring and building an EDKII project , running EDKII Emulation Environments as well as writing a simple UEFI EDK II Application)。

最近几篇UEFI规范实现EDKII项目博客内容安排如下:

1. UEFI&EDKII Introduction(UEFI&EDKII概述)

->1.1 EFI,UEFI,PI,Tianocore,EDK,EDKII

->1.2 Several key concepts introduced by EDKII:

Package,Library Class/Library Instance, PCD, Module, UEFI Application and UEFI Driver

2. Setting Up EDKII Development Environment(EDKII开发环境的搭建)

->2.1 The General Procedure Of Setting Up EDKII Development Environment(搭建EDKII项目的通用流程)

->2.2 Setting up a EDK II build environment on Windows and Linux(搭建Windows和Linux开发环境)

->2.3 Tools:Installing and using the Required Tools for downloading and Building EDKII. (工具篇)

3. EDKII Build Process(EDKII项目源码的配置、编译流程)

->3.1 The General Process Of EDKII Build(EDKII项目源码的配置、编译一般流程)

->3.1.1 Tool chain:BaseTools

->3.1.2 Setup build shell environment

->3.1.3 Modify Conf Files

->3.1.4 Build

->3.2 The Process Of EDKII Build on Windows(Windows环境下EDKII项目源码的配置、编译流程)

->3.3 The Process Of EDKII Build on Linux(Linux环境下EDKII项目源码的配置、编译流程)

4. Build/Launch EDKII emulator in Windows and Linux(编译/运行EDKII模拟器)

->4.1 Emulation Platforms Introduction (EDKII模拟器平台介绍)

->4.2 In Windows:Nt32Pkg(Windows环境下编译/运行Nt32模拟器)

->4.2.1 Tool chain:BaseTools

->4.2.2 Setup Nt32 build shell environment

->4.2.3 Modify Conf Files

->4.2.4 Build Nt32Pkg

->4.2.5 Run Nt32

->4.3 In Linux:EmulatorPkg(Linux环境下编译/运行Emulator模拟器)

5.  How to Write a simple UEFI EDKII Application:Getting Started Writing Simple Application (写一个简单UEFI应用程序例程)

->5.0 EDKII Project Introduction

->5.1 Setup build shell environment:Run the edksetup

->5.2 Modify Conf Files:Edit the file conf/target.txt

->5.3 Create a project:MyHelloWorld

->5.3.1 Create a new directory.

->5.3.2 Create MyHelloWorld.c file in the project directory

->5.3.3 Create MyHelloWorld.inf file in the project directory

->5.4 Build your UEFI Application

->5.5 Run your UEFI Application

->5.5.1 Run Nt32 and UEFI Application

->5.5.2 Run Emulator and UEFI Application

6. UEFI简单的应用程序模块MyHelloWorld:C源文件//INF工程文件源码/简析

->6.1 MyHelloWorld.c源程序/简析

->6.2 MyHelloWorld.inf源程序/简析

(随学习进度推进、博客内容继续增加~哪里阐述有误,希望批评指正~)

UEFI规范实现EDKII项目学习笔记绪论[0]相关推荐

  1. TheBeerHouse 网站项目学习笔记(5)---架构设计

    前述讨论:    TheBeerHouse 网站项目学习笔记(1)----换肤技术                     TheBeerHouse 网站项目学习笔记(2)----个性化管理      ...

  2. 尚医通项目学习笔记Part1

    尚医通项目学习笔记 前言 一.目前学习进度 二.学习记录 1.项目简介 1.1 项目所会用到的技术栈 1.2 业务流程 2.项目学习笔记 2.1MyBatis-Plus相关 2.2搭建项目框架 2.3 ...

  3. spring boot 前后端分离项目(商城项目)学习笔记

    spring boot 前后端分离项目(商城项目)学习笔记 目录 spring boot 前后端分离项目(商城项目)学习笔记 后端配置 springboot项目 pom.xml文件 maven 配置文 ...

  4. Python学习笔记 1.0 基础内容篇章

    Python学习笔记 1.0 基础内容篇章 注释 变量 一.定义变量 二.使用变量 bug和debug bug: Debug工具: 数据类型 认识数据类型 在定义数据类型时发生的错误: 数据类型的补表 ...

  5. 数据可视化清新版【chart.js】学习笔记8.0—极地图(Polar Area)

    Polar Area--(极地图) 极地面积图类似于饼图,但每个线段具有相同的角度 - 线段的半径因值而异.当我们想要显示类似于饼图的比较数据,同时也要显示上下文的值的范围时通常使用这种类型的图表. ...

  6. RK3399学习笔记 1.0.3---python环境 Firefly Core-3399pro-jd4 Win10上RKNN工具安装

    RK3399学习笔记 1.0.3---python环境 Firefly Core-3399pro-jd4 Win10上RKNN工具安装 读取模型各层 1,最好在Conda下新建一个虚拟环境进行安装. ...

  7. USB摄像头视频监控项目学习笔记

    一个摄像头监控应用程序的系统调用如下所示: /* open  * VIDIOC_QUERYCAP 确定它是否视频捕捉设备,支持哪种接口(streaming/read,write)  * VIDIOC_ ...

  8. vue3小兔鲜商城项目学习笔记+资料分享01

    最近正在学习vue3小兔鲜,需要相关学习资料的可以点链接 https://docs.qq.com/doc/DUmhUVERtUHpLaG1a 下面试学习笔记 项目起步 项目预览地址 小兔鲜儿商城:ht ...

  9. vue3小兔鲜商城项目学习笔记+资料分享07

    建议大家先去看我第一篇小兔鲜的文章,强烈建议,非常建议,十分建议,从头开始看更完整. 下面是学习笔记 填写订单模块 填写订单实现 本节目标: 实现填写订单跳转 填写订单页组件和路由 1)准备填写订单页 ...

  10. vue3小兔鲜商城项目学习笔记+资料分享06

    建议大家先去看我第一篇小兔鲜的文章,强烈建议,非常建议,十分建议,从头开始看更完整. 最近正在学习vue3小兔鲜 下面是学习笔记 购物车模块 购物车功能分析 [外链图片转存失败,源站可能有防盗链机制, ...

最新文章

  1. 【 MATLAB 】ppval 函数介绍(评估分段多项式)
  2. 中国电力行业运行形势及十四五供需状况分析报告2021-2027年
  3. elementui 响应式导航栏网站_什么是响应式网站?响应式网站的优势介绍
  4. oracle序列创建及使用,Oracle创建和使用序列
  5. java反编译工具_JDA Java反编译工具的下载和使用手册
  6. 自动驾驶中的滞后碰撞检测(lazy-collision-checking)
  7. AMBERT!超越BERT!多粒度token预训练语言模型
  8. 为什么快速排序比归并排序快
  9. Android 多媒体开发学习之简单的音乐播放器
  10. springboot 打印日志
  11. 我们不改需求了,给你们立字据!
  12. vue3 自定义指令 directive
  13. java8 Stream分组求和 reducing
  14. 由“官方通知”论语音合成,一键合成你想要的语音
  15. Web开发未来会完全替代客户端开发吗?
  16. wechall靶场training系列通关记录
  17. linux全局搜索文件
  18. php代码编辑软件安卓,PHP代码编辑软件|Rapid PHP编辑器 v15.0 最新版
  19. Python日志模块log
  20. 创客路上,跟着嘻多猴快乐出发!

热门文章

  1. 腾讯元老、上市公司CTO逃离北上广,赚够钱后他在安徽建了一片200亩的农场
  2. 服务器上删掉的数据如何找回,在服务器数据丢失情况下如何恢复数据
  3. 物联网知识1---RFID
  4. 一文搞明白DNS与域名解析
  5. 【Excel 教程系列第 15 篇】Excel 中的简单排序(升序 / 降序)、多条件排序、按颜色排序、自定义排序、以及巧用“升序“制作工资条
  6. Android dex2jar反编译dex文件报错 Detail Error Information in File .\classes-error.zip
  7. ARM920T S3C2440 的中断系统
  8. linux常用命令知识点
  9. STM32用于PWM占空比测量
  10. ARX中各种坐标系及Transfrom操作相关