我所认知的BIOS
文章平均质量分 76
lightseed
我的邮箱:lightseed@outlook.com
展开
-
【我所认知的BIOS】—> uEFI AHCI Driver(8) — Pci.Read()
社会一直在变,不晓得是不是社会变的太苦开,而我没变所以我反而显得单纯了。办一个居住证,几年前办的以为终于可以一劳永逸的,后来续办的是发现确实不难了。尼玛,上个月去续办还说好,你这快要到期了,下个月来开证明吧。结果我昨天去开证明,一堆的文件甩给我说,不好意思现在流程变了。一切都是按照新办的流程来。好吧,我单纯了。其实在软件和硬件的这个行当里,相对而言还是硬件比较单纯点。软件把硬件封装的比较花里胡哨。那么今天讲的这片文章就是。大家可以好好感受一下。当然在这里的花里胡哨是一种很好的软件架构表现,不才并不是像前面的原创 2014-06-20 08:56:10 · 9564 阅读 · 12 评论 -
【我所认知的BIOS】->深入理解IRQ7
这篇文章的线索是因为偶然间发现自爱DOS下面,IRQ7对应的中断服务程序(ISR)只有一个Iret.那我不经会问,这是为什么呢?因为在BIOS下面IRQ7是有对应的ISR的。原创 2010-12-13 20:24:00 · 9447 阅读 · 0 评论 -
【我所认知的BIOS】->PCI enumerate
这篇文章本是很久以前写的,最近感觉比较懒惰今天才贴出来。近两年开始EFI越来越流行了,可以说逐渐有颠覆legacy bios的趋势。处于对知识的渴望和追求我也最近对EFI有了一些简单的了解,我打算在后续的文章中做一个关于EFI的专题,基于EDK来写blog应该不错。毕竟它是开源的嘛,如果以AMI的EFI来写文章我估计可能会涉及到商业机密的问题。希望能像网上那个《linux的那些事儿》那样做成一个一个的小专题。也希望如果有兴趣的朋友或者BIOSER能够和我联系,咱们一起研究哈。期待您的加入。。。先说说我的打算原创 2010-10-06 23:03:00 · 24217 阅读 · 6 评论 -
【我所认知的BIOS】->反汇编BIOS之Bootblock(11)
最近一段时间心态不太好,所以blog也没有更新。现在总算是调整过来了,目前我是这么打算,反汇编的文章暂时就写到bootblock这里了。至于如果还有兴趣研究POST部分的爱好者的话,我们可以私聊。后续文章准备写些比较深入点的文章,比较细节点的分析等等。希望大家给点建议,也希望我们BIOS ren共同进步~并且我准备把这个blog搬到BIOS联盟上去。毕竟那面比较专业一点。原创 2010-08-24 09:01:00 · 7880 阅读 · 6 评论 -
【我所认知的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 · 6556 阅读 · 13 评论 -
【我所认知的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 · 4607 阅读 · 0 评论 -
【我所认知的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 · 4402 阅读 · 3 评论 -
【我所认知的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 · 5674 阅读 · 2 评论 -
【我所认知的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 · 10444 阅读 · 15 评论 -
【我所认知的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 · 8364 阅读 · 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 · 8047 阅读 · 4 评论 -
【我所认知的BIOS】->反汇编BIOS之Bootblock(9)
为什么会有bootblock和非bootblock这么一说呢?其实就是因为有没有真正的内存可以用的区别。这个章节里我们一起来看看经过之前那些章节的讨论后,BIOS在初始化memory之前会做的一些动作。(稍微比较琐碎点,看起来比较枯燥。)Memory initial这个函数里面,会再做一些前期的准备工作。比如8259的中断控制器的初始化,PCIE的初始化,等等然后进入到intel提供的MRC里面去。那么这节就讲讲这个函数里面具体接触的东西。原创 2010-06-24 20:39:00 · 9986 阅读 · 3 评论 -
【我所认知的BIOS】->反汇编BIOS之Bootblock(8)
Memory对于一个计算机而言,很明显是非常非常重要的一个东西。没有他的话基本上电脑就要脑瘫了,(虽然也可以走路,但是和本山大叔小品里面的那些特殊人士差不多了,要么必须用拐,要么必须用轮椅。。。哈哈,扯远了。)在BIOS里面考虑的比较周全,为了能够万无一失地确保能够把memory初始化的工作做好,BIOS用了两套方案来初始化内存。一种方法非常严谨,校验和呀其他什么的都很齐全。另外一种方法就是直接进入到memory初始化的函数中去。前者确实是严谨,但是越严谨说明要求的条件就越多,条件越多就越有可能出错从而导致原创 2010-06-24 20:16:00 · 5604 阅读 · 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 · 8182 阅读 · 8 评论 -
_=我回来了=_
~目前失业在家中~这两年果真是太忙了,忙的实在是没时间更新我的blog。童鞋们,从今天开始我正式回归啦。而且已经不忙了。在未来的时间里面,我会focus在EFI的EDK和UDK的相关讨论中。目前的想法:EDK从SEC-> PEI-> DXE-> BDS-> SHELL几个大块来讨论。中间穿插一些我认为比较好的EFI亮点来和大家讨论。其中有些文章我是有以前就写好,大部分还要重新写。O原创 2012-11-22 09:01:53 · 5137 阅读 · 13 评论 -
【我所认知的BIOS】—> uEFI 开始
当年我出道的时候,uEFI还没流行起来。现在uEFI却已经是主流的BIOS了。原本三年前就说要写这个uEFI的部分的,那会儿由于工作和学业等种种原因落下了。从今天起,我就补上了。目前是打算,几乎尽量做到每一行做注释,当然如果是太简单的,连傻瓜都看得懂的话,那我就略过了。uEFI这个东西现在很流行,如果windows再不给力点,估计这就是最后一个BIOS了。这个架构很大也很全,几年前我还是从legacy BIOS转过来的时候,是蛮艰难的一个过程。所以深知当时初学者时的那种困难感。(随着积累的增多,年龄的增大原创 2014-03-17 10:16:01 · 10862 阅读 · 2 评论 -
【我所认知的BIOS】系列blog整理 1.23.2016.zip
这几年来,蛮多小伙伴都给我发邮件拿PDF版本。几年前写的文章格式什么的实在是太粗糙。最近我把所有的文章都整理了一下。其实该想法已经早就有了,只是最近才开始空闲。现在我把所有的文章整理好了以后上传到了CSDN和百度云盘分享给大家。把附件里面的再贴一遍。原创 2016-01-23 18:16:35 · 9169 阅读 · 6 评论 -
【我所认知的BIOS】-> Cache原理
以前有对Cache的架构研究,最近由于看了一些ARM上相关的cache的原理,随便把x86和ARM的cachestudy写成文章share出来吧。一晃都今天才上来。也说说吧,这大约三年里面变化蛮多的。前面两年是由于公司的要求的原因没有更新。后来由于一直在忙于研究生的学业,没时间更新。再后来就开始着手准备重操旧业,把以前study的那些尽量用比较简单的语言写出来和大家分享分享。X86实际上是一个夕阳原创 2014-02-15 16:25:38 · 5779 阅读 · 3 评论 -
【我所认知的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 · 7474 阅读 · 3 评论 -
【我所认知的BIOS】—> Advanced Configuration and Power Interface 原理(软件部分)
感觉还是要引用一下前面一篇文章的开场白“ACPI是一个内容很丰富的综合性的规范,从外表看上去不得不承认感觉很神秘。究其根本其实还是建立在X86架构和应用的基础之上。大神其实是这样的人,他能够把很复杂的东西然后描述的很简单,很容易理解。这样的我有幸遇到了一些。ACPI的东西,实际上就是控制电脑系统的电源的东西。目的只有一个就是想尽一切办法去省电。由于各家vendor在handle这个事情,所以就事先大家定义好ACPI这个规范。大家都按着定义好的接口去实现,不管哪家siliconvendor,BIOS vend原创 2014-03-03 08:51:49 · 7358 阅读 · 1 评论 -
【我所认知的BIOS】—> Advanced Configuration and Power Interface 原理(实践部分)
感觉还是要引用一下前面一篇文章的开场白“ACPI是一个内容很丰富的综合性的规范,从外表看上去不得不承认感觉很神秘。究其根本其实还是建立在X86架构和应用的基础之上。大神其实是这样的人,他能够把很复杂的东西然后描述的很简单,很容易理解。这样的我有幸遇到了一些。ACPI的东西,实际上就是控制电脑系统的电源的东西。目的只有一个就是想尽一切办法去省电。由于各家vendor在handle这个事情,所以就事先大家定义好ACPI这个规范。大家都按着定义好的接口去实现,不管哪家siliconvendor,BIOS vend原创 2014-03-14 08:51:14 · 5519 阅读 · 3 评论 -
【我所认知的BIOS】—> uEFI AHCI Driver(2) — 原来开始也不那么简单
真是不好意思,上周由于家里有急事,所以离开上海比较匆忙都没来得及更新就回家了。这周补上两篇。uEFI这个架构,我觉得它确实挺好的。比较起legacy BIOS来说,uEFI有非常完整的文档说明。所有的功能和概念都说的非常明确,当然实际上就是一种对协议的阐明。好吧,原来这就是protocol也就是我们说的最多的协议。比如TCP/IP这两个缩写词的P其实就是protocol的缩写。这一章节紧接上一节,编译完了以后,首先我们想到的应该是程序的入口在哪里对吧?显然是上一节说了的ENTRY_POINT – Ini原创 2014-04-10 09:25:55 · 8662 阅读 · 0 评论 -
【我所认知的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 · 5714 阅读 · 0 评论 -
【我所认知的BIOS】—> uEFI AHCI Driver(4) — 第一个Protocol真难搞
文章对EFI_DRIVER_BINDING_PROTOCOL的每个 成员的讲解是重点。它是我们遇到的第一个uEFI里面的protocol所以我都尽量把它讲的够细。下一篇文章开始就真正进入到install protocol的函数里面去了。原创 2014-04-24 08:49:33 · 6895 阅读 · 0 评论 -
【我所认知的BIOS】—> uEFI AHCI Driver(5) — 第一个protocol终于要开始安装了
文章对EFI_DRIVER_BINDING_PROTOCOL的每个 成员的讲解是重点。它是我们遇到的第一个uEFI里面的protocol所以我都尽量把它讲的够细。这一篇文章开始就真正进入到install protocol的函数里面去了。拭目以待吧~原创 2014-04-28 10:09:59 · 6189 阅读 · 0 评论 -
【我所认知的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 · 5663 阅读 · 1 评论 -
【我所认知的BIOS】—> uEFI AHCI Driver(7) — AtaAtapiPassThruSupported
由于宝宝刚刚出生,最近时间比较紧张,原本这篇文章也写好了有一段时间了,但是每天晚上连开机的时间都没今天才更新上来。我已经邀请到几位我的好朋友加入到我的行列中来写uEFI的东西,他们分别会负责其他module的撰写。以后会专门说明各个部分的作者。没想到呀,局部变量就那么5个,居然里面牵扯的定义和概念有那么多,足足扯了一篇文章。下面的这篇文章。我预计也不简单,函数一进去会调用到uEFI的常用boot service里面的一些库函数。原创 2014-06-18 11:27:28 · 5245 阅读 · 2 评论 -
【我所认知的BIOS】—> uEFI AHCI Driver(1) — uEFI开始其实不是很复杂
有人问过没?啥叫driver?不就是司机么?其实这一点都没错,driver的中文意思却是有司机的意思。只是在英文的世界里面,他们也有一词多义,但是他们的根本意思都是一样的。你看司机把一堆冷冰冰的铁块块就这么驾驶起来,让它动起来了。汽车还能够在司机的驾驶操作下面完成多很很让人惊讶的事情,比如前空翻呀,侧空翻呀,或者自燃呀什么的。。。反正就是感觉很厉害。软件领域的driver完全就是这个意思,软件写成的一堆代码模拟出了一个司机这样的一个虚拟人来,在特定的时候让硬件按照规定好的步骤去做事,所以就叫做驱动,让一堆原创 2014-03-24 15:56:07 · 10215 阅读 · 0 评论 -
.o0博客导读0o. 1/23/2016最后更新
寫在前面 一直以來其實沒有開博的打算,但是今天我發自內心寫這份blog。我是一個工作在工控機廠商的BIOS工程師,在這裡我談談我的寫的原因和目的。原因:主要還是各個前輩影響了我。本身我剛剛從事工作崗位才一年不到的時間,工作于BIOS行業。然而這個行業的資料卻是罕見的少,幾乎在市面上找不到像樣的書籍或者是學習資料。除了從師父那裡獲取信息之外基本上都是看網路上各位前輩的留原创 2009-05-25 09:33:00 · 14601 阅读 · 80 评论 -
【我所认知的BIOS】->反汇编BIOS之准备工作
【我所认知的BIOS】->反汇编BIOS之准备工作 LightSeed3/11/2010上海 在我们进入反汇编的旅途之前,我想我应该把一些大家应该准备的东西都列一下,只有有了这样的针对性准备嘛,我想我写的文章才更能引起大家的共鸣。我用的主板是915GS+ICH6+Winbond83627HF的主板。Bios也就是用awardflash.exe原创 2010-03-12 18:08:00 · 13556 阅读 · 12 评论 -
【我所认知的BIOS】->反汇编BIOS之‘开始’
【我所认知的BIOS】->反汇编BIOS之‘开始’ LightSeed3/11/2010上海 我想稍微懂点BIOS的人都应该知道,目前blog里面的文章其实都是很基础很基础的东西。说白了呢就是没什么技术含量,说好听点呢,就是对技术的细节理解比较深刻。总之就是只能看看,不能排上实际用途了。不得不又要说一点就是,X86的东西,确实很多很杂,只有把这些小的原创 2010-03-11 14:51:00 · 7701 阅读 · 15 评论 -
【我所認知的BIOS】—>實模式&保護模式
【我所認知的BIOS】—>實模式&保護模式LightSeed 2009-6-17 回顧一下blog里的第一篇文章【我所認知的BIOS】—>ADU.EXE,http://blog.csdn.net/lightseed/archive/2009/05/26/4216113.aspx在這篇文章我有提到關於Memory的訪問,在ADU中有關於“real mode”和原创 2009-06-22 12:57:00 · 18521 阅读 · 6 评论 -
【我所認知的BIOS】—>計算機中斷系統(3)
【我所認知的BIOS】—>計算機中斷系統(3)LightSeed 2009-6-16 第三部份其實就是我之前有講的PCI 中斷部份。由於之前對PCI講解的連貫性所以就在那裡就提了。連接如下:http://blog.csdn.net/lightseed/archive/2009/06/01/4233739.aspx那麼我們繼續探討,【我所認知的BIOS】—>原创 2009-06-16 18:20:00 · 15986 阅读 · 1 评论 -
【我所認知的BIOS】—>计算机中断系統(2)
【我所認知的BIOS】—>计算机中斷系統(2) LightSeed 2009-6-10 繼續前一章節。 4、中斷的進階APIC(advanced programable interrupt controller)4.1 何謂 APIC? APIC 是裝置的擴充組合用來驅動 Interrupt 控制器。在目前的建置中,系統的每一個部份都是經由 API原创 2009-06-11 09:40:00 · 18173 阅读 · 2 评论 -
【我所認知的BIOS】—>计算机中断系统(1)
【我所認知的BIOS】—>计算机中断系统(1)LightSeed 2009-6-8 中断有分为硬件中断和软件中断,顾名思义硬件中断是由计算机硬件产生的中断,类推软件中断是由计算机软件产生的中断。举个例子,当键盘有键按下需要CPU处理的时候就会经过8259产生一个中断,这个中断就是硬件中断。键盘是计算机硬件这个是不可否认的哦^.^。DOS中断中的的INT 21H就是软原创 2009-06-08 09:48:00 · 11335 阅读 · 14 评论 -
【我所認知的BIOS】—>Decompression补充
【我所認知的BIOS】—>Decompression补充By LightSeed2009-6-4这篇文章主要是对上一篇文章Decompression的补充,上一篇文章一是考虑到篇幅,二是考虑到还没有谈到反汇编BIOS二进制文件,所以没有讲的很详细。在这篇文章中举个BIOS的例子来详细说明AWxxx code在运行过程中解压缩的过程。(筆者:不管是解壓還是PCI的資源分配我們在掌握的時原创 2009-06-05 09:01:00 · 4525 阅读 · 4 评论 -
【我所認知的BIOS】—>Decompression
【我所認知的BIOS】—>DecompressionBy LightSeed2009-5-22 存在於BIOS的bin檔中的內容大多都是以模組的形式存在的。總所周知存在於裏面的模組都是有被壓縮的。這張我們就來探討一下關於模組的壓縮與解壓過程。這個章節裏同樣是針對於理解Awxxx公司的code。1、LHA1.1 LHA的背景LHA是一種檔壓縮電腦軟體,也是此壓縮格式的名稱,其原创 2009-06-03 14:57:00 · 7796 阅读 · 12 评论 -
【我所認知的BIOS】—>PCI option rom
【我所認知的BIOS】—>PCI option romBy LightSeed2009-5-22 在這裡添加一句,畢竟什麽東東都是有相應的組織來定義了spec的,那麼不管做什麽動作我們都必須嚴格按照spec規定的動作來,否則你做出來的信號就只有你自己知道了,或者起碼說不適用於業界,所以處在我現在的這個初級階段我還是想把spec都理解透徹,也鑒於此可能很多我的總結也都是會提到spec裏的原创 2009-06-02 09:21:00 · 40241 阅读 · 1 评论 -
【我所認知的BIOS】—>PCI 的中斷(PIC下)
【我所認知的BIOS】—>PCI 的中斷(PIC下)LightSeed 2009-5-13 1、PCI中斷概述注:整篇都是討論在PIC(8259)下的中斷過程。當PCI設備插到主板上後(本來南橋裏含有的當然就不用插啦),它要和其他設備通信,或者讓CPU幫它做這般這般,或者CPU讓它做那般那般等等。。。那麼他們究竟是怎麼通信的呢?這就是PCI中斷在中間起的強大作用原创 2009-06-01 18:01:00 · 33574 阅读 · 11 评论 -
【我所認知的BIOS】—>PCI SCAN
【我所認知的BIOS】—>PCI SCANLightSeed 2009-5-12 1、PCI梗概Study到現在已經快一年了,目前我自己理解,覺得PCI device在整個計算機的應用中是很重要,及其重要的一個東東。整由於它重要,所以可能一節我還講不完,分幾次把我所理解的PCI相關東東都總結一下。PCI是外設元件互連標準(Peripheral Component原创 2009-05-27 09:11:00 · 35695 阅读 · 21 评论