Related work before “Android Porting"
準備工作
我們的目標是先建構一個 Pure Embedded Linux System,接著建立 Android Runtime System,我們這樣做的原因是希望此平台不僅能夠執行 Android,亦可以是一個單純的開發環境,能夠執行一般透過 toolchain 所 cross compile 的程式,就像以往開發嵌入式系統一樣,讓使用者從簡單的 Embedded Linux System 逐步進入 Android 的世界,最後能夠在我們的實驗平台上開發 Android 相關程式。所以在正式介紹如何移植 Android 之前,我們需要對 Embedded Linux System 有一個綜觀的了解,需要知道 Embedded Linux System 的 building block、如何建構一個 EmbeddedLinux System、Embedded Linux System 的開機流程、控制權的轉移、檔案系統的架構等等;如此我們才能夠從底層往上建構這樣的開發環境。
在此我們不對 bootloader 作太多說明,因為移植過程中我們沒有對硬體製造商提供的 bootloader 作任何改動;因為 bootloader 與硬體有相當高的關聯性,所以一般嵌入式系統都會對 bootloader 作一定程度的修改,但若是單就移植 Android 來說,是不需要修改到 bootloader 的部分。簡單地說 bootloader 只是將CPU控制權交到 OS 手中,唯一要注意的是 Linux kernel 會比對由 bootloader 傳入的architecture number , 而我們使用的方法是直接修改 linux-2.6.25-android-1.0_r1/arch/arm/kernel/head.S 中 CPU register r1 的值以符合 linux-2.6.25-android-1.0_r1/arch/arm/tools/mach-types 的設定, 而忽略由 bootloader 傳入的 Architecure Number。
發表迴響