
BIOS Internals
文章平均质量分 69
hgf1011
这个作者很懒,什么都没留下…
展开
-
戏说BIOS之Keyboard
戏说BIOS之Keyboard 1. Introduction Keyboard System看起来好像挺简单,但事实上它远比想象中的复杂,硬件上Keyboard System需要两颗cpu完成key stroke的转换以及和Host的通信过程,一颗用于处理keyboard的make&break过程,另一颗作为keyboard controller和host交换信息原创 2009-06-04 14:25:00 · 6029 阅读 · 1 评论 -
P-state
CPU在C0状态时会执行指令,但是即使在C0状态下OSPM仍然可以通过调整CPU的工作电压和频率的方式,以此降低整个平台的功耗。P-state 在Intel平台上通常指的是EIST(Enhanced Intel SpeedStep Technology),EIST允许多个核动态的切换电压和频率,动态的调整系统的功耗。OSPM通过WRMSR指令写IA32_PERF_CTL MSR的方式调整CPU电压和工作频率。原创 2010-09-24 11:43:00 · 14615 阅读 · 1 评论 -
Something About SCI
最近在debug一个SCI相关的问题,在这个过程中我对SCI产生了一些新的认识还挺有意思于是想记录一下,总结+备忘。 SCI全称是System Control Interrupt 系统控制中断用来通知OS 有ACPI event产生了。 ACPIspec上说有2种类型的event会产生SCI,一种叫做Fixed-FeatureEvents,另外一种是General-Purpos原创 2014-05-08 19:27:20 · 5970 阅读 · 0 评论 -
Intel GMA DVM SVM SSM In XP Vista Win7
Intel has DVMTspecs for WinXP & Vista & Win7 (No Win8)原创 2013-07-19 15:52:32 · 3144 阅读 · 0 评论 -
EFI Performance Monitor
Performance Monitor Overview In order to reduce platforms boot speed, BIOS Engineer need to optimize the platform firmware. But before that, BIOS Engineer should know where is the bottleneck. The fu原创 2011-06-27 15:46:00 · 3858 阅读 · 1 评论 -
C-state
C-state是ACPI spec定义的CPU工作在G0时的power states,这些状态包括C0,C1,C2,C3…Cn.其中C0被称为Active状态,也只有C0的时候CPU才会执行指令;其余的状态则被称为sleeping,这时CPU是不执行指令的,也因而会节省更多的功耗。系统在运行时会根据loading状况在各个C-state之间切换 降低功耗,图1是C-state切换的一个简单的当CPU在进出sleeping state时会有一定的延时,通常延迟越大功耗对应的C-state的功耗就越低原创 2010-09-20 18:11:00 · 18947 阅读 · 0 评论 -
Reset Control
Reset Control1.Reset Introduction<br /> <br />Reset机制是BIOS中一个很基本的动作,很多部分的操作往往需要做一下Reset然后才能正常工作。Reset如影随形无处不在,哪个功能不正常就Reset一下呗(玩笑而已:)),Reset在BIOS code中还真是挺多的,翻翻code就会找到像MRC初始化、ME设置、Setup的调整 、三键重启、BIOS Flash之后的Reset等等。虽说Reset是一个很简单的操作,但是我一直搞不清楚Reset有哪些种类,这些原创 2010-07-04 14:24:00 · 12774 阅读 · 2 评论 -
CONTAINING_RECORD IN EFI
CONTAINING_RECORD IN EFI EFI BIOS几乎全部用C完成,它几乎将C语言的各种技巧发挥到了极致。C的精髓泰半是指针,另外宏也是非常值得称道的。程序员对于宏的评价可谓褒贬不一,有人说它是万恶之源,有人则赞其为一把利刃。我个人觉得运用之妙,存乎一心,宏不是万能的,但是有一些场合使用宏确实可以大大的提高程序的可读性,有些跨平台的特性离开了宏还真是不行。_CR是EFI之中原创 2009-10-06 13:45:00 · 7717 阅读 · 7 评论 -
USB Exposed Port System Test
We have some findings about USB port pair mapping during debug "USB Exposed Port SystemTest " WHQL issue in project side. 1. According to Haswell Mobile Platform design guide IBL#486713 page 2原创 2013-07-19 15:49:54 · 5353 阅读 · 0 评论 -
PCI IRQ Routing
在计算机发展的历史中,很多技术的出现都是为了解决当前所面临的问题而产生和发展出来的,PCI IRQ Routing也不例外,随着计算机系统的功能需求的增加,越来越多的PCI/PCIE设备被加入到系统中来,可是PIC mode下却只有15 个IRQ可供使用(即使是APIC,目前也只是有24个INTIN),而且在早期device都是直接拉线到8259 IRQ,所以一旦确定就没法改变,没有灵活性。于是中断共享就是这种情况下解决这一问题的一个方法(当然其他的方法如使用MSI,SIRQ等也都可以实现中断的复用),可原创 2010-10-29 15:23:00 · 14347 阅读 · 4 评论 -
EFI LIST
List是一个非常常见的数据结构,学过C的童鞋肯定都会非常熟悉这个东东,上学的时候老师都会教我们按照如下的方式定义一个双向List。typedef struct _list_node {struct _list_node * Flink;struct _list_node * Blink;uint32 data;}list;原创 2010-12-16 15:04:00 · 4827 阅读 · 4 评论 -
Cache As Ram
Cache又称之为高速缓存,是为了弥补CPU和主存之间逐渐增大的速度上的差距 而被迫在两者之间加入的一个小的SRAM。现代处理器上通常都会有三级或者是四级缓存,这部分高速缓存通常被集成在CPU上,这些高速缓存也就是通常所讲的L1 L2 L3…。Cache的工作原理主要是基于两个原因:a).现代计算机存储体系的山状结构,在山尖的是最快的存储设备当然它的价格也最贵(如Cache),山底的就是容量最大 最慢的存储设备(如硬盘)。b).计算机对数据的访问有一个局部性的原理,这次被引用过的数据可能过一会还会被频繁的用原创 2010-09-05 18:14:00 · 7435 阅读 · 2 评论 -
INT15 A20 Control
INT15是一个Misc Function, 很多乱七八糟的功能都被放在 INT15中实现。比较常见的有这样几个功能:1.CPU Micro Code Update ;2.VBIOS call back Function;3. A20 Control Function。 之前我并不知道INT15 A20 Control Function的功能,一次偶然机会 在debug 一个PXE网络ghost的问题 发现每次DOS下的ghost软件运行到一半就报错了, 然后利用DOS下的单步执行的功能就发现每次执原创 2010-11-07 17:03:00 · 6063 阅读 · 3 评论 -
BIOS Usb 3.0 Key Behavior In Deep S3
Aswe known, In BIOS side Deep S3 and Normal S3 are almost the same(BIOS only setpower policy and send a cmd to notify EC to support deep S3). Itseems the usb controller(Core/High Speed IO)and ports原创 2013-07-19 16:02:36 · 4533 阅读 · 0 评论 -
AHCI Big View
原创 2014-08-14 16:07:11 · 3626 阅读 · 0 评论 -
戏说BIOS之Hello BIOS
戏说BIOS之Hello BIOS “我所知道的EC”系列基本结束了,现在我终于可以有空玩一玩BIOS了。可是需要特别强调的是我是一名EC而不是BIOS,所以我看BIOS的视角可能会不够专业,也不够正统,这也是为什么我将这个系列取名为”戏说BIOS”的原因。可能有些朋友会觉得我不务正业,身为EC却去玩什么BIOS(呵呵…我本来就是不务正业J),我觉得PC本身是一个非常复杂原创 2009-06-04 13:35:00 · 3082 阅读 · 2 评论 -
戏说BIOS之CMOS
戏说BIOS之CMOS 1. Introduction CMOS全称为complementary metal oxide semiconductor, 翻译成中文就是互补金属氧化物半导体,它是由一颗小的纽扣电池供电的128/256 bytes ram(现在的chipset通常提供256 bytes或者更大的空间)。它主要用于存放RTC以及一些oem的系统配置信息,所以除了原创 2009-06-04 13:41:00 · 7865 阅读 · 7 评论 -
戏说BIOS之Beep
戏说BIOS之Beep 1. Introduction 大凡用过电脑的朋友都应该听到过BIOS的报警声,有时 PC开机的时候就会听到嘀的一声,有过修理PC经验的话就更清楚了“一短内存刷新失败,二短内存校验错误,一长三短内存错误,一长八短显示错误”等等诸如此类,可能各家的BIOS定的规则不同,但目的都是通过报警音获悉系统运行状况,找出病灶对症下药(有点像中医诊断中“望闻问切原创 2009-06-18 15:43:00 · 6324 阅读 · 5 评论 -
戏说BIOS之PCI SCAN
戏说BIOS之PCI SCAN 1. Introduction PCI由intel公司在1990年前后开发的,后续经过若干年的发展以及标准化,它已然成为server&pc上的标准总线。PCI以其出色的设计以及不错的通信速率在计算机领域攻城掠地,不断的取代诸如MCA,ISA,EISA,VESA,NuBus等传统总线。PCI相对于传统总线有非常多的优点,如:1.它是数据总线和地址原创 2009-06-30 16:09:00 · 12662 阅读 · 14 评论 -
戏说BIOS之Clock Generator
戏说BIOS之Clock Generator 1. Introduction Clock Generator是主板上面一颗极为重要的IC,说它极为重要一点都不为过,因为Clock generator负责提供主板上的clock, 一旦Clock Generator除了问题,板子基本上就完蛋了。Clock generator供给的clock部件有CPU clock,PCI c原创 2009-07-09 10:11:00 · 9837 阅读 · 13 评论 -
GOP Overview
Agenda•VGA HW•VBIOS Background•Why GOP ?•GOP Technical Concept•BIOS Consideration•SummaryGOP Overview原创 2013-08-04 15:32:00 · 3971 阅读 · 0 评论 -
VA_ARG IN EFI
VA_ARG IN EFI1. Introduction 可变参数其实是标准C语言一个内建的功能,它和EFI本身并没有太多关系。但是它在EDK中有重新实现和使用,而且我们家的code base使用频繁,很多oem callback都使用了可变参数以此获得函数格式的统一以及参数传递的灵活性。所以我就提一下可变参数的实现,希望对Legacy BIOS转过来的以及对C不是很熟悉的朋友有所帮助原创 2009-10-22 14:54:00 · 2990 阅读 · 8 评论 -
MSI (Message Signaled Interrupts)
之前有提到因功能需求的增加,越来越多的PCI/PCIE设备被加入进来,导致中断资源的缺失。后来就出现了IRQ Routing 以及MSI等技术手段用于解决这些问题。看上去MSI较通常使用Interrupt Pin的方式比较起来似乎有优势,MSI是通过向Host发MSG的方式产生IRQ request,再送达Host/PCI Bridge之前它和普通的Memory Write并没有什么区别,Host收到以后再将该Memory Write转化成Interrupt送抵各个CPU,传统使用Interrupt Pin原创 2010-11-02 16:16:00 · 14350 阅读 · 4 评论 -
T-state
CPU在C0状态下有两种手段降低功耗的方法,其一是之前介绍过的P-state,另一个就是T-state。T-sate全称就是Processor Throttling States,它为OSPM提供了一种通过降低Processor Performance进而降低系统负载和温度的能力,听上去可能和P-state很像,其实是有区别的,P-state通过调整CPU VID电压进而影响CPU的工作频率的方式调整系统系能,而T-state则是通过调整单位时间内CPU Clock On /(Clock On + Cloc原创 2010-10-01 20:19:00 · 7896 阅读 · 0 评论 -
WMIACPI.SYS
WMIACPI.SYS1. WMI Concept WMI全称Windows Management Instrumentation是一种管理计算机系统的方式。它是微软基于WBEM的实现,WMI希望为系统管理以及分布式数据描述提供一种模型,并且允许使用基于COM的user mode API对系统部件进行访问、管理、控制。 2. WMIACPI.SYS原创 2009-05-22 17:21:00 · 11285 阅读 · 7 评论 -
PIC 、APIC(IOAPIC LAPIC)
PIC全称Programmable Interrupt Controller,通常是指Intel 8259A双片级联构成的最多支持15个interrupts的中断控制系统。APIC全称Advanced Programmable Interrupt Controller,APIC是为了多核平台而设计的。它由两个部分组成IOAPIC和LAPIC,其中IOAPIC通常位于南桥中 用于处理桥上的设备所产生的各种中断,LAPIC则是每个CPU都会有一个。IOAPIC通过APICBUS(现在都是通过FSB/QPI)将中原创 2010-10-07 19:35:00 · 21739 阅读 · 2 评论 -
EFI Protocol VS C++
EFI Protocol VS C++1. Introduction Protocol是EFI引出的新概念,翻翻EDK就会发现与protocol相关的code散落在EFI的各个角落,大到host bus driver,小到Hello Word App都和protocol 脱不了关系,因此毫不夸张的说protocol应该是EFI的精髓所在,DXE阶段模块之间的通信都经由protoc原创 2009-07-12 17:24:00 · 5138 阅读 · 5 评论 -
SMM Core Architecture
Agenda •Terminology Introduction•Relative Drivers For SMM Core•TSEG Address Calculation•Flow Chart Of Building SMM Core•SMM Driver原创 2011-07-06 19:22:18 · 6546 阅读 · 9 评论