- 博客(24)
- 收藏
- 关注
原创 SR-IOV Architectural Overview
以下内容为学习《UEFI原理与编程》(戴正华)第四章和第六章的摘要UEFI是用C语言来实现的,但UEFI中Protocol是作为一种对象来设计和使用。例如:// 通过这个protocol可以控制块设备struct _EFI_BLOCK_IO_PROTOCOL{UINT64 Revision;EFI_BLOCK_IO_MEDIA*Media;EFI_BLOCK_
2021-04-29 11:32:04
609
原创 PciHostBridgeDxe
edk2中MdeModulePkg\Bus\Pci路径下PciHostBridgeDxe和PciBusDxe的源码阅读,记录一下学习过程。PciBusDxe部分PciBusDriverBindingStartPciEnumeratorPciHostBridgeEnumeratorPciRootBridgeEnumeratorPciScanBusGatherDeviceInfoCreatePciIoDevice...
2021-04-25 11:46:37
602
原创 PCIE Configuration Space
项目空档期看看PCIE 5.0 spec, 照本宣科简单记录一下。先上框架图,部件互连是点对点链接(point-to-point link),由Root Complex(RC), Endpoints(I/O devices), Switch, PCI Express to PCI/PCI-X Bridge组成。PCI Express Link由两个差分信号对组成,发送对和接受对(a Transmit pair and a Receive pair).PCI Express配置模型支持两.
2021-04-16 09:33:55
3382
转载 PEI 阶段的PPI 和 PPI notify
PPI notify 相当于 PPI 的callback function.PPI 和PPI notify 都有相应的GUID来区分在PEI Services 中有两个function : InstallPPI 和NotifyPPI1.调用InstallPPI时,会把PPI interface 插入PPI database 的PPI LIST 数组中,假设其可以容纳 12
2017-08-22 15:06:24
3591
转载 UEFI BIOS ROM 文件格式
1. FD (Firmware Device)整个BIOS ROM 就是一个FD,即Firmware Device。2. FV (Firmware Volume)整个BIOS ROM 又被分成多个小的逻辑区块,这就是FV,即Firmware Volume。每个Firmware Volume Image包括 Header 和 FFS Image, 还有Free Space。3.
2017-03-18 14:10:41
4913
转载 (转)UEFI小结-Handle的来龙去脉
本文说明:本人刚学习UEFI不久,写该文一是为了将学到的东西做一个规范化的总结,二是为了给初学UEFI的兄弟起到借鉴作用。同样地,错误的地方肯定很多,还望能得到各位弟兄指正。要理解本文,您至少应该是读过UEFI Spec,不然请先阅读UEFI Spec。一、一些概念的理解UEFI中会有很多抽象概念,像service、protocol、handle等等,如果将这些抽象的概念放到实际的代码
2017-03-01 08:56:54
940
1
转载 UEFI中的Protocol
以下内容为学习《UEFI原理与编程》(戴正华)第四章和第六章的摘要UEFI是用C语言来实现的,但UEFI中Protocol是作为一种对象来设计和使用。例如:// 通过这个protocol可以控制块设备struct _EFI_BLOCK_IO_PROTOCOL{UINT64 Revision;EFI_BLOCK_IO_MEDIA*Media;EFI_BLOCK_
2016-10-26 21:16:32
1170
原创 typedef
在学习《UEFI原理与编程》时遇到一段不理解的:每个DXE驱动是一个独立的模块,模块入口函数类型定义为:typedef EFI_STATUS (EFIAPI *EFI_IMAGE_ENTRY_POINT) ( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable
2016-09-16 11:51:22
732
1
原创 Could not get lock
在安装好Ubuntu16.04后,执行sudo apt-get install vim, 遇到提示:Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
2016-09-15 11:30:37
969
转载 提问的智慧
引言在黑客的世界里,你所提技术问题的解答很大程度上取决于你提问的方式与解决此问题的难度,本文将教你如何提问才更有可能得到满意的答复。开源程序的应用已经很广,你通常可以从其他更有经验的用户而不是黑客那里得到解答。这是好事,他们一般对新手常有的毛病更容忍一点。然而,使用我们推荐的方法,象对待黑客那样对待这些有经验的用户,通常能最有效地得到问题的解答。第一件需要明白的事是黑客喜欢难题
2016-06-22 16:58:55
443
转载 自己动手写DSDT系列教程1-ASL(ACPI Source Language)基础篇
写在前面的话,鄙人不是一个主板BIOS开发工作者,以下对ASL的理解仅仅来源于http://www.acpi.info/上的ACPI Specification文档。因此难免会出现不少错误的理解,以及错误的观点,希望大家谅解以及纠正。 首先,不得不说一下DSDT(Differentiated System Description Table)。什么是DSDT呢?其实它属于ACPI其中的一
2016-06-21 08:27:04
18341
转载 Memory Map
Memory Map --- 存储器映射 引言随着半导体工艺技术与处理器设计技术的不断提高,嵌入式处理器的速度愈来愈快;而非易失性存储器的读取速度却远远跟不上CPU的发展。传统的单片机运行模式——机器代码存储在非易失性存储器(如ROM,FLASH),在运行时由CPU直接从其中取出指令执行——逐渐显得力不从心。如果继续沿用传统的程序运行模式,那么在绝大多
2016-06-20 11:24:38
5815
转载 Intel CPU 地址空间总结
一、地址空间映射 这里要说的是Intel构架下的CPU地址空间布局,注意这里没有说是内存地址空间布局。 我们说的内存通常是指DRAM,DRAM相对于CPU也可以算是外部设备,CPU地址空间是CPU访问外部设备过程中的一个概念,CPU除了访问DRAM外还会访问许多其他的设备。可以粗略的认为CPU地址空间包含DRAM地址空间,但两者却是不同的概念。而且DRAM地址空间是
2016-06-19 17:01:49
1277
原创 有关指针初始化的误区
今天在看code时发现自己的一个盲点,赶紧写下来大意是这样的:要获取一段buffer的长度,假设BufferStart是指向Buffer的指针,a是buffer里边的第一个元素现在定义另一个指针BufferEnd, 并把BufferStart的值赋给它 UINT8 *BufferEnd = BufferStart;这等价于*BufferEnd = *BufferSt
2016-04-18 21:34:09
553
原创 SMBIOS
最近花时间把之前学过的SMBIOS复习了一遍,做点笔记,以后若是记不清了还可以找回来看看。首先,SMBIOS的基本概念MBIOS (System Management BIOS)是主板或系统制造者以标准格式显示产品管理信息所需遵循的统一规范。目的在于提供足够的信息给BIOS开发人员去实现必要的扩充,让他们产品的硬件和其他系统相关的信息能够正确地被用户定义的接口所判定
2016-04-17 12:58:42
2519
转载 git的基本用法
git功能强大,要熟练掌握不是那么容易的,以下是个人学习的简单总结。git对版本的分布式控制主要体现在其repository在本地,大部分的操作都直接在本地完成。把repository放在本地也是一种备份。(本地备份git clone )在git之前linux下就有diff/patch这样的tool,有兴趣可以细究,git 里有相似的用法。git init / git add / g
2016-03-28 17:13:23
422
转载 svn的基本命令
svnadmin create 版本库初始化svn checkout 版本库检出(工作拷贝)svn update 工作区更新 做出修改:svn add 添加文件svn drm
2016-03-28 11:13:17
460
原创 git 中遇到CRLF/LF warning
在Windows下使用git时遇到如下的提示: warning: LF will be replaced by CRLF in a.txt.The file will have its original line endings in your working directory. 引起warning的原因是:git本是Linux下的tool, 在Linux下文本中的换行符
2016-03-24 14:32:01
699
原创 ld: i386 architecture of input file `eatsyscall.o' is incompatible with i386:x86-64 output
在Ubuntu下用学习汇编语言编程,在使用ld链接时有碰到标题所示的问题。很明显,root cause 是我编译好的文件(eatsyscall.o)是遵循i386 architecture, 而我使用的计算机却是i386:x86-64架构,即在64位机器上编译32位代码我安装的ubuntu version是14.04,此版本下预安装的ld(链接工具)显示:Supported emula
2015-11-21 11:37:47
4676
1
转载 SEC phase
下面是摘自PI Specification . Vol 1_PEI中的描述SEC Phase的话。http://www.uefi.org/The Security (SEC) phase is the first phase in the PI Architecture architecture and is responsible for the following:• Handling a
2015-11-10 14:32:35
2675
转载 原码.补码.反码
以下内容摘自《计算机组成原理》(第二版)唐朔飞(P220) 原码表示法:原码是机器数中最简单的一种表现形式,符号位为0表示正数,符号位为1表示负数,数值为真值的绝对值,故原码表示又称为带符号的绝对值表示。整数原码的定义为 0, x 2n > x >= 0[x]原=
2015-09-05 21:51:56
554
原创 cpuid function
先贴上自己糊弄的代码(32位系统下编译):用来在32位系统中读取CPUID指令的各种信息**************************************************************************************************************************
2015-08-10 16:11:30
793
原创 _CR(Record, TYPE, Field)
在看EDKII的code时遇到一个宏,琢磨了好一阵,写下来和大家分享。如有错误欢迎指出。宏如下:#define_CR(Record, TYPE, Field) ((TYPE *) ((CHAR8 *) (Record) - (CHAR8 *) &(((TYPE *)0)->Field)))底层code中会有各种结构体,这个宏的作用就是在已知某结构体变量成员的地址时逆向求
2015-07-21 11:42:14
852
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人