自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Dig into computer system.

每一个考验、问题、错误,有一天都会变成美丽的玫瑰花瓣,就像枝干上都是刺,痛苦会导向光明,变成美丽。

  • 博客(59)
  • 资源 (16)
  • 收藏
  • 关注

原创 AHCI Big View

2014-08-14 16:07:11 3571

原创 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 5845

原创 Debug Tips

前一段时间看一个BIOS的bug,当时已经可以确定system hang有时会hang在一个driver里面,为了能够narrow down到具体的某个函数的某一行 所以就需要加入一些debug message。一开始我就在每个函数里面DEBUG这个函数的名称,或者当前在做什么之类的字符串,可是加了几个函数就烦了,实在是太多了,就算是copy一下改个字符串也是相当费劲后来就想到了下面的做法:

2014-03-04 17:31:46 3399 1

原创 GOP Overview

Agenda•VGA HW•VBIOS Background•Why GOP ?•GOP Technical Concept•BIOS Consideration•SummaryGOP Overview

2013-08-04 15:32:00 3894

原创 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 4465

原创 Intel GMA DVM SVM SSM In XP Vista Win7

Intel has DVMTspecs for WinXP & Vista & Win7 (No Win8)

2013-07-19 15:52:32 3099

原创 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 5240

原创 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 6461 9

原创 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 3811 1

原创 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 4765 4

原创 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 5993 3

原创 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 14204 4

原创 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 14209 4

原创 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 21380 2

原创 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 7719

原创 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 14346 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 18317

原创 Cache As Ram

Cache又称之为高速缓存,是为了弥补CPU和主存之间逐渐增大的速度上的差距 而被迫在两者之间加入的一个小的SRAM。现代处理器上通常都会有三级或者是四级缓存,这部分高速缓存通常被集成在CPU上,这些高速缓存也就是通常所讲的L1 L2 L3…。Cache的工作原理主要是基于两个原因:a).现代计算机存储体系的山状结构,在山尖的是最快的存储设备当然它的价格也最贵(如Cache),山底的就是容量最大 最慢的存储设备(如硬盘)。b).计算机对数据的访问有一个局部性的原理,这次被引用过的数据可能过一会还会被频繁的用

2010-09-05 18:14:00 7264 2

原创 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 12680 2

原创 减少Post Time

最近有个project需要降低Post Time,我花了些时间去调整code,最终达成目标。最近发现可能是年纪大了,记性狂插:(,遂决定记录一下,以备后用。总结了一下,主要做了以下的工作:1.调整SEC阶段CAR,code stack & data stack size,提升SEC阶段及PEI阶段的性能,降低时间。2.如果CPU支持P-State,在进PEI之前先将CPU调整的最大的per

2010-04-30 22:18:00 4895 3

原创 IGD Display Switch

IGD Display Switch 1.  Introduction IGD OpRegion是intel为了改善传统的Integrated Graphics Driver和BIOS之间的通信机制即SMI、INT10存在的缺陷(SMM mode有可能会影响OS的稳定性,Int 10则有可能受限于OS),而引入的一种新的接口。它使用SCI取代传统的SMI机制,可谓取其精华,去其糟粕

2009-12-19 11:18:00 8003 3

原创 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 2931 8

原创 CONTAINING_RECORD IN EFI

CONTAINING_RECORD IN EFI EFI BIOS几乎全部用C完成,它几乎将C语言的各种技巧发挥到了极致。C的精髓泰半是指针,另外宏也是非常值得称道的。程序员对于宏的评价可谓褒贬不一,有人说它是万恶之源,有人则赞其为一把利刃。我个人觉得运用之妙,存乎一心,宏不是万能的,但是有一些场合使用宏确实可以大大的提高程序的可读性,有些跨平台的特性离开了宏还真是不行。_CR是EFI之中

2009-10-06 13:45:00 7582 7

原创 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 5091 5

原创 戏说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 9646 13

原创 戏说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 12542 14

原创 戏说BIOS之Beep

戏说BIOS之Beep 1. Introduction      大凡用过电脑的朋友都应该听到过BIOS的报警声,有时 PC开机的时候就会听到嘀的一声,有过修理PC经验的话就更清楚了“一短内存刷新失败,二短内存校验错误,一长三短内存错误,一长八短显示错误”等等诸如此类,可能各家的BIOS定的规则不同,但目的都是通过报警音获悉系统运行状况,找出病灶对症下药(有点像中医诊断中“望闻问切

2009-06-18 15:43:00 6197 5

原创 戏说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 5920 1

原创 戏说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 7744 7

原创 戏说BIOS之Hello BIOS

戏说BIOS之Hello BIOS          “我所知道的EC”系列基本结束了,现在我终于可以有空玩一玩BIOS了。可是需要特别强调的是我是一名EC而不是BIOS,所以我看BIOS的视角可能会不够专业,也不够正统,这也是为什么我将这个系列取名为”戏说BIOS”的原因。可能有些朋友会觉得我不务正业,身为EC却去玩什么BIOS(呵呵…我本来就是不务正业J),我觉得PC本身是一个非常复杂

2009-06-04 13:35:00 3038 2

原创 我所知道的EC====>Uart

我所知道的EC====>Uart 1. Introduction      “没有输出之前调试是一门艺术,有了输出以后调试就是一门技术!”这句话准确的道出了调试程序时能够查看运行状况和环境信息的重要性;尤其在FW环境下debug手段非常有限,uart是几乎所有FW都会采用的debug方式。Uart全称是 Universal Asynchronous Receiver/Transmi

2009-05-25 14:50:00 5162 16

原创 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 11127 7

原创 TETRIS

TETRIS 大概一年半以前闲着无聊,于是就写了一个俄罗斯方块自娱自乐,程序运行如下图1所示: 图 1  完整的source code可以在这里下载。该程序使用WTL实现的,代码本身非常简单,无非是一些碰撞,变形等情况的判断调整。比较有意思的是程序使用了Factory Method用于创建方块,控制方块的变形。创建方块部分的设计类图如下所示:  

2009-05-20 09:33:00 1783

原创 4KBytes Bin File Editor

4KBytes Bin File Editor      前一段时间code base将常量独立出来统一放到一个4K bytes的二进制文件中,这样就隔离了变化,降低代码护,修改的负担了。以往的做法这些常量都散落在代码之中,一旦有需求变更就要搜索这些变更的部分到处改代码,经常会漏改某一些地方后面测试就会出bugL.新的做法就可以有效的避免上述情况了,通过一个4Kbytes的文件将它们统一起

2009-05-18 14:52:00 1761 2

原创 ECBACK.SYS

ECBACK.SYS      最近工厂PE端需要一堆测试程序,这些程序主要是用于测试EC的各种功能如:测试风扇,测试电池,测试键盘等等。而且要求通吃vista,xp,winpe。我起初建议使用wmi acpi实现,可是发现wmi acpi在winpe下无法工作。迫于无奈只有实现一个IO port的driver,然后AP透过EC的back door 存取EC XRAM&REG,只有这个方法

2009-05-13 17:17:00 2136 7

原创 AC In/Out OS Slow Response

AC In/Out OS Slow Response 1. Phenomenon          手上一个超薄NB的案子DQA报了这样一条bug:频繁的插拔AC,vista右下角的power icon有时反应很慢,AC插拔过后有时需要等几秒或十几秒才发现power icon有变化。Power icon指的是下图红色圆圈标出的部分: 图 12. Why???

2009-05-08 15:50:00 2870 4

原创 我所知道的EC====>SPI

我所知道的EC====>SPI 1.Introduction      SPI 全称为Serial Peripheral Interface Bus即串行外围总线。它是由Motorola制定的四线式全双工的同步串行数据通信标准。spi允许mcu和各种外围设备进行全双工的串行通信。常见的spi device有flash rom,触摸屏,LCD等。它有比较高的传输速率,传输速度通常可以

2009-05-05 13:07:00 13974 12

原创 Hotfix Check

Hotfix Check Why need this?      在做NB专案的过程中,经验发现微软的hotfix有时真的很有效。有些bug,看了好长时间都没有进展,不经意间发现装上微软的hotfix问题就消失了J。所以在不同部门讨论问题的时候我们通常会新统一check driver的版本以及hotfix,driver的版本我已经写过一篇文章了,这回我介绍如何查看系统的ho

2009-04-20 09:32:00 2102 1

原创 我所知道的EC====>SMBUS

 我所知道的EC====>SMBUS 1. Introduction               Smubs 全称为System management bus即系统管理总线,由Intel于1995年制定,是基于Philips I2C发展而来。它通过两线式接口将各种芯片连接在一起并能够互相通信,传递各种信息。Smbus不仅节省了设备的pin脚,而且更重要的是它为系统提供了更大的扩

2009-04-17 15:59:00 10173 6

原创 S3/S4/S5 Long Run Test

S3/S4/S5 Long Run Test Why need it?  NB研发的工程中,需要跑很多的测试项目,其中long run S3/S4/S5就是非常重要的测试项目。而且对于测试结果非常看重,一般long run测试fail就没法出货。常规的测试方法就是10~20台机器测试S3/S4/S5 1000 cycle,如果fail率在万分之几就有可能要挂了。于是我就

2009-04-14 17:07:00 15685 4

The Unabridged Pentium 4 IA32 Processor Genealogy

MindShare关于Intel Pentium 4技术内幕最好的技术文档。对于底层程序员是不可多得的好书。

2020-11-25

gop overview

Agenda •VGA HW •VBIOS Background •Why GOP ? •GOP Technical Concept •BIOS Consideration •Summary

2013-08-04

EFI Performance Monitor

EFI Performance Monitor

2011-06-27

clock generator

read via clock gen data by read block protocol

2009-07-09

PCI SCAN tools Like RU to scan pci device

BIOS PCI SCAN INT1A RU Like tools to scan pci device and show device configuration space

2009-06-30

BEEP BIOS 报错声音

学习如何操纵8253/8254以及61hport实现BIOS中的报错音。

2009-06-18

cmosdump.exe

cmosdump tool used to dump cmos registers. just a practice programe for writing asm code and study cmos ram back format.

2009-06-04

4KBytes Bin File Editor

EC4KTool.exe 4KBytes Bin File Editor used VC2005 to compile.

2009-05-18

windows 2000 device driver book.pdf Microsoft.Press.Microsoft.Windows.Internals.Fourth.Edition.Dec.2004.internal.Fixed.eBook-DDU.chm Windows文件系统过滤驱动开发教程(第二版).pdf 天书夜读.pdf programing windows driver model 2.pdf programing windows driver model 2's sour

windows 2000 device driver book.pdf Microsoft.Press.Microsoft.Windows.Internals.Fourth.Edition.Dec.2004.internal.Fixed.eBook-DDU.chm Windows文件系统过滤驱动开发教程(第二版).pdf 天书夜读.pdf programing windows driver model 2.pdf programing windows driver model 2's sour

2009-05-15

BC31 c/c++ complier

BC31 c/c++ complier 很好用的工具,支持386指令集。

2009-05-15

ECBACK.SYS IO PORT DRIVER

ECBACK.SYS IO PORT DRIVER DDK WDK

2009-05-13

myflash.rar

BIOS flash tool used to stuy how to operat spi bus

2009-05-08

S3/S4/S5 long run test tool

S3/S4/S5 long run test tool

2009-04-15

keyboard set1 scancode test tool

Used to test keyboard set1 scancode @author:peterhu@Version 1.0 Copyright(C) LGPL [ESC] to Quit

2009-04-08

NBKB(笔记本电脑关闭内部键盘的tool)

笔记本电脑关闭内部键盘的tool: Ctrl+l disable internal keyboard. Ctrl+u enable internal keyboard. NOTE: disable internal keyboard以后,要使用 usb keyboard 按下 Ctrl+u 才能将 internal keyboard enable. 该tool使用winio完成,NBKBSetup是安装文件 其余部分是source code。

2008-12-23

俄罗斯方块

该程序是我学习wtl的一个练习程序,纯粹好玩而已,希望能改您带来帮助。

2007-11-19

空空如也

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

TA关注的人

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