一起來學嵌入式Android系統 (第三章心得)

在O’REILLY"嵌入式Android系統"這本書的第三章AOSP初探是以仿真器做為標的,先前我們已經介紹過開發板與第五章的內容;所以再下來我們就不會以仿真器做為標的,而以Cubietruck開發板做為實作的目標。再下來介紹的內容都開始在實機上進行操作,就請各位準備好Android開發環境(Ubuntu)與Cubietruck開發板。首先,還是先介紹第三章的大綱:

◎    開發主機設定

◎    取得AOSP

◎    建置基礎

◎    執行Android

◎    使用Android Debug Bridge (ADB)

◎    掌握仿真器

由於我們不用仿真器,連帶的也不直接使用原始的AOSP Source Code;Android原始碼的部份就直接從廠商的伺服器下載,廠商已經把AOSP Source Code修改為符合SoC的Android Source Code。關於AOSP下載(使用repo程式)與模擬器的使用就請自行參考書上的說明。在說明內容前我先描述一下我們的開發環境,我們是使用Intel Corei7的桌機,跑得是Windows 7 64Bits;Android編譯環境為Ubuntu 10.04 64bits安裝於VMPlayer所建立的虛擬機器上。

在開發主機的部份,基本都參考AOSP官網的Initializing a Build Environment來設定開發主機。

在取得AOSP的部份,這部份請自行參考書上的流程;我們這邊要直接取得廠商修改好的Android Source Code,在Ubuntu Linux下執行命令:

wget http://dl.cubieboard.org/software/a20-cubieboard/android/A20-android-4.2.tar.xz

tar -xvf A20-android-4.2.tar.xz

cd ct-droid1

cd android42

在取得AOSP內容的部份,前面步驟已經下載完廠商Android Source Code並且進入Android Source Code的根目錄中,讓我們與表3-1做個對照:

3-1-1

看一下framework/base/目錄內容(對照表3-2):

3-1-2

看一下system/core/目錄內容(對照表3-3與表3-4):

3-1-3

在建置基礎的部份;設定建置系統就參考AOSP官網的"Initializing a Build Environment"來進行,以下是我在Ubuntu 10.04 64bits下所執行的命令,但有可能遇到Ubuntu後續不再直接支援Oracle Java安裝,就需考書上的說明進行手動JDK6安裝。

sudo add-apt-repository “deb http://archive.canonical.com/ lucid partner"

sudo add-apt-repository ppa:ferramroberto/java

sudo apt-get update

sudo apt-get install sun-java6-jdk 

sudo update-alternatives –config java

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils

設定建置系統完成後,就要開始建置Android,以下是針對廠商Android Source Code進行編譯的方法,同時也會編譯到Linux Kernel,所以先切換回android42目錄的上一層(在這邊應該要在ct-droid1目錄下),執行以下的命令:

cd lichee/

rm linux-3.3/.config

cp linux-3.3/arch/arm/configs/cubietruck_defconfig linux-3.3/arch/arm/configs/sun7ismp_android_defconfig

./build.sh -p sun7i_android

cd ../android42

source build/envsetup.sh

lunch 16

extract-bsp

make -j4

pack

在執行Android的部份,我們就要把產生出來的Image(ct-droid1/lichee/tools/pack/sun7i_android_sugar-cubietruck.img)安裝到Cubieboard開發板上;在安裝之前我們需要安裝全志的燒錄工具PhoenixSuit,從開發板官網(參閱第五章心得報告)下載或Windows版本可從這個連結(http://ubuntuone.com/3Z95tYxkcpvKq5oc2Zdpka)下載。我們會在Windows上燒錄Image,所以把sun7i_android_sugar-cubietruck.img從虛擬機器Linux中拷貝到開發主機Windows的某個目錄下,並先關閉虛擬機器,再執行PhoenixSuit後選擇"一鍵刷機";之後點選Image檔案:

3-1-4

然後在Cubietruck開發板上把Mini USB Cable的Mini USB接往USB OTG Port,但另一端(USB Type A)先不要接到電腦,一邊按下Cubietruck開發板的FEL不放再一邊把Mini USB Cable另一端(USB Type A)接向電腦,就會開始進行燒錄的動作;當完成燒錄的動作後,就可以把Mini USB Cable連接電腦的一端(USB Type A)從電腦中拔出。再下來我們分別連線USB滑鼠、HDMI線到螢幕與電源到開發板進行開機;開機完成後就可以把Mini USB Cable另一端(USB Type A)再接回電腦上以進行adb功能驗證:

3-1-5

關於Cubietruck開發板的SoC A20技術文件,可自行網站搜尋或從以下連結下載:https://mega.co.nz/#F!mtxywC7B!034Ovh0nhI-XQmfD70x3LQ(註:本公司不做任何保證)。

在使用Android Debug Bridge(ADB)的部份,我們會在Windows上先安裝ADT Bundle(https://developer.android.com/sdk/index.html?hl=sk ,前置條件要先安裝JDK)並做相關設定,就可以在Windows上使用adb命令:

3-1-6

至於Log的部份就不一定要以adb logcat方式進行觀看,因為已經安裝了ADT Bundle,打開Eclipse用DDMS會更好操作;但還是會用到adb logcat方式來抓Log場合,尤其是長時間監控Android狀態時。詳細adb命令部份會於書中第六章進行說明。

其它關於仿真器部份的議題,就麻煩自行閱讀書中相關的內容。

備註:由於開發板原廠SDK更新,所以新版本的原始碼下載與編譯方式可以參考這篇文章。

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s