1. 程式人生 > >coreboot學習10:coreboot第一階段學習小結

coreboot學習10:coreboot第一階段學習小結

時間過得真快,從今年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 週一 清明節