开源BIOS项目coreboot学习笔记
LInux系统开源BIOS项目coreboot的学习笔记
李迟
李迟,男,已婚,字子徐,一字仲文,别号水田居士,木草山人。有一儿一女,李大锤和李大妞。来自广西岑山溪水之地,家在一垌之尾。毕业于桂林电子科技大学三院1专业。摄影师,金融学者,历史家,科学哲学爱好者,社会问题研究者,持证上岗者(架构师、项目管理师),爱好广泛而无精通者。古文、诗词、文学、小说、武侠、经济、社会等无所不涉。目前主要混迹于显示器、鼠标、键盘之间。于代码及兴趣之事中有所得,与好友谈之一二,足矣。
展开
-
coreboot学习10:coreboot第一阶段学习小结
时间过得真快,从今年2月份开始到4月份,断断续续地摸索coreboot的源码。限于精力但又不想让人误以为笔者是个容易放弃的人,只好匆匆将前面所做的工作称为第一阶段,用时髦的话,也叫一期工程。此文做些阶段性的小结,以表示阶段性的结束。原创 2016-04-04 21:51:12 · 5243 阅读 · 0 评论 -
coreboot学习9:ramstage阶段之设备初始化流程
本文对ramstage阶段的设备初始化过程进行跟踪。设备初始化是在dev_initialize函数中完成的,代码如下:原创 2016-04-04 15:36:46 · 1582 阅读 · 0 评论 -
coreboot学习8:ramstage阶段之资源分配流程
设备枚举后就是资源分配了,在dev_configure函数中完成,代码如下:原创 2016-04-04 13:10:35 · 1343 阅读 · 0 评论 -
coreboot学习7:ramstage阶段之设备枚举流程
本文主要针对ramstage阶段的设备枚举的过程进行分析。限于精力,就直接使用qemu-i440fx作为分析,baytrail就免了吧。原创 2016-04-03 09:43:18 · 1378 阅读 · 0 评论 -
coreboot学习6:ramstage阶段之芯片初始化流程
从本文开始,就根据前文给出的ramstage的主干线索分析每个小阶段执行的过程。依然以qemu-i440fx为主做分析——因为当前条件只有这个“主板”才能在通过打印跟踪其过程。另外,也会列出baytrail的相关函数,但可能会存在部分瑕疵。在分析时,不一定会根据顺序,也不一定会详细到每个函数。如果要详细的信息,请查阅代码。原创 2016-03-19 23:00:44 · 1946 阅读 · 1 评论 -
coreboot学习5:启动流程跟踪之ramstage阶段主干分析
ramstage阶段涉及比较多的操作,比如枚举板子上的外围设备,分配资源(PCI),使能设备。本文根据该阶段的主干函数流程做分析,细节方面不涉及。理顺这个主干,从全局上把控大致流程。原创 2016-03-16 22:12:37 · 2141 阅读 · 0 评论 -
coreboot学习4:启动流程跟踪之romstage阶段
romstage是coreboot的第二个执行阶段。本文分别介绍基于qemu模拟环境的x86的跟踪,以及基于Intel baytrail平台的跟踪。原创 2016-03-15 22:23:23 · 2920 阅读 · 0 评论 -
coreboot学习3:启动流程跟踪之bootblock阶段
coreboot的第一个启动阶段为bootblock。该阶段均使用汇编语言编写。下面根据执行文件顺序介绍。原创 2016-03-14 21:53:57 · 3312 阅读 · 0 评论 -
coreboot学习2:项目源码的初步了解
本文主要介绍coreboot源码的目录结构和其它一些东西。原创 2016-03-13 20:58:45 · 4154 阅读 · 1 评论 -
coreboot学习1:编译并使用qemu模拟
对于一种新东西的学习,如果有看得到、摸得着的演示,比单纯看理论知道更容易理解。在未对coreboot进行代码级别分析之前,用一个实例来看看coreboot到底长什么样子。本文讲述如何在linux环境中编译coreboot,并使用qemu模拟器来启动。原创 2016-03-11 23:31:00 · 4814 阅读 · 0 评论 -
coreboot学习0:二度相逢是初识
第一次听到coreboot是在大约一年半多以前,当时因为工作需要进行x86的底层开发,无意中接触到coreboot项目。现在再次对其进行学习。一来让自己也学习一下x86的BIOS开发,二来算对微机原理的一个重新认识吧。一、简述coreboot前称为“LinuxBIOS”,是一个开源的软件项目,旨在替换BIOS或UEFI。大部分使用C语言编写,少部分使用汇编语言,遵循GPLv2协议。由于co...原创 2016-03-10 21:51:20 · 5626 阅读 · 0 评论 -
BIOS调查笔记
本文简单整理一下BIOS厂商分类,以及BIOS替换者UEFI。还涉及到一些开源的BIOS项目介绍。大部资料均来自互联网。BIOS是英文"Basic Input Output System"的缩略词,直译过来后中文名称就是"基本输入输出系统"。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系原创 2016-03-09 22:14:33 · 1597 阅读 · 0 评论 -
linux C语言调用Intel处理器CPUID指令的实例
在之前写的文章中,仅简单讲了一下CPUID指令,通过该指令可以获取很多和处理器相关的信息,如处理器的系列、型号、内存地址是多少位,等等。本文在Linux环境下,使用C语言内嵌汇编的手段使用CPUID指令,进而在高级语言层面上看到获取的信息。头文件cpuid.h代码如下 :/* * 假设执行程序所在PC是支持CPUID指令的*/#ifndef _CPUID_H#define...原创 2016-03-07 21:22:50 · 6703 阅读 · 2 评论 -
Intel处理器MSR学习
Intel IA32软件开发者手册第3卷第35章中介绍了MSR。但是,该章节并没有十分详细地描述,基本上就给出一个地址并作简单说明。而网络上能搜索到文章,也是点到即止。本文结合IA32开发手册,以及coreboot代码,概要地整理一下这方面的知识。用实例来展示MSR用途。原创 2016-02-25 22:49:06 · 10445 阅读 · 0 评论 -
Intel处理器CPUID指令学习
前文《Intel处理器Family、Model、Stepping等的学习》只是简单讲了CPU的标识等内容(仅针对Intel,本文也是),但其读取方法未涉及。本文就此未完事宜来了解读取的方法:使用CPUID指令来完成。原创 2016-02-22 22:22:08 · 6063 阅读 · 0 评论 -
GNU C内嵌汇编学习笔记
前文所述,只是针对汇编格式的整理,本文将使用coreboot项目代码对其进行实例化。以方便、清晰了解到如何在C语言里使用内嵌汇编的方法。同样地,网络上也有众多文章涉及到这方面,所以本文更多是归纳总结。形成自己的学习笔记。原创 2016-02-17 19:00:43 · 2093 阅读 · 0 评论 -
Intel处理器Family、Model、Stepping等的学习
本文主要介绍在Linux系统中查看本机CPU信息方法,接着针对intel的x86处理器标识进行概括性描述,包括CPU ID、vendor、Family、Model、Stepping等。这些信息主要来自网络搜索所得,同时参考Intel IA32架构软件开发手册第2卷、第3卷进行修正完善,参见文后附带地址以便了解更多。一、Linux下查看CPU信息Linux系统使用lscpu命令可以查看CPU信息,如:latelee@latelee:~$ lscpu Architecture: i6原创 2016-02-17 22:41:15 · 24669 阅读 · 0 评论 -
AT&T格式汇编学习
Linux内核代码大量使用内嵌汇编,以进行某些特定功能的实现,或对某功能进行快速实现。使用的汇编格式为AT&T,本文就该种格式的汇编和Intel格式的汇编进行讲述。网络上也有众多文章涉及到这方面,所以本文更多是归纳总结。形成自己的学习笔记。原创 2016-02-16 21:19:12 · 2969 阅读 · 0 评论 -
Intel X86 CPU寄存器学习笔记
本文对Intel CPU寄存器做一些浅显的介绍。Intel处理器寄存器在很多教科书上有,网络也有很多文章涉及到。因此本文在这些基础上做一些归纳总结,另外也参考了Intel IA32架构软件开发手册。原创 2016-02-16 20:35:11 · 6683 阅读 · 0 评论