时间过得真快,从今年2月份开始到4月份,断断续续摸索coreboot的源码。限于精力但又不想让人误以为笔者是个容易放弃的人,只好匆匆将前面所做的工作称为第一阶段,用时髦的话,也叫一期工程。此文做些阶段性的小结,以表示阶段性的结束。
下面是在学习coreboot前做的预估工作:
一、BIOS相关概念的了解
二、烧写方式 镜像规格、格式、分布
完整的8MB如何产生?
用什么软件烧写?
和板子上怎么对接?烧写到rom芯片
烧坏了怎么办?
三、开发环境、开发方式
三、coreboot项目的了解,架构、概念的学习 (playload)
(启动流程、转跳)
四、Intel相关的概念 FSP
(功能:Intel CPU初始化,MEM初始化、IO初始化,源码不开放)
(Intel不会为开发板提供bios固件)
文档储备
1、BIOS现状调查
2、coreboot介绍及环境
3、bios结构分析
研发:
coreboot启动流程
coreboot整体分析
写出来,是想表明笔者是一个有计划做事的人。现在看,有一部分已经掌握并完成了。实际上,我学习coreboot就是因为听到领导谈到要自己开发BIOS,而我作为公司第一个实际接触X86平台开发的人,想当然地认为我会被安排开发BIOS。这些预估工作正是我准备向领导汇报的前期工作计划。
初时看代码,基本上没有什么头绪,正如有一次同事评价我写过的一个模块代码:每个字都看得懂,但就是不知道写的是什么(我写有注释)。如汇编代码,mov指令都看得懂,但不知其意。在看CPU部分代码时,遇到许多不熟悉的概念,于是抽时间去了解,还特意下载Intel开发者手册三卷备用。
由于没有真实的板子,只好使用qemu-i440fx作为调试标的,因为在linux上直接使用qemu工具即可看到其启动过程,十分方便。其后的过程基本没有十分难的坎。可能得益于对linux内核有一定了解,看过操作系统方面书籍。
第一阶段遗留一些手尾事情未完成,大概有:
coreboot的pci扫描流程细节跟踪。
static.c文件(设备树)的分析。
配置表流程的跟踪。
这些事宜待有时间再写吧,不过也不确定后面还会不会继续学习coreboot,毕竟时代在变化,有些事变化太大,也只好放弃另一些事。
李迟 2016.4.4 周一 清明节