繼上一篇討論如何燒錄Android framework到Pandaboard後,這篇來教學如何燒錄Android kernel for OMAP-4430,再進行這裡的步驟之前,請先照著上一篇做一次,把必要的工具和環境建立出來
1. 下載Android kernel source for Pandaboard
由於Android的kernel source repository掛掉很久了,要檢視所有的branch變得非常困難,首先我們要用git下載Android kernel for OMAP,Pandaboard採用的核心版本為最新的krenel 3.0
$ mkdir kernel_ICS $ cd kernel_ICS $ git clone https://android.googlesource.com/kernel/omap.git $ cd omap $ git branch -r $ git checkout -b android-omap-panda-3.0 origin/android-omap-panda-3.0
由於Panda是採用OMAP4430的CPU,當然要抓這個分支囉
2. 編譯kernel
$ export PATH=android_ICS/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin:$PATH $ export CROSS_COMPILE=arm-eabi- $ cd kernel_ICS/omap/ $ make ARCH=arm panda_defconfig $ make ARCH=arm -j4
要編譯kernel當然要先設定cross compiler, 從4.0原始碼裡面有提供編譯好的cross compiler binary,直接用他的就好
kernel config這邊選擇panda_defconfig,(我當初下載的是common kernel source,找半天沒有適合Panda的config)
到目前就算是初步完成囉,編譯好的kernel image會放在arch/arm/boot/zImage
3. 重建boot.img
網路上有很多人寫了方便的script,主要功能就是把原本要燒到SD卡上的boot.img拆開後,再把裡面原本的kernel image掉包成我們剛剛編譯好的zImage,這方法是比較有效率的,但是我太懶所以就請Android本身的makefile幫我們做這件事情囉
$ cd android_ICS/device/ti/panda/ $ mv kernel kernel.bak $ cp kernel_ICS/omap/arch/arm/boot/zImage ./kernel $ make -j4
簡單來說,Panda的kernel原本是以預先編譯好的方式存放在device資料夾裡面,我們做的事情就是單純的把他的image掉包成我們編譯的image(記得備份舊的)
重新編譯以後,會把新的kernel重新包入boot.img裡面,就算大功告成了
4. 燒錄kernel
燒錄時可以完全參考前一篇的作法,但是因為連整個system都重燒,會導致第一次開機非常久,
因此建議採用以下步驟來燒錄kernel
4.1 SD卡,USB線,UART線,HDMI線,電源線全部都接好,按住GPIO按鈕再按reset按鈕,直到u-boot進入fastboot模式
4.2 由於SD卡已經format好,而且我們只需要重燒boot.img的部分
$ sudo su $ cd android_ICS/out/host/linux/bin $ ./fastboot flash boot $ ./fastboot reboot
如此一來重開機速度就會非常快了,附上一張修改kernel後顯示的kernel version
No comments:
Post a Comment