【我所认知的BIOS】系列blog整理 1.23.2016.zip 这几年来,蛮多小伙伴都给我发邮件拿PDF版本。几年前写的文章格式什么的实在是太粗糙。最近我把所有的文章都整理了一下。其实该想法已经早就有了,只是最近才开始空闲。现在我把所有的文章整理好了以后上传到了CSDN和百度云盘分享给大家。把附件里面的再贴一遍。
【我所认知的BIOS】—> uEFI AHCI Driver(8) — Pci.Read() 社会一直在变,不晓得是不是社会变的太苦开,而我没变所以我反而显得单纯了。办一个居住证,几年前办的以为终于可以一劳永逸的,后来续办的是发现确实不难了。尼玛,上个月去续办还说好,你这快要到期了,下个月来开证明吧。结果我昨天去开证明,一堆的文件甩给我说,不好意思现在流程变了。一切都是按照新办的流程来。好吧,我单纯了。其实在软件和硬件的这个行当里,相对而言还是硬件比较单纯点。软件把硬件封装的比较花里胡哨。那么今天讲的这片文章就是。大家可以好好感受一下。当然在这里的花里胡哨是一种很好的软件架构表现,不才并不是像前面的
【我所认知的BIOS】—> uEFI AHCI Driver(7) — AtaAtapiPassThruSupported 由于宝宝刚刚出生,最近时间比较紧张,原本这篇文章也写好了有一段时间了,但是每天晚上连开机的时间都没今天才更新上来。我已经邀请到几位我的好朋友加入到我的行列中来写uEFI的东西,他们分别会负责其他module的撰写。以后会专门说明各个部分的作者。没想到呀,局部变量就那么5个,居然里面牵扯的定义和概念有那么多,足足扯了一篇文章。下面的这篇文章。我预计也不简单,函数一进去会调用到uEFI的常用boot service里面的一些库函数。
【我所认知的BIOS】—> uEFI AHCI Driver(6) AtaAtapiPassThruSupported的局部变量们 前面5个篇文章把EFI_DRIVER_BINDING_PROTOCOL这个protocol的一个实例(instance)AHCI driver的安装做了一个比较详细的介绍。其实这个driver到目前为止只干了一件事情,那就是把这个protocol安装到对应的ImageHandle上去。对于这个driver在BDS的怎么运行,原理上讲就是先调用supported()然后再调用start(),最后运行stop()来卸载driver。最近听了不少同事说去泰国旅游多么多么爽,后来了解了一下确实是不错的选择。恰好还欠
【我所认知的BIOS】—> uEFI AHCI Driver(5) — 第一个protocol终于要开始安装了 文章对EFI_DRIVER_BINDING_PROTOCOL的每个 成员的讲解是重点。它是我们遇到的第一个uEFI里面的protocol所以我都尽量把它讲的够细。这一篇文章开始就真正进入到install protocol的函数里面去了。拭目以待吧~
【我所认知的BIOS】—> uEFI AHCI Driver(4) — 第一个Protocol真难搞 文章对EFI_DRIVER_BINDING_PROTOCOL的每个 成员的讲解是重点。它是我们遇到的第一个uEFI里面的protocol所以我都尽量把它讲的够细。下一篇文章开始就真正进入到install protocol的函数里面去了。
【我所认知的BIOS】—> uEFI AHCI Driver(3) — 无处不在的protocol uEFI wasn’t built in a day. 它涉及的很多原理其实是设计的相当好的。具体我没去考证,据说设计uEFI架构的这帮人,都是很牛逼的OS架构师。他们对软件架构的理解相当深刻,不乏Linux精英。所以,在uEFI的骨子里面实际上流着的是Linux这类OS级别的血。不仅架构是这样,在coding的实现上面更是看的出来。用C语言来实现了面向对象等这些技巧信手拈来,用所谓的各种protocol来交互更是层出不穷。Code的思路层层递进,高级coding的技巧无处不在,在后面的文章会婉婉道来。
【我所认知的BIOS】—> uEFI AHCI Driver(2) — 原来开始也不那么简单 真是不好意思,上周由于家里有急事,所以离开上海比较匆忙都没来得及更新就回家了。这周补上两篇。uEFI这个架构,我觉得它确实挺好的。比较起legacy BIOS来说,uEFI有非常完整的文档说明。所有的功能和概念都说的非常明确,当然实际上就是一种对协议的阐明。好吧,原来这就是protocol也就是我们说的最多的协议。比如TCP/IP这两个缩写词的P其实就是protocol的缩写。这一章节紧接上一节,编译完了以后,首先我们想到的应该是程序的入口在哪里对吧?显然是上一节说了的ENTRY_POINT – Ini
【我所认知的BIOS】—> uEFI AHCI Driver(1) — uEFI开始其实不是很复杂 有人问过没?啥叫driver?不就是司机么?其实这一点都没错,driver的中文意思却是有司机的意思。只是在英文的世界里面,他们也有一词多义,但是他们的根本意思都是一样的。你看司机把一堆冷冰冰的铁块块就这么驾驶起来,让它动起来了。汽车还能够在司机的驾驶操作下面完成多很很让人惊讶的事情,比如前空翻呀,侧空翻呀,或者自燃呀什么的。。。反正就是感觉很厉害。软件领域的driver完全就是这个意思,软件写成的一堆代码模拟出了一个司机这样的一个虚拟人来,在特定的时候让硬件按照规定好的步骤去做事,所以就叫做驱动,让一堆
【我所认知的BIOS】—> uEFI 开始 当年我出道的时候,uEFI还没流行起来。现在uEFI却已经是主流的BIOS了。原本三年前就说要写这个uEFI的部分的,那会儿由于工作和学业等种种原因落下了。从今天起,我就补上了。目前是打算,几乎尽量做到每一行做注释,当然如果是太简单的,连傻瓜都看得懂的话,那我就略过了。uEFI这个东西现在很流行,如果windows再不给力点,估计这就是最后一个BIOS了。这个架构很大也很全,几年前我还是从legacy BIOS转过来的时候,是蛮艰难的一个过程。所以深知当时初学者时的那种困难感。(随着积累的增多,年龄的增大
【我所认知的BIOS】—> Advanced Configuration and Power Interface 原理(实践部分) 感觉还是要引用一下前面一篇文章的开场白“ACPI是一个内容很丰富的综合性的规范,从外表看上去不得不承认感觉很神秘。究其根本其实还是建立在X86架构和应用的基础之上。大神其实是这样的人,他能够把很复杂的东西然后描述的很简单,很容易理解。这样的我有幸遇到了一些。ACPI的东西,实际上就是控制电脑系统的电源的东西。目的只有一个就是想尽一切办法去省电。由于各家vendor在handle这个事情,所以就事先大家定义好ACPI这个规范。大家都按着定义好的接口去实现,不管哪家siliconvendor,BIOS vend
【我所认知的BIOS】—> Advanced Configuration and Power Interface 原理(软件部分) 感觉还是要引用一下前面一篇文章的开场白“ACPI是一个内容很丰富的综合性的规范,从外表看上去不得不承认感觉很神秘。究其根本其实还是建立在X86架构和应用的基础之上。大神其实是这样的人,他能够把很复杂的东西然后描述的很简单,很容易理解。这样的我有幸遇到了一些。ACPI的东西,实际上就是控制电脑系统的电源的东西。目的只有一个就是想尽一切办法去省电。由于各家vendor在handle这个事情,所以就事先大家定义好ACPI这个规范。大家都按着定义好的接口去实现,不管哪家siliconvendor,BIOS vend
【我所认知的BIOS】—>Advanced Configuration and Power Interface原理(硬件部分) ACPI是一个内容很丰富的综合性的规范,从外表看上去不得不承认感觉很神秘。究其根本其实还是建立在X86架构和应用的基础之上。ACPI这个东西是有那么点点复杂,我也试图尽量说的简单些。后续打算先用三篇文章来在架构上描述硬件、软件、简单的实践部分。最近intel推了一个叫做Minnow的HW open source的硬件平台,而且BIOS是基于UDK的。于是,我筹划着在这个开源的硬件平台上和大家share一下EDK的升级版本UDK。关于ACPI的详细代码注解和更加详细的注释部分(方方面面很多,暂时还没想好按照什
【我所认知的BIOS】-> Cache原理 以前有对Cache的架构研究,最近由于看了一些ARM上相关的cache的原理,随便把x86和ARM的cachestudy写成文章share出来吧。一晃都今天才上来。也说说吧,这大约三年里面变化蛮多的。前面两年是由于公司的要求的原因没有更新。后来由于一直在忙于研究生的学业,没时间更新。再后来就开始着手准备重操旧业,把以前study的那些尽量用比较简单的语言写出来和大家分享分享。X86实际上是一个夕阳