UEFI开发
文章平均质量分 83
对UEFI开发的各方面进行探索,特别是产品实现
luobing4365
十多年编程经历,前5年主要开发语言是x86汇编和C/C++,开发各类OptionRom。后5年涉及一些驱动开发和App以及UEFI编程,从此更多的精力用在了团队和公司管理上。然不忘初心,仍孜孜不倦地在各技术领域钻研,其乐无穷。
合作译著《现代X86汇编语言程序设计》、《21世纪机器人》
展开
-
UEFI开发探索102 – ACPI探究01(UEFI配置表)
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)ACPI探究01(UEFI配置表)1 大致规划2 UEFI Configuration Table(配置表)3 代码实现最近有项工作,是修改ACPI表。问题本身并不复杂,但是由于代码需要移植到Option ROM上,遇到不少奇怪的现象。因此,花了不少时间,对ACPI进行研究。任务是完成了,我的好奇心又被勾起来了。准备发挥“格物致知”的信念,把我认为的ACPI各方面的知识,好好地捋一捋。1 大原创 2022-01-08 15:21:29 · 5684 阅读 · 7 评论 -
UEFI开发探索101 – PCD探究
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)PCD探究1 PCD简介2 如何使用PCD2.1 PCD的类型FixedAtBuild类型FeatureFlag类型PatchableInModule类型Dynamic类型、DynamicHii类型和DynamicVpd类型DynamicEx类型2.2 访问PCD变量2.3 PCD的声明和使用3 试着写个例子从《UEFI编程实践》出版后,一系列的事情接踵而来,终于在今天,算是告一段落了。这段时原创 2021-10-18 22:11:19 · 4667 阅读 · 5 评论 -
UEFI开发探索100 – 《UEFI编程实践》发布啦
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)《UEFI编程实践》发布1 内容简介第一部分 UEFI环境搭建及UEFI应用构建第1章 UEFI的世界第2章 UEFI开发和调试环境搭建第3章 构建UEFI应用第二部分 图形图像、汉字显示和GUI构建第4章 图形与汉字显示第5章 图像显示及特效第6章 GUI开发与移植第三部分 UEFI下访问各类总线设备第7章 UEFI环境下访问外设第8章 UEFI驱动与Option ROM第9章 UEFI与USB第1原创 2021-09-01 20:45:00 · 5369 阅读 · 20 评论 -
UEFI开发探索99 – UEFI Shell下截屏工具
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)UEFI Shell下截屏工具1 PrintScreenLogger的代码结构1)PrintScreenLoggerEntry()2)PrintScreenLoggerUnload()3)PrintScreenCallback()2 测试运行最近有些程序,只能在实际机器的UEFI Shell下进行测试。比如上一篇的diskdump程序,在模拟器下是没法运行的。模拟器上运行,可以直接使用各种截屏原创 2021-08-26 15:47:32 · 2216 阅读 · 5 评论 -
UEFI开发探索98 – 硬盘访问Diskdump
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)硬盘访问1 UEFI的存储介质访问栈2 编写Diskdump程序2.1 Block I/O简介1)设备信息Media2)读扇区函数ReadBlocks3)写扇区函数WriteBlocks3)更新介质FlushBlocks2.2 Diskdump编程1)项目中增加对Block I/O的支持2)实现对Block I/O实例的获取3)实现功能3 测试之前在CSDN上建了一个小专栏,名字为汇编语言探索,原创 2021-08-25 15:11:48 · 1313 阅读 · 1 评论 -
UEFI开发探索97 – EDK2模拟器搭建网络环境
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)EDK2模拟器搭建网络环境1 搭建EDK2开发环境1)工具安装2)下载代码库3)更新子模块4)编译工具2 搭建网络测试环境1)安装Winpcap2)编译SnpNt32Io3)编译EDK2模拟器4)配置模拟器网络环境3 网络程序测试最近一段时间,很多网友问的问题都是和网络相关的。讨论的问题大部分是关于网络环境的搭建,有些现象我也没有遇到过。在UEFI开发探索49中,介绍过在Nt32模拟器和真实环原创 2021-08-22 09:36:09 · 2105 阅读 · 3 评论 -
UEFI开发探索96 – 温度计小游戏
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)UEFI下的温度计小游戏1 程序设计2 移植和编写代码1)重新实现图像的加载方法2)图像显示函数3)用户操作处理3 测试弹跳小游戏syslibforuefi中,还有几个小程序。从我的角度来看,最值得学习的是他将图像变为HII资源的方式,其他图形图像的知识,在很久以前的博客中,已经研究了很多了。早上打开CSDN,让我吃了一惊:图1 CSDN的评价悄没声息地跑到了游戏领域内容榜的第2名了!原创 2021-08-20 22:18:53 · 768 阅读 · 0 评论 -
UEFI开发探索95 – 弹跳小游戏
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)UEFI下的迷宫小游戏1 Bounce游戏1.1 游戏架构1.2 移植和编写代码1)编写文件读取到内存的函数2)编写图像显示函数3)实现弹跳函数Bounce4)实现主功能2 测试弹跳小游戏昨天闲暇的时候,把Tim Lewis的迷宫游戏编译了一下,自娱自乐在UEFI下玩了一把。奇怪的是,CSDN竟然给我发了“入选《游戏领域内容榜》第27名”,如下图:图1 CSDN奇怪的评选嗯,虽然从理论上原创 2021-08-19 15:53:12 · 1105 阅读 · 0 评论 -
UEFI开发探索94 – 迷宫小游戏
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)UEFI下的迷宫小游戏1 Maze程序结构分析1)定义全局变量2)设置迷宫3) 游戏控制2 编译运行最近一直在写YIE002开发探索的博客,偶尔看看其他人写的和BIOS开发相关的博客。经常看的博客有Tim Lewis、Vincent Zimmer等,总是能学到一些东西。今天下班后,可能是因为最近公司的事情比较繁杂,精神有点不振。虽然计划了近期要写的嵌入式代码,可是怎么也提不起劲,开发工具都不原创 2021-08-18 16:33:48 · 923 阅读 · 0 评论 -
UEFI开发探索93–UEFI下使用YIE002随机数发生器
ont color=#ff5555 size=2 >(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)UEFI下使用YIE002随机数发生器1 代码编写2 测试在UEFI开发探索72中,曾经规划过YIE002的开发板计划。当时的主要目标是使用YIE002做USB HID的双向通信设备,并在Windows、Linux和UEFI下都实现上位机访问程序。如今,这些目标都已经实现了。特别是Windows下的测试程序UsbHID,现在成为我专用原创 2021-08-16 16:50:38 · 385 阅读 · 1 评论 -
UEFI开发探索92 – 调试使用了StdLib的64位程序
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)调试使用了StdLib的64位UEFI程序1 搭建开发环境2 测试2.1 调试工程建立2.2 编译和调试3 解决问题昨天有位名为“sam bing”的网友,提到用VS2015和EmulatorPkg调试UEFI程序。调试方法在之前的博客中讨论过,他是参照博客去操作的。问题在于,他发现在工程中使用C标准库函数,也即StdLib后,在EmulatorPkg中无法编译通过,也就无法通过Emulato原创 2021-05-27 13:57:56 · 1656 阅读 · 5 评论 -
UEFI开发探索91- 类型强制转换引起的问题
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)Windows和Linux不同的类型转换结果1 问题代码2 Linux下编译调试2.1 关闭优化选项2.2 编译及启动调试3 Windows下编译调试4 问题分析最近有个项目开发,我需要构建几个UEFI图形对话框,用来接受用户的密码修改和输入。大致的样子是这样的:图1 UEFI下的密码对话框开发过程中,发现使用VS编译和GCC编译的结果不同。一番折腾后,了解到时强制转换引起的问题。之前原创 2021-05-26 16:20:04 · 798 阅读 · 1 评论 -
UEFI开发探索90- YIE002USB开发板(13 Linux编程)
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)YIE002USB开发板之Linux编程1 建立开发目录2 代码编写2.1 添加Output report的处理代码2.2 Input report&Output report通信方式上一篇使用hidapi的hidraw方式,实现了Linux上位机与USB HID设备通信的测试程序。不过,只实现了三种通信方式中的两种。本篇将使用hidapi的libusb方式,将三种通信方式全部实现。1原创 2021-05-13 12:12:14 · 824 阅读 · 4 评论 -
UEFI开发探索89- YIE002USB开发板(12 Linux编程)
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)YIE002USB开发板之Linux编程1 概述2 hidapi的准备2.1 安装必要组件2.2 hidapi主要接口3 使用hidapi的hidraw方式的示例3.1 准备开发目录3.2 USB HID的hidraw方式代码开发3.2.1 Feature report通信方式3.2.2 hid_read()&hid_write()通信方式对于USB HID的编程,在YIE002USB开原创 2021-05-13 12:05:05 · 554 阅读 · 2 评论 -
UEFI开发探索88- YIE002USB开发板(11 UEFI下访问HID设备)
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)YIE002USB开发板之UEFI下访问HID设备1 添加访问USB HID设备的库和头文件2 定位USB HID设备3 与USB HID设备通信通过前面几个篇章的博客,制作好了USB HID设备,并使用Windows下的上位机工具UsbHID,测试了设备的工作状态。终于,可以在UEFI系统下构建访问USB HID设备的工程了。我们所制作的USB HID设备,在Windows系统下可以成功通原创 2021-05-13 10:38:40 · 844 阅读 · 1 评论 -
UEFI开发探索87- YIE002USB开发板(10 UEFI对USB的支持2)
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)YIE002USB开发板之UEFI对USB的支持23 EFI_USB_IO_PROTOCOL4 使用USB Protocol3 EFI_USB_IO_PROTOCOLEFI_USB_IO_PROTOCOL由USB总线驱动产生,可由UEFI应用和驱动使用,用来访问各种USB设备,比如USB键盘、鼠标和大容量存储设备等。EFI_USB_IO_PROTOCOL所提供的接口,可提供四种类型的传输方式与原创 2021-05-04 16:13:06 · 711 阅读 · 0 评论 -
UEFI开发探索86- YIE002USB开发板(09 UEFI对USB的支持1)
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)YIE002USB开发板之UEFI对USB的支持11 UEFI下的USB驱动协议架构2 EFI_USB2_HC_PROTOCOL通过前面几篇博客,我们制作了具备通信能力的USB HID设备。使用之前写的Windows下的测试工具,设备工作得很好。同样的,UEFI环境下,也可以编写上位机程序,访问USB HID设备。本篇主要介绍UEFI对USB的支持,包括UEFI的USB驱动架构和提供的USB原创 2021-05-04 16:08:28 · 788 阅读 · 0 评论 -
UEFI开发探索85- YIE002USB开发板(08 制作HID设备)
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)YIE002USB开发板之制作HID设备-编程1 YIE002-STM32的USB编程2 调整示例工程Custom_HID3 修改代码3.1 准备描述符3.2 支持ReadFile()和WriteFile()方式的代码3.3 支持Input报告和Output报告的方式、以及Feature报告的代码3.3.1 准备通信用的标志和缓冲区3.3.2 修改RESULT CustomHID_Data_Setup原创 2021-05-04 09:37:34 · 689 阅读 · 0 评论 -
UEFI开发探索84- YIE002USB开发板(07 制作HID设备)
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)YIE002USB开发板之制作HID设备-USB标准命令和HID类命令1 USB命令(USB Device Request)2 USB标准命令3 USB HID的类命令在之前的博客中,曾经谈到制作USB HID需要掌握的背景知识。包括USB软件架构、USB描述符和USB命令。前两个已经讨论过了,本篇介绍USB命令。1 USB命令(USB Device Request)USB规范定义了设备请求原创 2021-05-03 10:39:31 · 350 阅读 · 0 评论 -
UEFI开发探索83- YIE002USB开发板(06 制作HID设备)
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)YIE002USB开发板之制作HID设备-HID类的描述符1 HID描述符2 报告描述符我们所要开发用来通信的USB设备,是HID类设备。HID(Human Interface Devices)为人机接口设备,是USB规范中最早提出并支持的一种设备类。我们日常使用的键盘、鼠标等,都属于HID设备,这是一种使用非常广泛的USB设备。USB规范中,HID类设备的规范为Device Definito原创 2021-05-02 22:06:32 · 326 阅读 · 0 评论 -
UEFI开发探索82- YIE002USB开发板(05 制作HID设备)
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)YIE002USB开发板之制作HID设备-USB标准描述符1 USB描述符概述2 USB标准描述符2.1 设备描述符2.2 配置描述符2.3 接口描述符2.4 端点描述符2.5 字符串描述符从软件的角度,制作USB HID设备,需要理解的知识包括几大块:1) USB协议的基本架构和软件架构;2) USB描述符,包括标准描述符和类描述符;3) USB命令,包括标准命令和类命令。当然,如果能原创 2021-05-02 19:39:28 · 436 阅读 · 2 评论 -
UEFI开发探索81- YIE002USB开发板(04 制作HID设备)
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)YIE002USB开发板之制作HID设备1 USB规范简介2 软件工程师眼中的USB系统2.1 USB总线接口层2.2 USB设备层2.3 3 功能层停滞了一段时间在YIE002上进行开发了,这几天重新开始编写。在最早编写的《UEFI编程实践》的书稿中,我是使用正点原子的探索者F4来制作HID设备的。感觉在自己的书中,使用其他家的开发板和代码,总是觉得有点不对。另外,在其代码上进行改造开发,原创 2021-05-01 21:29:57 · 505 阅读 · 1 评论 -
UEFI开发探索80- YIE001PCIe开发板(终篇 移植杂谈)
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)YIE001PCIe开发板之移植杂谈1 Option ROM开发注意点1) 减少生成文件的尺寸2) 尽量使用load或loadpcirom3) 始终要有退出手段4) 记住UP32K#2 MyGuiFrame的简介2.1 GUI事件管理2.2 鼠标事件处理2.3 键盘事件处理3 代码移植3.1 去除非必要代码3.2 增加退出机制3.3 修改INF文件4 编译及测试粗略地数了数,在博客中起码开发了近原创 2021-02-16 11:48:37 · 979 阅读 · 0 评论 -
UEFI开发探索79- YIE001PCIe开发板(12 贪吃蛇)
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)YIE001PCIe开发板之贪吃蛇1 代码整理2 编译及测试上一篇开发的贪吃蛇,除了使用了启动服务所提供的键盘服务函数和延时函数外,主要使用了GraphicsOutput Protocol。这使得代码无需进行修改,能很容易地移植到Option ROM的框架代码中。本篇比较短,主要是介绍如何将UEFI应用Snake移植到YIE001的OpROM框架中。移植的步骤如下。1 代码整理上一篇的示原创 2021-02-15 17:33:21 · 373 阅读 · 0 评论 -
UEFI开发探索78- YIE001PCIe开发板(11 贪吃蛇)
YIE001PCIe开发板之贪吃蛇1 贪吃蛇框架设计2 代码实现2.1 数据结构、全局变量和宏定义2.2 绘制地图和初始化贪吃蛇2.3 撞墙或自咬2.4 随机食物2.5 贪吃蛇的移动2.6 游戏运行与控制3 测试是时候实现个有趣的项目了,我选择在UEFI下实现贪吃蛇的游戏。在Option ROM上直接实现,会很难调试。因此,我首先实现了贪吃蛇的UEFI应用。调试成功后,再将其移植到YIE001上。1 贪吃蛇框架设计考虑到代码最终是要移植到YIE001上,我尽量减少所用到的Protocol。主要原创 2021-02-14 12:19:11 · 606 阅读 · 0 评论 -
UEFI开发探索77- YIE001PCIe开发板(10 拨动开关及显示)
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)YIE001PCIe开发板之拨动开关1 获取拨动开关状态2 显示开关状态3 测试YIE001上有两个拨动开关,可通过对应的寄存器位得知它们的状态,以实现交互控制。这篇尝试将按键获取,以及图形显示的编码。1 获取拨动开关状态UEFI开发探索第75篇中,列出了YIE001开发板的硬件资源。板子上提供了两个拨动开关,分别对应CH366的GPI1和GPI2。对照CH366的芯片手册,定义其相关的宏原创 2021-02-13 12:09:56 · 393 阅读 · 0 评论 -
UEFI开发探索76- YIE001PCIe开发板(09 界面和键盘控制)
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)YIE001PCIe开发板之界面和键盘控制1 图形支持和汉字支持2 界面及键盘控制编程3 测试在开发板YIE001上进行开发,实际上和之前博客中开发UEFI应用,并没有本质的区别。所要注意的,是在Option ROM被BIOS加载之时,所用的UEFI机制以及Protocol是否能正常使用。一般来说, GraphicsOutput Protocol和ConOut Protocol是可以正常使用的原创 2021-02-13 09:42:32 · 531 阅读 · 0 评论 -
UEFI开发探索75- YIE001PCIe开发板(08 跑马灯实验)
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)YIE001PCIe开发板之跑马灯实验1 控制LED灯的函数2 实现跑马灯3 编译及测试3.1 编译3.2 刷写YIE001的固件(1) 修改ROM文件(2) 刷写Flash ROM(3)测试在等待开发板YIE002焊接的日子里,回到YIE001上继续编程。本篇准备完成跑马灯的实验,让YIE001上的4个LED灯跑起来。在开篇中,已经大致了解了YIE001上的硬件资源,为方便后续的编程,把这些原创 2021-02-07 22:01:02 · 726 阅读 · 1 评论 -
UEFI开发探索74- YIE002USB开发板(03 Windows编程)
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)YIE002USB开发板之Windows编程1 添加库文件2 枚举HID设备2.1 SetupAPI函数2.2 枚举HID设备的流程图2.3 枚举HID设备的代码3 与HID设备通信3.1 ReadFile()和WriteFile()方式3.2 输入报告和输出报告的方式3.3 功能报告方式在上篇学习了访问HID设备的Windows API之后,本篇开始着手进行Windows上位机的编程。所编写的程原创 2021-02-02 17:54:39 · 476 阅读 · 0 评论 -
UEFI开发探索73- YIE002USB开发板(02 Windows编程)
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)文章目录1 HID(人机接口设备)介绍2 Windows上位机程序UsbHID3 Windows系统的HID API3.1 CreateFile()、ReadFile()和WriteFile()3.2 HidD _ GetInputReport()和HidD _ SetOutputReport()3.3 HidD _ SetFeature()和HidD _ GetFeature()1 HID(人机原创 2021-01-24 22:52:20 · 703 阅读 · 0 评论 -
UEFI开发探索72- YIE002USB开发板(01 开篇)
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)最近把USB的各个方面都研究了一遍,也在UEFI下实现了USB设备的访问。趁着这热乎劲,我计划把USB HID通信的知识,集合到一个新的开发板中进行介绍,也即我目前正在考虑设计的YIE002。虽然YIE002的开发板还在规划中,我使用其他的开发板,已经打通了USB的通道了。只等着YIE002开发打样回来,把嵌固件代码移植过去就行了。因为涉及到三个平台的开发(Windows、UEFI以及嵌入式..原创 2021-01-21 21:42:44 · 696 阅读 · 0 评论 -
UEFI开发探索71- YIE001PCIe开发板(07 OptionROM框架)
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)正在编辑新书《UEFI编程实践》(暂定名),现在介绍的内容,都整理到了第8章中了。写书还是比较费神的,博客中可以随意行文,书稿则完全不能这么做。为了做到准确,有时为了确定一个数据,需要花费整个上午查找资料。期待今年上半年能够出版吧。关于Option ROM,在第34、35和36篇中,已经描述过其历史和原理了。现在有了开发板,就可以在上面直接进行开发了。1开发Option ROM代码...原创 2021-01-17 17:52:10 · 1129 阅读 · 4 评论 -
UEFI开发探索70- YIE001PCIe开发板(06 UEFI驱动)
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)前两篇中,我们了解了UEFI驱动模型的基本架构。 在此基础上,本篇将以一个有趣的UEFI驱动GopRotate,配合自己编写的测试用UEFI应用TestGopRotate,演示UEFI驱动的运行和测试过程。1 UEFI驱动GopRotate此示例由apop2提供,源码仓库为https://github.com/apop2/GopRotate。工程GopRotate包含5个源文件:Compon..原创 2021-01-17 13:27:40 · 579 阅读 · 0 评论 -
UEFI开发探索69- YIE001PCIe开发板(05 UEFI驱动)
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)上一篇中,驱动BlankDrv完成了核心的EFI_DRIVER_BINDING_PROTOCOL,以及获取驱动名Protocol的处理后,整个UEFI驱动框架还有两项工作等待完成:安装UEFI驱动所提供的Protocol; 驱动加载后是常驻内存的,应该提供UEFI驱动的卸载函数,以支持将驱动系统中移除的功能。1 完成驱动框架安装Protocol可以使用InstallMultiplePro..原创 2021-01-16 21:45:44 · 709 阅读 · 0 评论 -
UEFI开发探索68- YIE001PCIe开发板(04 UEFI驱动)
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)插个新告知:YIE001的开发板,思路已经比较清晰了-使用PCIE芯片,编写Option ROM,在此基础上控制硬件,做一些有趣的实验。由于主要是用业余时间,估计在这两个月内就能把要做的实验完成。因此,有了新的想法-做一个USB的开发板YIE002,实现从UEFI访问、Windows/Linux访问的全通道USB HID设备。当然,可以用它来收集温度、产生随机数等。准备做成U盘大小,方便直接插在..原创 2021-01-15 13:12:00 · 682 阅读 · 0 评论 -
UEFI开发探索67- YIE001PCIe开发板(03 UEFI驱动)
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)上一篇做好了服务型UEFI驱动的示例工程,本篇准备编写测试用的UEFI应用,演示如何使用驱动提供的Protocol。另外,对于如何加载驱动进行测试,也会详细讲述。1编写测试驱动的UEFI应用完成了服务型驱动和相应示例Protocol的构建后,我们准备编写访问示例Protocol的UEFI应用。本节准备的示例工程TestServiceDrv,在文末提供了下载地址。编写测试示例Protoc...原创 2021-01-14 19:33:29 · 720 阅读 · 0 评论 -
UEFI开发探索66- YIE001PCIe开发板(02 UEFI驱动)
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)在之前的篇章中,或多或少地介绍了一些UEFI驱动的内容。我们要在YIE001上实现的PCIE Option ROM,实际上就是一种UEFI驱动。这点与Legacy BIOS的Option ROM完全不同,在系列博客的第34篇中,可以知道Legacy Option ROM完全是并行于BIOS的。当然,这样描述Legacy Option ROM也不准确,Legacy BIOS与Legacy Opti..原创 2021-01-13 22:42:03 · 1422 阅读 · 0 评论 -
UEFI开发探索65- YIE001PCIe开发板(01开篇)
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)有段时间没有更新博客了,主要是大部分时间都用在公司项目上,以及整理书稿了。在整理书稿的过程中,到了讲述PCIe协议这章的时候,总觉得只是介绍协议和UEFI代码,未免有点太枯燥了。因此,我把之前写好的章节全部推翻,把介绍PCI协议的内容,改为实现一个实际的UEFI Option ROM了。也就是说,我准备制作一个带Flash ROM的PCIE开发板,把UEFI Oprom代码灌入,设备插在计算机上,..原创 2021-01-05 13:33:47 · 1503 阅读 · 2 评论 -
UEFI开发探索64- VS2015调试UEFI代码(续27、53篇)
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)在27篇、53篇中,已经很详细地描述了如何建立调试环境。最近有些朋友问我,总是无法在VS2015下编译通过,所得到的信息也很奇怪,没法进行调试。鉴于此,我觉得有必要再深入些,谈谈如何使用VS2015来调试UEFI代码。我一般是遵循如下的原则来建立UEFI的VS调试环境的:保证直接使用edksetup.bat和build工具,代码可以编译通过。VS有它自己的一套检测机制,并不适合UEFI工..原创 2020-10-11 11:16:22 · 1144 阅读 · 0 评论 -
UEFI开发探索63 – C与C++、汇编的调用约定
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)在编写代码的时候,如果发现函数不如自己预期的运作,我的第一个反应并不是添加调试代码,或者使用调试工具。我反而更习惯于去读函数的汇编代码,查看逻辑上是否有漏洞,这都是以前开发oprom/bios汇编代码时留下的习惯。这个习惯我认为很好,有助于让我专注在代码本身。不过,由此带来了一些问题,C与汇编的函数约定,参数入栈顺序、堆栈平衡等,很难记忆。我实际上更习惯于16位时代的汇编语言,现在32/64位的..原创 2020-07-10 10:07:39 · 895 阅读 · 0 评论