Porting Linux kernel for Android
移植 Linux kernel
我們購置 PXA270 時間為 2006~2007 年間,當時硬體廠商提供的 Linux kernel 為 linux-2.6.15.3,因此不可能包含任何跟 Android 相關的程式碼。基於 Android 對於 Linux kernel 的限制,我們採用 linux-2.6.25-android-1.0_r1,因為 linux-2.6.15.3 與 linux-2.6.25-android-1.0_r1 的版本差異太大,所以我們使用人工 patch 的方式。我們移植的原則是拿硬體廠商所提供的 linux-2.6.15.3 與 http://www.kernel.org 的 linux-2.6.15.3 作比較, 將差異的部份加入 linux-2.6.25-android-1.0_r1 中,我們所使用的方法可能不能稱為 SOP(Standard Operating Procedure),因為移植的過程在不同的平台、不同的環境下有不同的方法,若是硬體廠商所提供的 Linux kernel 與 Android 所支援的版本相近,也許可以直接使用 patch(一個 Linux 的指令,將新版與舊版程式碼的差異套用於舊版程式碼以更新舊版程式碼)的方式來移植 Linux kernel。在我們的例子中,我們採用的方法是在現有條件下最節省時間、最不浪費人力及資源的方式,原因是在移植 Linux kernel 的部分,我們所採用的方法只需要集中精神在硬體相關(Hardware dependent)的部分,我們幾乎沒有浪費時間在 Android 對 Linux kernel 所加入的 patch(單就移植過程而言,不包含日後開發的部分)。
移植 Linux kernel 的流程圖:
移植 Linux kernel 可以分為下列兩步:
- 目標為可以開機及看到 console 訊息
- 以整合性修改為主,為搭配 Android library 及 Android application 等所修改周邊裝置的驅動程式。
發表迴響