自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

这里是为我所统率的战场

我于杀戮之中盛放,亦如黎花中的花朵

  • 博客(43)
  • 资源 (3)
  • 收藏
  • 关注

原创 BIOS知识枝桠——硬盘的总线接口与协议

为学习PCIE准备的一些前瞻,简单介绍总线协议与接口的一些知识。

2024-01-18 14:44:25 2345

原创 BIOS知识枝桠——RAID 磁盘阵列

遇到了一个RAID问题,第一次接触RAID,学习一下

2024-01-15 16:21:13 1994

原创 BIOS知识枝桠——认识主板

主板的一些基础知识

2024-01-12 13:52:44 1670

原创 80x86保护模式(描述符,选择符,任务切换)

80x86保护模式之描述符,选择符,任务切换基本运行流程大致要点解释1.80386段管理机制1.1 段1.2 描述符1.2.1 存储段描述符1.2.2 系统段描述符1.3 描述符表1.4 段选择符1.5 段寄存器1.6 段变换2.多任务2.1 任务状态段2.2 任务寄存器2.3 任务门2.4 任务切换2.4.1任务切换的四种形式2.4.2任务切换步骤2.4.3一个任务的运行环境3.中断与异常处理3.1 中断描述符表(IDT)3.2 IDT描述符3.3 中断和异常处理3.3.1 不进行任务切换的处理过程(中断

2022-03-18 17:27:35 1942

原创 BIOS知识枝桠——SCI SMI IRQ

SCI SMI中断中断分析SCISMISMMSCI和SMI的异同特殊的GPE: Q eventSMI的几种常见的注册SWSMI的触发常见SMI的应用中断中断: 指当出现需要时, CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程.即在程序运行过程中, 系统出现了一个必须由CPU立即处理的情况, 此时, CPU暂时中止程序的执行转而处理这个新的情况的过程就叫做中断.中断分析中断举例–比如你正在看书, 你的朋友跟你说他今天要找你一起去买东西, 有两种方式处理: 1. 你一直问他, 什么时候

2021-12-09 15:54:42 13484 1

原创 BIOS知识枝桠——GPU

GPU理论阐述概念功能供应商NVIDIA GPU 名称解读显存GPU/显卡信息查看、鉴别工具显示接口GPU通用计算编程科普类文章,无实际技术相关,内容来源网络概念图形处理器(英语:Graphics Processing Unit,缩写:GPU),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器。显卡(GPU) 是一种极其专业、十分复杂的硬件。对游戏玩家来说,显卡也是一款极其重要的部件,因为显卡性能通常决定了某款

2021-12-08 15:25:27 3107

原创 BIOS知识枝桠——ASL语言

在项目中SIO芯片部分控制着各种设备串口的功能,而对于该部分需要ASL语言来表述。目前ACPI的最新版本是6.3版本,相关的SPEC可以在Specifications | Unified Extensible Firmware Interface Forum中下载到,本文主要内容来源为SPEC第19章ACPI SOURCE LANGUAGE (ASL) REFERENCE。ASL是一种用于定义ACPI对象(包括编写ACPI控制方法)的源语言。原始设备制造商OEM和平台固件开发人员用ASL定义对象和编写控制

2021-11-10 16:40:50 5684

原创 毕业到踏足BIOS一年以来的旅程

2020年六月离开学校开始第一份工作,作为一个涉世未深的少年,遇到了第一个主动询问的上司&hr,不亏待每一份热情,在一番闲聊之后,没投过几次简历的自己就成为了一名赛事数据工程师,正式成为了程序员。之后才了解到,我的简历中有参加过电子设计大赛这一经历,即便是志愿者,却也带来了机遇,不是么风乍起,合当奋意向人生第一次租房,第一次上下班,一切都发生的那么自然,但似乎身边的一切并不是那么糟,没有996,没有强制加班,甚至在初入公司时候还能暂住在上司家中,策策和藏藏是他两只宠物狗的名字,那时候想着在校时光

2021-10-19 16:54:32 2313 23

原创 BIOS知识枝桠——ACPI

ACPI在BIOS中的应用ACPI OverviewPower StateACPI TableACPI Overview完全解读:Advanced Configuration and Power InterfaceAdvanced:为什么说它是advanced呢,主要是它替代了以前的APM,APM全称是 Advanced Power Management(高级电源管理),他是一种基于BIOS的系统电源管理方案,它提供CPU和外设电源管理并通过设备工作超时设定来决定何时将设备切换到低功耗模式。目前最新的

2021-09-23 17:33:18 5629 4

原创 PEI阶段扩展——PEIM PPI HOB

OVERVIEW在PEI阶段,PEIM 、PPI、 HOB组成了PEI阶段的最重要的部分,PEI阶段的module也可以理解为Driver就是PEIM,PEI阶段就是由一个一个的PEIM组成的;PPI是PEIM之间互相调用的接口,由惟一的GUID引导,内部也包含一些接口,HOB相当于信件在PEI阶段创建,会记载当前系统的信息,可以自定义HOB,然后在DXE阶段读取。框图如下:简单解读:PEI Core主要包括Core Services和Core Dispatcher。Core Services包

2021-09-14 18:42:59 7541 2

原创 BIOS知识枝桠——Device Path

EFI Device Path定义&原型EFI Device Path种类Hardware Device PathMedia Device PathEnd of Hardware Device Path定义&原型Device Path: 一种为区分各种设备而命名的地址Prototype:/** This protocol can be used on any device handle to obtain generic path/location information c

2021-08-11 11:14:03 4604

原创 BIOS知识枝桠——常用functions查阅

EFI_BOOT_SERVICES.InstallProtocolInterface()在设备句柄上安装协议接口。如果句柄不存在,它将被创建并添加到系统的句柄列表中。InstallMultipleProtocolInterfaces()比InstallProtocolInterface()执行更多的错误检查,所以建议使用InstallMultipleProtocolInterfaces()代替InstallProtocolInterface()typedefEFI_STATUS(EFIAPI *EF

2021-07-23 17:33:07 1805

原创 BIOS入知识枝桠——SMBIOS

OVERVIEWSMBIOS全拼System Management BIOS, 是通过系统固件传递管理信息的标准。应用在PC上,即是主板或系统制造厂商以标准格式显示产品信息所遵循的统一规范。主板厂商或OEM厂商生产的PC,出厂前都会按照SMBIOS标准将相关信息写入BIOS中。比如OEM客制化信息等。SMBIOS信息也会记录很多硬件信息, 比如CPU型号, 缓存, 内存大小等等SMBIOS由DMTF组织管理和维护。DMTF是一个工业化组织,通过与领先科技公司的开放与协作简化网络访问技术的

2021-07-07 17:31:14 10989

原创 BIOS知识枝桠——Event

Event传统的中断模式硬件中断软件中断Event OverviewTPLEvent FunctionUEFI不再为开发者提供中断支持,但在UEFI内部还是使用了时钟中断,所有的异步操作都要通过事件(Event)完成。在Legacy BIOS中,要处理异步事件或实现一些特定的功能,需要通过中断模式传统的中断模式常用中断分为硬件中断和软件中断硬件中断敲键盘事件:敲键盘→键盘信号传输给EC→EC产生硬件中断 (IRQ1)到CPU→中断信号输入到CPU的中断控制器→OS执行对应的软件代码来获取键盘

2021-07-02 17:36:04 3348

原创 BIOS知识枝桠——文件系统

硬盘物理结构以一个机械硬盘为例,内部包括磁片、主轴、速写磁头、传动手臂、传动轴、反力矩弹簧装置,SSD没有这样的结构,但都有一个相同的存储介质(主轴外一圈的部分)右边为存储介质的内部情况。MBR分区主引导记录MBR(Master Boot Record) Leagcy 启动最后就是通过读MBR做校验检测硬盘是否存在系统等扇区0扇区1扇区2扇区3……扇区N-2扇区N-1扇区NMBR通常磁盘512 Byte分为一个扇区(Logical Block

2021-06-30 10:53:47 1006

原创 BIOS知识枝桠——HII

HII DatabaseHII OverViewHII ProtocolHII OverView上图展现了HII 的基本架构。HII DataBase: 对HII 的所有数据进行管理。Setup Browser: 负责和用户进行交互,用户的输入输出,修改值时会获取到对应的数据然后通知HII Driver进行保存或者其他,还有一个Display模块是负责显示的。这一套框架加载的时候是在BDS阶段,启动UI界面,Setup Browser一直监视着用户的改动,通过HIIDriver存储改动到data

2021-06-23 16:39:40 3712

原创 BIOS知识枝桠——UEFI Driver

UEFI DriverUEFI Driver Model为什么要引入UEFI Driver?如何定义UEFI Driver?UEFI Driver加载流程:UEFI Driver Binding ProtocolUEFI Driver ModelUEFI Driver主要用于管理设备,在DXE阶段被加载,在BDS阶段被启用,DXE负责把当前系统中所有的Driver,不管DXE Driver,DXE RunTime Driver,还是UEFI Driver 全部给加载起来,把entrypoint都执行完,

2021-06-17 15:22:26 8082 4

原创 BIOS知识枝桠——PCD

PCDPCD OverviewPCD TYPESPCD OverviewPCD的主要目的就是把代码里面的可配置选项抽取出来,抽取出来的好处是倘若平台真的需要一些配置的时候,不需要修改源码,通过修改dsc把这些东西影响到,是最好的。这个PCD不止是要在编译过程中可以配置,还可以在运行时配置。配置PCD有几种方式,目的是让platform时候更为容易进行定制化,减少effect1:在build time时候,通过编译选项或者dsc的值进行设置从而影响源码;2:在Boot过程中,通过某个Driver生成

2021-06-11 17:19:14 5216

原创 BIOS知识枝桠——FV

基本概念FD:固件设备,指任何可以存储固件的设备或设备的集合,它存储代码和数据。FV:固件卷,指在FD上一个连续的部分,我们可以把它看成一个逻辑设备,因为我们代码真正操作的是FV,而非FD。我们经常提到的FFS的概念也是以FV的形式存在,它描述了FV中的文件组织方式。FV之于FD,类似于thread之于package。FF:固件文件,指在FV中组织代码和数据的一个集合。我们在PEI和DXE阶段都要Dispatch Modules,这个Modules指的就是FF。相较于文件系统要考虑目录、文件等更多内

2021-06-01 17:12:00 4326 2

原创 BIOS知识枝桠 -- PCIE

博客内容来源为网络下载ppt,侵删PCI的发展PCI Local Bus 示意图NoteBook上常见的PCIE Device:SSD DGPU WLAN LAN CardReader。通过总线扩展出来的PCIE Bridge可以外接设备等。如下所示:Bridge和Device之间通过Link进行沟通,同时Bridge发出Clock信号给Device,进行正常工作,但一直处于工作状态的话会占用资源,在Device不需要工作的时候,通过Request通知Bridge提供Clock,当然移除Re

2021-05-18 16:07:47 4522

原创 GOP Window 无法互动的问题

在edk2代码build成功之后,便会生成模拟器WinHost.exe在文件edk2\edk2\Build\EmulatorIA32\DEBUG_VS2017\IA32下,遇到的问题是打开之后整个windows框架处于灰色不可选中状态,且每次如此,对于键盘与鼠标的互动均无法得到反馈,但也只是该窗口有这个问题,奇特的是当处于那个不可选中的状态下时,输入法的中英文是不可切换的,同时看到了同有相同问题的博客,那位是将输入法切换为英文就可以,但自己的电脑任然不可以。换其他人的EDK2源码也是不行,说明是自己电脑的

2021-05-17 16:51:13 661 1

原创 BIOS知识枝桠—— Protocol

UEFI的ProtocolProtocol的概念Protocol的数据结构Protocol的实现Protocol的使用其他类别的ProtocolDevice Path ProtocolEFI Driver Binding Protocol本文为参阅UEFI原理与编程第四章及他人博客后写的融合怪,由于UEFI spec第八章起都是Protocol的,觉得有必要写,侵删Protocol的概念在计算机通信中,Protocol是网络协议的简称,网络协议是通信计算机双方必须共同遵从的一组约定,是为了使数据在网络

2021-04-29 16:42:10 2393

原创 BIOS的全局变量gST gBS gDS

全局变量gST系统表构成系统表的使用gBSgSTgST全称为global system table (在 uEFIL 里面,全面变量都会有个小写字母 g 在变量的前面,表征 global 的意思。) 是UEFI的基础服务之一的系统表。系统表是最重要的数据结构之一,它是用户空间通往内核空间的通道。有了它,UEFI应用程序和驱动才可以访问UEFI内核、硬件资源和I/O设备。系统表构成系统表可分为如下6部分:表头:包括表的版本号、表的CRC校验码等。固件信息:包括固件开发商名字的字符串和固件的版

2021-04-26 10:21:46 4327 7

原创 ACPI对接Windows操作系统

ACPI Docking for Windows Operating SystemsACPI介绍本文描述了如何在运行Windows操作系统的计算机的BIOS中实现基于acpi的对接。ACPI介绍高级配置和电源接口(ACPI)规范是一个开放的行业规范,开发该规范是为了建立行业公共接口,支持对设备和整个系统进行健壮的操作系统(OS)导向的主板设备配置和电源管理。ACPI是操作系统导向的配置和电源管理(OSPM)中的关键元素。ACPI将现有的电源管理BIOS代码集合、高级电源管理(APM)应用程序编程接口

2021-04-20 15:43:36 2198

原创 BIOS ACPI基础(总览)

ACPI概览什么是 ACPIACPI 术语状态全局状态(Global System States)设备电源状态(Device Power State)处理器电源状态(Processor Power State)设备和处理器性能状态( Device and Processor Performance States)什么是 ACPI作为标准中最广为认可的部分,电源管理经历了较多的改进。早先,Advanced Power Management 模型(APM)将电源管理几乎完全分配给 BIOS 控制,这大大的

2021-04-19 17:38:27 8415

原创 BIOS追Code之BDS phase ->TSL->RT->AL

综述BDS 的全称是启动设备选择(Boot Device Select), DXE 阶段最终会调用BDS ARCH protocol 的接口EFI_BDS_ARCH_PROTOCOL.Entry() 转入BDS阶段。BDS 阶段负责加载额外的驱动,与用户交互,必要的硬件初始化,并转入操作系统。EFI的引导顺序包括以下内容:平台固件从全局定义的NVRAM变量中读取boot order 引导顺序列表,引导顺序列表定义了一个NVRAM变量列表,其中包含要引导的信息。每个NVRAM变量为引导选项定义一个Uni

2021-04-09 13:58:58 6670 9

原创 BIOS追code之DXE phase

DXE Phase综述执行流程图涉及元件及功能protocol介绍Protocol实现方式DXE architecture protocol种类及其功能DxeMain()综述DXE ( Driver Execution Environment)阶段执行大部分系统初始化工作,进人此阶段时, 内存已经可以被完全使用,因而此阶段可以进行大量的复杂工作。从程序设计的角度讲, DXE阶段与PEI阶段相似,由于最终的OS 是64位的,所以要引导和启动OS就需要相应的64位环境同时从该阶段开始memory可用空间变多

2021-04-02 17:59:31 9602

原创 BIOS知识枝桠——简称释义(按名称排序)

个人遇到的BIOS相关缩写词汇汇总(补全ing)名称全称释义BFVBoot Firmware Volume第一个被执行的firmware volume,遵循 efi file system.包含pei core和peim,在开机时sec会到固定位置找到bfv.,PEI Foundation存在于BFV上。BFV的Base Address是由Build Tool确定的,存在于BIOS ROM的0xFFFFFFFC处。CARCache As Ram在reset 之后,mem

2021-03-31 17:40:24 5524 1

原创 BIOS Memory Service Overview

System MemoryMEMORY SERVICESHOB TYPERESOURCE HOBType:Attributes:(System)MEMORY TYPEDXE/SMM: PAGE ALLOCATION TYPEPEI MEMORY LAYOUTDXE MEMORY LAYOUTMEMMAPMEMORY SERVICESPEI on CAR and System MemoryCreateHobAllocatePool: Light version. Don’t support mem

2021-03-30 18:03:50 1661

原创 BIOS知识枝桠—— Library

MdePkg overviewPUBLIC DEFINITIONSBaseLibBASEMEMORYLIBDEBUGLIBREPORTSTATUSCODELIBHOBLIBMEMORYALLOCATIONLIBPCDLIBIOLIBPCILIBPEISERVICESTABLEPOINTERLIBUEFIBOOTSERVICESTABLELIBDXESERVICESTABLELIBUEFIRUNTIMESERVICESTABLELIBSMMSERVICESTABLELIBPEIMENTRYPOINT/ UEF

2021-03-30 15:23:11 2643

原创 BIOS PEI Phase涉及模块函数一览

PEI ModuleBootModePeiGetBootMode()PeiSetBootMode()CPUIODependencyIsPpiInstalled ()PeimDispatchReadiness()dispatcherFwVolHOBBootModeBootMode为启动时的引导方式,uefi和legacy是两种不同的引导方式,uefi是新式的BIOS,legacy是传统BIOS。你在UEFI模式下安装的系统,只能用UEFI模式引导;同理,如果你是在Legacy模式下安装的系统,也只能在le

2021-03-26 14:11:22 2381

原创 BIOS追code之PEI phase

SEC 阶段总述PEI阶段的功能任务:PEI划分:PEI阶段执行流程:PEI阶段执行流程描述及流程图阶段总述PEI(Pre-EFI Initialization,预先EFI初始化),虽然SEC阶段对CPU和CPU内的资源进行了初始化,但是PEI阶段可用的资源依旧十分有限,该阶段对内存进行初始化,主要功能是为DXE阶段准备执行环境,将所需要传递给DXE的信息组成HOB(Hand Off Block)列表,最终将控制权转交到DXE。UEFI具有模块化设计的特点,PEI就是一个模块。PEI Image的入口

2021-03-24 10:55:13 8464 1

原创 PEI Phase 一些重要的结构体

StructuresPEI_PPI_DATABASEPEI_CORE_FV_HANDLEEFI_PEI_SERVICESPEI_CORE_INSTANCEPEI_PPI_DATABASE////// PPI数据库结构中包含两个链接:PpiList和NotifyList。/// PpiList在PpiListPtrs数组的头,notify在PpiListPtrs数组的尾。///typedef struct { /// /// PpiList链表结束索引。 /// INTN

2021-03-19 14:31:55 866

原创 BIOS追code之SEC phase

BIOS追code之路综述综述Resect Vector部分进入SEC功能区合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入综述在uefi_artisan这位博主关于DXE源码分析的博客下,有着这么一个想法,如果用C语言(伪)代码描述整个

2021-03-16 18:07:26 4433 5

原创 Qt 利用线程每秒获取网页数据并保存

所需模块QT += core guiQT += axcontainerQT += network头文件#include <QObject>#include <QtNetwork/QNetworkAccessManager>#include <QtNetwork/QNetworkRequest>#include <QtNetwork/QNetworkReply>#include <QThread&gt

2020-08-19 20:50:56 1124

原创 Qt Excel表格读写的demo

这个demo分为不同的函数,读可以按照行列qDebug出每行每列的表格内容,写入的地方可以随意更改,只是基础的东西链接:pan.baidu.com/s/1gObFWEnTmCggO4x8oIDvig提取码:r6bk

2020-08-19 20:09:47 313

原创 QT之json数组文件的读写

这里写自定义目录标题#头文件需要有#include //文件#include //格式头部#include //元素#include //文件流#include #include #include #include #include #include #include 根据json内容在.h中定义class类,以下面的json数组为例{“teamData”: [{“teamName”: “SVG”,“player1”: 5,“player2”: 5,“player3”

2020-08-05 19:05:42 2970 4

原创 版本控制Git(尚硅谷)

Git优势:大部分在本地完成,不需要联网完整性保证尽可能添加数据而不是修改删除分支操作便捷流畅与Linux命令全面兼容写代码到工作区——>Git Add->临时存储的暂存区->Git commit->保存历史版本的本地库代码托管中心:维护远程库本地库和远程库的交互方式:团队内部协作:本地库->->->->->->跨团队协作:Git 命令行操作:本地库操作:本地库初始化:命令:Git add 效果:注意:

2020-06-18 17:06:56 237

原创 Windows SDK学习之窗口绘画(1)画笔+贝塞尔曲线

分辨率:屏幕上宽乘高有多少个像素点API:SetPixel(绘制一个像素点为指定的颜色)hdc:设备环境句柄X:设置的像素点的X轴坐标,按逻辑单位表示坐标y:指定的像素点Y的坐标crColor:指定像素点的颜色,使用RGB宏创建COLORREF的颜色SetPixel:(比SetPixel函数快)GetPixel:(获得一个像素点的颜色)...

2020-05-24 22:14:51 1161

原创 Windows SDK学习之滚动条

如何获取客户区的尺寸滚动条的出现最大限度(没有之一)的提高了用户体验,但首先需要客户区的尺寸。1.在全屏模式下获得客户区的分辨率GetSystemMetrics(SM_CXSCREEN);->宽度GetSystemMetrics(SM_CYSCREEN);->高度2.GetClientRect获取当前窗口尺寸3.当窗口改变时,操作系统会给应用程序发送WM_SIZE消息,把客户区新的宽度和高度分别存放在lParam参数的低16位和高16位;通过LOWORD(lParam)和HIWORD

2020-05-21 12:32:52 491

BIOS入门开发常用小工具.rar

BurnInTest性能测试软件;GetGUID创建一个GUID;RW硬件信息读取工具;HE相比RW功能更齐全一些;spacesniffer读取磁盘信使用息方便删除不需要的文件;SScom串口通信工具打印log;Intel、CAM CPU信息读取等和任务管理器类似,Xshell串口重定向使用工具

2021-12-02

ACIP相关文件.rar

内容包含为自己项目学习过程中找的一些ACPI相关,包括SPEC,ASL语言基础,其他人学习笔记,以及自己用不到的和最适合初学者的一个BIOS工程师技术指导

2021-11-10

edk2 -specifications and other files from tiancore

BIOS新手,发现这些开源资料都是分散的,就去github搞了一份都是英文版,会费些时间,推荐自己学习着使用gitbook下载,求人不如求己,网址:github.com/tiancore-docs,本压缩包包含的文件有:ATBB-Memory_Protection_in_UEFI_BIOS.pdf edk2-FdfSpecification.pdf edk2-UefiDriverWritersGuide-master.pdf EDK_II_Secure_Coding_Guide.pdf edk2-IdfSpecification.pdf edk2-UniSpecification.pdf edk2-BuildSpecification.pdf等

2020-09-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除