1.Android源碼的版本
android源碼的版本一定要是android-4.0.3的master分支,經過驗證android-4.0.1源碼不能在pandaboard開發板上正常運行。
2.開發機編譯器版本
開發主機上編譯器的版本最好采用gcc-4.4.6版本,如果開發機的linux版本為Ubuntu11.10,它自帶的編譯器版本為gcc-4.6.1,編譯android-4.0.3會出現很多錯誤,通過修改源碼也可以正確編譯出目標文件,但是考慮到android源碼的統一性,采用gcc-4.4.1版本編譯器進行編譯,這就需要在ubuntu11.10上安裝gcc-4.4.1編譯器。經過驗證采用gcc-4.4.1編譯android-4.0.3沒有任何編譯錯誤。
3.下載GPU SGX540的二進制包
下載地址為:http://code.google.com/android/nexus/drivers.html#pandaiml74kl其中針對pandaboard有兩個版本,分別對應android-4.0.1和android-4.0.3,毫無疑問我們應選擇對應android-4.0.3的那個版本,解壓後為一個腳本文件extract-imgtec-panda.sh,執行該腳本文件將生成vendor目錄,將該目錄拷貝到android-4.0.3源碼根目錄下即可,再進行編譯,大約經過2個小時即可編譯完成。
4.android-4.0.3文件系統的安裝
因為在此之前使用的時android-2.3,SD卡分區為boot,rootfs,media三個分區,boot分區存放的是MLO,u-boot.bin和uImage。rootfs為主文件系統,media分區存放私有數據文件。當android-4.0.3編譯完成後,在進行文件系統更新時想偷一下懶,用新的uImage文件替換boot分區中的uImage,用android-4.0.3/out/target/product/panda/root目錄中的文件替換rootfs分區的文件,用android-4.0.3/out/target/product/panda/system目錄文件替換rootfs分區中system目錄,再用android-4.0.3/out/target/product/panda/data目錄文件替換rootfs分區中的data目錄,經過驗證這樣系統不能正常啟動。
經過以上實驗失敗後決定還是采用Android-4.0.3/device/ti/panda/README文件中說明的方法進行文件系統的燒寫。該文件詳細說明了如何進行新文件系統的更新,使用usbboot和fastboot工具進行文件系統的更新。usbboot目錄為:Android-4.0.3/device/ti/panda/usbboot,fastboot在編譯完成後生成,目錄為android-4.0.3/out/host/linux-x86/bin/fastboot。
遇到的問題:
使用fastboot燒寫文件系統的前提時目標板已進入fastboot模式,按README文件的說明是通過usbboot工具把bootloader.bin文件通過usb接口傳送到目標板的內存中並運行,這時目標板就已經進入了fastboot模式。問題是自己使用的系統為ubuntu11.10的32位版本,但是usbboot為64位的應用程序,故在ubuntu11.1032系統上無法執行,只能通過其他辦法實現。
解決方法:
在android-2.3版本使用的SD卡的基礎上使目標板進入fastboot模式,把android-4.0.3/device/ti/panda/bootloader.bin文件復制一份重命名為u-boot.bin,使用新的u-boot.bin替換SD卡中的u-boot.bin,這樣目標啟動後就會進入fastboot模式,再使用fastboot工具按照README文件的說明進行文件系統的更新後,android-4.0.3就會在pandaboardOMAP4430開發板上正常運行。