- 博客(70)
- 资源 (7)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 【我所认知的BIOS】系列blog整理 1.23.2016.zip
这几年来,蛮多小伙伴都给我发邮件拿PDF版本。几年前写的文章格式什么的实在是太粗糙。最近我把所有的文章都整理了一下。其实该想法已经早就有了,只是最近才开始空闲。现在我把所有的文章整理好了以后上传到了CSDN和百度云盘分享给大家。把附件里面的再贴一遍。
2016-01-23 18:16:35
9123
6
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 .o0博客导读0o. 1/23/2016最后更新
寫在前面 一直以來其實沒有開博的打算,但是今天我發自內心寫這份blog。我是一個工作在工控機廠商的BIOS工程師,在這裡我談談我的寫的原因和目的。原因:主要還是各個前輩影響了我。本身我剛剛從事工作崗位才一年不到的時間,工作于BIOS行業。然而這個行業的資料卻是罕見的少,幾乎在市面上找不到像樣的書籍或者是學習資料。除了從師父那裡獲取信息之外基本上都是看網路上各位前輩的留
2009-05-25 09:33:00
14563
80
原创 【我所认知的BIOS】—> uEFI AHCI Driver(8) — Pci.Read()
社会一直在变,不晓得是不是社会变的太苦开,而我没变所以我反而显得单纯了。办一个居住证,几年前办的以为终于可以一劳永逸的,后来续办的是发现确实不难了。尼玛,上个月去续办还说好,你这快要到期了,下个月来开证明吧。结果我昨天去开证明,一堆的文件甩给我说,不好意思现在流程变了。一切都是按照新办的流程来。好吧,我单纯了。其实在软件和硬件的这个行当里,相对而言还是硬件比较单纯点。软件把硬件封装的比较花里胡哨。那么今天讲的这片文章就是。大家可以好好感受一下。当然在这里的花里胡哨是一种很好的软件架构表现,不才并不是像前面的
2014-06-20 08:56:10
9526
12
原创 【我所认知的BIOS】—> uEFI AHCI Driver(7) — AtaAtapiPassThruSupported
由于宝宝刚刚出生,最近时间比较紧张,原本这篇文章也写好了有一段时间了,但是每天晚上连开机的时间都没今天才更新上来。我已经邀请到几位我的好朋友加入到我的行列中来写uEFI的东西,他们分别会负责其他module的撰写。以后会专门说明各个部分的作者。没想到呀,局部变量就那么5个,居然里面牵扯的定义和概念有那么多,足足扯了一篇文章。下面的这篇文章。我预计也不简单,函数一进去会调用到uEFI的常用boot service里面的一些库函数。
2014-06-18 11:27:28
5212
2
原创 【我所认知的BIOS】—> uEFI AHCI Driver(6) AtaAtapiPassThruSupported的局部变量们
前面5个篇文章把EFI_DRIVER_BINDING_PROTOCOL这个protocol的一个实例(instance)AHCI driver的安装做了一个比较详细的介绍。其实这个driver到目前为止只干了一件事情,那就是把这个protocol安装到对应的ImageHandle上去。对于这个driver在BDS的怎么运行,原理上讲就是先调用supported()然后再调用start(),最后运行stop()来卸载driver。最近听了不少同事说去泰国旅游多么多么爽,后来了解了一下确实是不错的选择。恰好还欠
2014-05-07 08:49:39
5645
1
原创 【我所认知的BIOS】—> uEFI AHCI Driver(5) — 第一个protocol终于要开始安装了
文章对EFI_DRIVER_BINDING_PROTOCOL的每个 成员的讲解是重点。它是我们遇到的第一个uEFI里面的protocol所以我都尽量把它讲的够细。这一篇文章开始就真正进入到install protocol的函数里面去了。拭目以待吧~
2014-04-28 10:09:59
6161
原创 【我所认知的BIOS】—> uEFI AHCI Driver(4) — 第一个Protocol真难搞
文章对EFI_DRIVER_BINDING_PROTOCOL的每个 成员的讲解是重点。它是我们遇到的第一个uEFI里面的protocol所以我都尽量把它讲的够细。下一篇文章开始就真正进入到install protocol的函数里面去了。
2014-04-24 08:49:33
6882
原创 【我所认知的BIOS】—> uEFI AHCI Driver(3) — 无处不在的protocol
uEFI wasn’t built in a day. 它涉及的很多原理其实是设计的相当好的。具体我没去考证,据说设计uEFI架构的这帮人,都是很牛逼的OS架构师。他们对软件架构的理解相当深刻,不乏Linux精英。所以,在uEFI的骨子里面实际上流着的是Linux这类OS级别的血。不仅架构是这样,在coding的实现上面更是看的出来。用C语言来实现了面向对象等这些技巧信手拈来,用所谓的各种protocol来交互更是层出不穷。Code的思路层层递进,高级coding的技巧无处不在,在后面的文章会婉婉道来。
2014-04-16 10:08:20
5706
原创 【我所认知的BIOS】—> uEFI AHCI Driver(2) — 原来开始也不那么简单
真是不好意思,上周由于家里有急事,所以离开上海比较匆忙都没来得及更新就回家了。这周补上两篇。uEFI这个架构,我觉得它确实挺好的。比较起legacy BIOS来说,uEFI有非常完整的文档说明。所有的功能和概念都说的非常明确,当然实际上就是一种对协议的阐明。好吧,原来这就是protocol也就是我们说的最多的协议。比如TCP/IP这两个缩写词的P其实就是protocol的缩写。这一章节紧接上一节,编译完了以后,首先我们想到的应该是程序的入口在哪里对吧?显然是上一节说了的ENTRY_POINT – Ini
2014-04-10 09:25:55
8650
原创 【我所认知的BIOS】—> uEFI AHCI Driver(1) — uEFI开始其实不是很复杂
有人问过没?啥叫driver?不就是司机么?其实这一点都没错,driver的中文意思却是有司机的意思。只是在英文的世界里面,他们也有一词多义,但是他们的根本意思都是一样的。你看司机把一堆冷冰冰的铁块块就这么驾驶起来,让它动起来了。汽车还能够在司机的驾驶操作下面完成多很很让人惊讶的事情,比如前空翻呀,侧空翻呀,或者自燃呀什么的。。。反正就是感觉很厉害。软件领域的driver完全就是这个意思,软件写成的一堆代码模拟出了一个司机这样的一个虚拟人来,在特定的时候让硬件按照规定好的步骤去做事,所以就叫做驱动,让一堆
2014-03-24 15:56:07
10197
原创 【我所认知的BIOS】—> uEFI 开始
当年我出道的时候,uEFI还没流行起来。现在uEFI却已经是主流的BIOS了。原本三年前就说要写这个uEFI的部分的,那会儿由于工作和学业等种种原因落下了。从今天起,我就补上了。目前是打算,几乎尽量做到每一行做注释,当然如果是太简单的,连傻瓜都看得懂的话,那我就略过了。uEFI这个东西现在很流行,如果windows再不给力点,估计这就是最后一个BIOS了。这个架构很大也很全,几年前我还是从legacy BIOS转过来的时候,是蛮艰难的一个过程。所以深知当时初学者时的那种困难感。(随着积累的增多,年龄的增大
2014-03-17 10:16:01
10847
2
原创 【我所认知的BIOS】—> Advanced Configuration and Power Interface 原理(实践部分)
感觉还是要引用一下前面一篇文章的开场白“ACPI是一个内容很丰富的综合性的规范,从外表看上去不得不承认感觉很神秘。究其根本其实还是建立在X86架构和应用的基础之上。大神其实是这样的人,他能够把很复杂的东西然后描述的很简单,很容易理解。这样的我有幸遇到了一些。ACPI的东西,实际上就是控制电脑系统的电源的东西。目的只有一个就是想尽一切办法去省电。由于各家vendor在handle这个事情,所以就事先大家定义好ACPI这个规范。大家都按着定义好的接口去实现,不管哪家siliconvendor,BIOS vend
2014-03-14 08:51:14
5504
3
原创 【我所认知的BIOS】—> Advanced Configuration and Power Interface 原理(软件部分)
感觉还是要引用一下前面一篇文章的开场白“ACPI是一个内容很丰富的综合性的规范,从外表看上去不得不承认感觉很神秘。究其根本其实还是建立在X86架构和应用的基础之上。大神其实是这样的人,他能够把很复杂的东西然后描述的很简单,很容易理解。这样的我有幸遇到了一些。ACPI的东西,实际上就是控制电脑系统的电源的东西。目的只有一个就是想尽一切办法去省电。由于各家vendor在handle这个事情,所以就事先大家定义好ACPI这个规范。大家都按着定义好的接口去实现,不管哪家siliconvendor,BIOS vend
2014-03-03 08:51:49
7337
1
原创 【我所认知的BIOS】—>Advanced Configuration and Power Interface原理(硬件部分)
ACPI是一个内容很丰富的综合性的规范,从外表看上去不得不承认感觉很神秘。究其根本其实还是建立在X86架构和应用的基础之上。ACPI这个东西是有那么点点复杂,我也试图尽量说的简单些。后续打算先用三篇文章来在架构上描述硬件、软件、简单的实践部分。最近intel推了一个叫做Minnow的HW open source的硬件平台,而且BIOS是基于UDK的。于是,我筹划着在这个开源的硬件平台上和大家share一下EDK的升级版本UDK。关于ACPI的详细代码注解和更加详细的注释部分(方方面面很多,暂时还没想好按照什
2014-02-24 08:49:10
7460
3
原创 【我所认知的BIOS】-> Cache原理
以前有对Cache的架构研究,最近由于看了一些ARM上相关的cache的原理,随便把x86和ARM的cachestudy写成文章share出来吧。一晃都今天才上来。也说说吧,这大约三年里面变化蛮多的。前面两年是由于公司的要求的原因没有更新。后来由于一直在忙于研究生的学业,没时间更新。再后来就开始着手准备重操旧业,把以前study的那些尽量用比较简单的语言写出来和大家分享分享。X86实际上是一个夕阳
2014-02-15 16:25:38
5765
3
原创 _=我回来了=_
~目前失业在家中~这两年果真是太忙了,忙的实在是没时间更新我的blog。童鞋们,从今天开始我正式回归啦。而且已经不忙了。在未来的时间里面,我会focus在EFI的EDK和UDK的相关讨论中。目前的想法:EDK从SEC-> PEI-> DXE-> BDS-> SHELL几个大块来讨论。中间穿插一些我认为比较好的EFI亮点来和大家讨论。其中有些文章我是有以前就写好,大部分还要重新写。O
2012-11-22 09:01:53
5083
13
原创 【我所认知的BIOS】->深入理解IRQ7
这篇文章的线索是因为偶然间发现自爱DOS下面,IRQ7对应的中断服务程序(ISR)只有一个Iret.那我不经会问,这是为什么呢?因为在BIOS下面IRQ7是有对应的ISR的。
2010-12-13 20:24:00
9414
原创 【我所认知的BIOS】->PCI enumerate
这篇文章本是很久以前写的,最近感觉比较懒惰今天才贴出来。近两年开始EFI越来越流行了,可以说逐渐有颠覆legacy bios的趋势。处于对知识的渴望和追求我也最近对EFI有了一些简单的了解,我打算在后续的文章中做一个关于EFI的专题,基于EDK来写blog应该不错。毕竟它是开源的嘛,如果以AMI的EFI来写文章我估计可能会涉及到商业机密的问题。希望能像网上那个《linux的那些事儿》那样做成一个一个的小专题。也希望如果有兴趣的朋友或者BIOSER能够和我联系,咱们一起研究哈。期待您的加入。。。先说说我的打算
2010-10-06 23:03:00
24077
6
转载 如何使用WinDBG跟踪调试ASL/ACPI?
去年在研究ACPI的时候我有用windbg来分析一下ACPI methods,当时配置windbg的时候参考了几位前辈的文章,今天也转其中一篇过来以做备份。原地址是:http://blog.csdn.net/EFIBIOS/archive/2007/03/12/1526763.aspx
2010-08-24 09:20:00
10732
4
原创 【我所认知的BIOS】->反汇编BIOS之Bootblock(11)
最近一段时间心态不太好,所以blog也没有更新。现在总算是调整过来了,目前我是这么打算,反汇编的文章暂时就写到bootblock这里了。至于如果还有兴趣研究POST部分的爱好者的话,我们可以私聊。后续文章准备写些比较深入点的文章,比较细节点的分析等等。希望大家给点建议,也希望我们BIOS ren共同进步~并且我准备把这个blog搬到BIOS联盟上去。毕竟那面比较专业一点。
2010-08-24 09:01:00
7849
6
原创 【我所认知的BIOS】->反汇编BIOS之Bootblock(10)
当内存检测完毕,一切准备就绪的时候,award bios就会准备把bios从ROM里copy到实际的RAM中来。当然在做这些之前还做了其他的动作,比如说操作timer呀什么的,看上面的代码就好,不赘述了。从_F000:E439这行开始,bios先去在F000段搜索是否有压缩的字样(当然肯定是有啦。)找到后,把BIOS从ROM里面copy出来,分别放到了10000-2FFFFH(E000和F000分别对应1000和2000)对应的RAM里面,同时也备份了一份到180000H-19FFFFH里面。然后用一个
2010-06-28 09:09:00
8147
8
原创 【我所认知的BIOS】->反汇编BIOS之Bootblock(9)
为什么会有bootblock和非bootblock这么一说呢?其实就是因为有没有真正的内存可以用的区别。这个章节里我们一起来看看经过之前那些章节的讨论后,BIOS在初始化memory之前会做的一些动作。(稍微比较琐碎点,看起来比较枯燥。)Memory initial这个函数里面,会再做一些前期的准备工作。比如8259的中断控制器的初始化,PCIE的初始化,等等然后进入到intel提供的MRC里面去。那么这节就讲讲这个函数里面具体接触的东西。
2010-06-24 20:39:00
9942
3
原创 【我所认知的BIOS】->反汇编BIOS之Bootblock(8)
Memory对于一个计算机而言,很明显是非常非常重要的一个东西。没有他的话基本上电脑就要脑瘫了,(虽然也可以走路,但是和本山大叔小品里面的那些特殊人士差不多了,要么必须用拐,要么必须用轮椅。。。哈哈,扯远了。)在BIOS里面考虑的比较周全,为了能够万无一失地确保能够把memory初始化的工作做好,BIOS用了两套方案来初始化内存。一种方法非常严谨,校验和呀其他什么的都很齐全。另外一种方法就是直接进入到memory初始化的函数中去。前者确实是严谨,但是越严谨说明要求的条件就越多,条件越多就越有可能出错从而导致
2010-06-24 20:16:00
5571
6
转载 堆和栈的区别(转过无数次的文章)
一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的 全
2010-06-11 09:51:00
4439
4
原创 【我所认知的BIOS】->反汇编BIOS之Bootblock(7)
【我所认知的BIOS】->反汇编BIOS之Bootblock(7)-- Memory initial 之前的一些初始化DMA,8259By Lightseed5/20/20101、BIOS的主流程为什么会有bootblock和非bootblock这么一说呢?其实就是因为有没有真正的内存可以用的区别。这个章节里我们一起来看看经过之前那些章节的讨论后,BIOS在初始化memory之
2010-05-20 09:26:00
6526
13
原创 【我所认知的BIOS】->反汇编BIOS之Bootblock(6)
【我所认知的BIOS】->反汇编BIOS之Bootblock(6)--关于S3与Normal reset BIOS的走向By Lightseed5/18/2010一、BIOS的主流程我们的BIOS主流程如图1所示,上一个章节我们的BIOS执行到了记录CPU type的东东,当时我们就发现其实在Record_CPU_type的前面还有其他函数。那么我们这节就来单独讨论这个问题。这
2010-05-18 09:03:00
4365
3
原创 【我所认知的BIOS】->反汇编BIOS之Bootblock(5)
【我所认知的BIOS】->反汇编BIOS之Bootblock(5)--Store CPU type to CMOSBy Lightseed5/18/2010一、BIOS的主流程从这章开始,我在每章的开头说把目前BIOS的主流程进行到了哪一步放在最前面,这样有助于理解整个Award BIOS的流程。到目前为止,我们的BIOS主流程如图1所示,图1 BIOS主流程
2010-05-18 08:59:00
4576
原创 【我所认知的BIOS】->反汇编BIOS之Bootblock(4)
【我所认知的BIOS】->反汇编BIOS之Bootblock(4)--initialize Super IOBy Lightseed5/13/2010一、BIOS的主流程到目前为止,我们已经看了两个重要的函数了,也是BIOS的必经之路。如下面的代码片段,BT_CPU_Init和Chipset_Reg_Init_Early我们都详细探讨过,那么随着流程下去,就是讨论SuperIO
2010-05-14 09:24:00
5638
2
原创 【我所认知的BIOS】->反汇编BIOS之Bootblock(3)
【我所认知的BIOS】->反汇编BIOS之Bootblock(3)--initialize some chipset registerBy Lightseed5/13/2010在上一篇中,我和大家探讨了下面代码中的BT_CPU_Init这个函数,它主要是一些特殊CPU的micro code的update。那么我们继续往下走,就会发现初始化chipset寄存器的函数,如_F000:E
2010-05-14 09:15:00
8334
2
原创 【我所认知的BIOS】->反汇编BIOS之Bootblock(2)
【我所认知的BIOS】->反汇编BIOS之Bootblock(2)--CPU micro code updateBy Lightseed5/12/20101、CPU micro code的背景先做个铺垫为什么要在BIOS刚刚开始跑的时候就来讲CPU的micro code。以下引用自网络:;-------------------------------------在十
2010-05-13 09:23:00
8009
4
原创 【我所认知的BIOS】->反汇编BIOS之Bootblock(1)
【我所认知的BIOS】->反汇编BIOS之Bootblock(1)By Lightseed5/12/2010 先说明,我用来反汇编的BIOS bin文件是512KB的。它是研XXX出的一块板子AIMB552主板上的BIOS。呵呵。。。有兴趣的,大家可以买块板子搞里面的BIOS哦。不过,我想这种文件应该只要用AwardFlash都可以dump出来,所以也应该不会侵权。我就在这里和大家
2010-05-13 09:03:00
10408
15
原创 【我所认知的BIOS】->反汇编BIOS之准备工作
【我所认知的BIOS】->反汇编BIOS之准备工作 LightSeed3/11/2010上海 在我们进入反汇编的旅途之前,我想我应该把一些大家应该准备的东西都列一下,只有有了这样的针对性准备嘛,我想我写的文章才更能引起大家的共鸣。我用的主板是915GS+ICH6+Winbond83627HF的主板。Bios也就是用awardflash.exe
2010-03-12 18:08:00
13506
12
原创 【我所认知的BIOS】->反汇编BIOS之‘开始’
【我所认知的BIOS】->反汇编BIOS之‘开始’ LightSeed3/11/2010上海 我想稍微懂点BIOS的人都应该知道,目前blog里面的文章其实都是很基础很基础的东西。说白了呢就是没什么技术含量,说好听点呢,就是对技术的细节理解比较深刻。总之就是只能看看,不能排上实际用途了。不得不又要说一点就是,X86的东西,确实很多很杂,只有把这些小的
2010-03-11 14:51:00
7657
15
转载 DDR2 DIMM SPD Definition
DDR2 DIMM SPD Definition 最近在menlow平台上看一个关于DDR2的bug,在兼容某家的800HZ内存的时候会出现不开机的情况,后来也详细研究了一下award的memory initialization的部分。下面这篇文章感觉把东西都总结出来,挺不错的。本文的原地址是: http://www.simmtester.c
2010-02-10 10:49:00
12145
1
原创 【我所認知的BIOS】->汇编语言之宏汇编2
【我所認知的BIOS】->汇编语言之宏汇编2By LightSeed2010-2-3 在上一节详细讲了宏汇编的理论,那这节来聊聊我在仿写ADU的时候用的一些宏汇编的例子吧。有了下面这个串宏汇编,那么程序的可维护性就高了很多,在添加或者删除这个工具的功能的时候,就显得格外简单和高级语言写出来的工具的健壮性可媲美。这也是我对这个工具感觉做的最好的地方之一,和大家share一下。(不过这
2010-02-03 08:53:00
4149
原创 【我所認知的BIOS】->汇编语言之宏汇编1
【我所認知的BIOS】->汇编语言之宏汇编1By LightSeed2010-2-2 其实早就想写点关于汇编语言的文章了,但是最近感觉比较累,自己也比较懒今天才动手写。哎。。。真是身心俱疲,房价涨了,小菜也涨了,妹儿的要求也涨了,但是哥的工资还是不涨。这社会我快混不下去了。但是想想做男人嘛,有什么大不了的。做人,最重要的是心态要好,要稳。1、我体会到的C和汇编目前我还做的le
2010-02-02 12:34:00
6436
6
原创 关于插图
由于51.com封了外链图片,从而导致我的blog图片显示不正常。最近查找了不少的网站,似乎都没有一个比51.com好的。(csdn的相册着实让人很郁闷,我传了一个小时才传了两张图片。) 所以在这里也希望网友们,能给我一个建议,看看哪个网站上传图片和共享图片比较不错哦?thanks! 2010-2-5现在图片均已经恢复正常了,大家可以放心浏览。
2010-01-18 10:18:00
2247
11
原创 【 我所認知的BIOS】-->Cache(3)
【 我所認知的BIOS】-->Cache(3)LightSeed12/14/2009Go on。。。这章详细讲cache的操作过程。 9、详细剖析memory的读操作下面的一系列的演示是在486的基础上,并且L1 read miss的情况下。好,我们来开始:Processor在执行MOV AL,[4025]加上pr
2009-12-14 09:38:00
6040
4
原创 【我所認知的BIOS】-->Cache(2)
【我所認知的BIOS】-->Cache(2)LightSeed 2009-12-7紧接上一篇,go on。。。5、Level 2 cache5.1 L2的优点(从此节往下,我都是拿486 CPU来做例子说明。)关于L1的介绍,我想就不用多说了,它就是在CPU的内部,比较小的一个cache。在486的的CPU上引入了Level 2 cache的概念。那么我们就来看
2009-12-07 08:42:00
5219
1
原创 【我所認知的BIOS】-->Cache(1)
【我所認知的BIOS】-->Cache(1)LightSeed 2009-11-12 在文章前面我想说一下,CPU的cache是一个很有趣的部件,对它研究我目前也还仅仅处于486架构上的研究。因为我手上也就只找到了《80486 System Architecture》这本书(这本书里面讲的非常非常详细,我个人很喜欢这样的书籍)。据说P4 CPU也有这样一本书,不
2009-12-03 13:18:00
5333
2
【我所认知的BIOS】系列blog整理 1.23.2016.zip
2016-01-23
ACPI tables 反汇编
2014-01-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人