设备枚举后就是资源分配了,在dev_configure函数中完成。
coreboot学习7:ramstage阶段之设备枚举流程
本文主要针对ramstage阶段的设备枚举的过程进行分析。限于精力,就直接使用qemu-i440fx作为分析,baytrail就免了吧。在分析时,不一定会根据顺序,也不一定会详细到每个函数。如果要详细的信息,请查阅代码。也建议根据前文给出的主干流程图进行参照分析。
coreboot学习6:ramstage阶段之芯片初始化流程
从本文开始,就根据前文给出的ramstage的主干线索分析每个小阶段执行的过程。依然以qemu-i440fx为主做分析——因为当前条件只有这个“主板”才能在通过打印跟踪其过程。另外,也会列出baytrail的相关函数,但可能会存在部分瑕疵。在分析时,不一定会根据顺序,也不一定会详细到每个函数。如果要详细的信息,请查阅代码。也建议根据前文给出的主干流程图进行参照分析。
coreboot学习5:启动流程跟踪之ramstage阶段主干分析
ramstage阶段涉及比较多的操作,比如枚举板子上的外围设备,分配资源(PCI),使能设备。本文根据该阶段的主干函数流程做分析,细节方面不涉及。理顺这个主干,从全局上把控大致流程。
coreboot学习4:启动流程跟踪之romstage阶段
romstage是coreboot的第二个执行阶段。本文分别介绍基于qemu模拟环境的x86的跟踪,以及基于Intel baytrail平台的跟踪。在romstage阶段,由于内存还未初始化好,所以使用cache作为内存,此项技术称为“cache as ram”,简称为“CAR”。网络上有较多文章涉及此方面,可以查阅以了解更多。
coreboot学习1:编译并使用qemu模拟
对于一种新东西的学习,如果有看得到、摸得着的演示,比单纯看理论知道更容易理解。在未对coreboot进行代码级别分析之前,用一个实例来看看coreboot到底长什么样子。本文讲述如何在linux环境中编译coreboot,并使用qemu模拟器来启动。
coreboot学习0:二度相逢是初识
第一次听到coreboot是在大约一年半多以前,当时因为工作需要进行x86的底层开发,无意中接触到coreboot项目。现在再次对其进行学习。一来让自己也学习一下x86的BIOS开发,二来算对微机原理的一个重新认识吧。
linux C语言调用Intel处理器CPUID指令的实例
在之前写的文章中,仅简单讲了一下CPUID指令,通过该指令可以获取很多和处理器相关的信息,如处理器的系列、型号、内存地址是多少位,等等。本文在Linux环境下,使用C语言内嵌汇编的手段使用CPUID指令,进而在高级语言层面上看到获取的信息。
onvif学习笔记5:onvif框架代码初步了解
前文讲述了使用gsoap生成onvif代码的框架,这仅是万里长征第一步,因为这些代码是无法运行起来的,需要额外添加工作才能使用与测试工具对接。本文对这些框架代码进行一步初步的认识和学习。由于代码比较庞大,后续可能不间断地探索,慢慢积累点滴。
onvif学习笔记4:Windows环境使用gsoap生成onvif框架代码
因工作原因,被安排接手onvif,为了对其有个真正、切实、系统、认真、严谨的了解,就利用周末等业余时间来学习研究。本文主要讲述在windows环境中使用gsoap生成onvif框架的代码,但不涉及框架代码的使用。由于实际真正使用的只有生成的代码文件,所以无论使用Linux还是Windows,都无所谓。
GCC弱符号的一个应用示例
GCC对C/C++做了很多扩展,很多基于Linux环境的开源项目都会使用。本文介绍一下弱符号的应用。对于大型项目特别是兼容多种平台的项目来说,同一功能的实现会区别于不同平台,比如linux内核,比如coreboot。有的平台可能没有该功能接口,但顶层调用会使用到这个接口,为了不使链接出错,往往就使用到弱符号来解决。使用弱符号函数时,假如此项目工程没有其它同名的函数(可以认为是“强符号”),则调用该函数;如果其它文件也实现了同一名称函数,则调用其它文件的实现函数。
Intel处理器MSR学习
Intel IA32软件开发者手册第3卷第35章中介绍了MSR。但是,该章节并没有十分详细地描述,基本上就给出一个地址并作简单说明。而网络上能搜索到文章,也是点到即止。本文结合IA32开发手册,以及coreboot代码,概要地整理一下这方面的知识,用实例来展示MSR用途。