這份教學文件的目的是編譯Android 4.0並且燒錄至Pandaboard上,請依照步驟執行
0. 環境設定
我所編譯的環境是Ubuntu-10.10-server , x64
Intel Core-i7 四核心, 16 GB RAM
建議Android的開發盡量在64位元作業系統上執行會比較順利
1. 下載Android 4.0原始碼
http://source.android.com/source/downloading.html
值得強調的一點: 請勿下載
android-4.0.1_r1分支,因為這版本的Pandaboard kernel有問題,會無法成功開機,所以我們就下載最新的master版本
$ mkdir android_ICS $ cd android_ICS $ repo init -u https://android.googlesource.com/platform/manifest $ repo sync
2. 編譯原始碼 for Pandaboard
在編譯之前我們要設定 for Pandaboard 的環境變數,Android幫我們寫好一個簡單的工具可以快速的設定所有的環境變數
$ cd android_ICS $ . build/envsetup.sh $ lunch full_panda-eng
下載Android for Pandaboard的driver patch
http://code.google.com/intl/zh-CN/android/nexus/drivers.html
解壓縮後會產生一個extract-imgtec-panda.sh, 放置到android的根目錄
執行這個script檔,並且同意他的聲明後,就會自動完成patch
Type "I ACCEPT" if you agree to the terms of the license: I ACCEPT
接下來就是快樂的編譯時光,除了編譯開機映像檔以外,我們也要編譯fastboot工具,等等就會用到了, j後面的數字代表要開幾條thread來編譯,基本上核心多的電腦可以用4條thread
$ make fastboot $ make -j4
接下來就等待編譯完成吧,估計會花上半小時至數小時不等(視電腦運算速度而定)
3.Pandaboard硬體配置
(1) 電源線(5v)
(2) mini USB to USB線,以下簡稱USB線
(3) UART線
(4) 4GB的SD卡(文件上寫需要4GB,但實際上不確定能不能用更小的空間完成)
(5) HDMI to DVI線,以下簡稱HDMI線
(6) USB滑鼠與USB鍵盤,網路線 (option)
齊備了這些線材配置之後,我們要來燒錄Pandaboard了!!
4. 燒錄流程
整個燒錄過程需要有root權限,所以我們root過後重新設定一下環境變數
$ sudo su $ cd android_ICS $ . build/envsetup.sh $ lunch full_panda-eng
4.1 首先接上UART線,這是我們用來確認板子上到底發生什麼事情的好手段,方便找出錯誤之用(換句話說,如果你有信心,這步驟跳過亦可)
我是在筆電上進行監測,所以我們這裡用putty軟體,若是在工作站環境,建議用minicom, serial port設定為ttyUSB0, 若是用一般的RS232線, 就要用ttyS. Baudrate要設定為115200
接下來理論上就可以從putty中看到開機時噴出的訊息了(現在應該是還沒有訊息的)
4.2 確認SD卡被拔除, 插上USB線,再插上電源線,從server主機以root身分下指令:
$ cd android_ICS/device/ti/panda $ ./usbboot ./bootloader.bin
此時主機會將bootloader的執行檔直接塞到板子的RAM上面,並用此bootloader進入工廠模式(也就是fastboot模式),若是有用UART來debug, 現在應該看的到進入fastboot mode
接下來插入SD卡(卡片不需要做任何format或設定,因為等等會自動重新format)
$ cd android_ICS/out/host/linux/bin $ ./fastboot oem format $ ./fastboot flash xloader android_ICS/device/ti/panda/xloader.bin $ ./fastboot flash bootloader android_ICS/device/ti/panda/bootloader.bin
上述動作也必須在root下完成,主要是在把插在Pandaboard上的SD卡format好以後,把u-boot寫入到此SD卡之中,當未來重新啟動電源時,板子就會自動去讀此SD卡上的bootloader,就不需要每次都從主機上傳bootloader過去了
(PS: 這邊的format步驟只需要做一次即可,因為理論上我們未來不需要去修改SD卡上的bootloader,所以如果之前做過這步驟,就直接跳過4.2和4.3吧)
若是上述指令出現問題,可以用以下指令來驗證主機是否能夠偵測到處於工廠模式下的板子,若是偵測不到裝置,代表可能是你的板子不處於fastboot mode之下,請用putty做確認
$ ./fastboot devices
4.3 接下來要用SD卡的bootloader進入工廠模式(若是你依照上述步驟走下來,現在已經進入工廠模式)
若是中途曾經重開機過,要進入SD卡的bootloader之工廠模式的話,請按住板子上的GPIO按鈕,然後按下旁邊的RESET按鈕,直到putty上出現你進入工廠模式即可
$ cd android_ICS/out/host/linux/bin $ ./fastboot erase cache $ ./fastboot flash userdata $ ./fastboot flashall
上述動作主要是透過工廠模式,把系統的映像檔燒錄到SD卡上,未來開啟電源時,板子會先從SD卡上載入bootloader,然後bootloader又會從SD卡上載入這個映像檔,並掛載成為root file system
這幾個動作總共要花十分鐘左右,可以透過putty來觀察是否有成功
5. 開機
如果你是依照上述步驟走下來的話,此時會自動開始boot, 第一次開機大約要花上15分鐘
請記得接上USB滑鼠,HDMI線和網路線,就可以開始玩Android 4.0囉!!
(PS: 要特別注意,在螢幕解鎖畫面下,系統很快會進入idle模式,此時只要動一動你的滑鼠,螢幕就會跑出來囉)
(PS: 第一次開機似乎顯示driver剛初始化無法正確運作,請等到他完成初始化後,再重新開機就可以正確進入)
6.後續設定
$ cd android_ICS/out/host/linux/bin $ ./adb shell # dhcp
若是要進入adb shell做事,也必須擁有root權限,進去後可以透過netcfg或dhcp來設定網路~
關於如何編譯與燒錄Pandaboard的kernel, 請參考另一篇文章
不好意思,我也在做這塊板子的東西,但是我目前東西都有編譯出來,但是我接上mini usb 到 host 端, 我的電腦會一直跑出,有連接到這塊板子,但一下就會跳開,變成沒有連接,然後就開始一直反覆的連接,無連接...
ReplyDelete請問您有發生過這種問題嗎?
To 空襲:
ReplyDelete這代表您的線材有點短路了
換一條新的USB線應該就可以了
您好! 我有換過三條線 以及 手上兩塊板子 都是一樣的結果,我的 電腦無法正常抓到 我的板子 這會是甚麼問題呢? 還是說需要先安裝甚麼東西 才可能抓到呢?
ReplyDelete我的板子應該是 OMAPS4430的 我在想會不會壞掉 還是說 他的 mini Usb有問題...
順帶一提,我用putty 開,但是無法抓到任何訊息
因為我使用了SD卡開機的方式,但是沒有噴出任何訊息
(之前我曾經有做過 devkit8000 beagleboard-RevC4 mini6410 beagleboard-xM)
首先您可以在本機端下lsusb來確認是否有偵測到此usb裝置
ReplyDelete(或是在windows環境下的裝置管理員來檢查)
如果偵測不到自然就是線或driver或板子的問題
另外,要用終端機來收資料,需要透過UART來連接
其實基本流程就跟beagleboard-xm差不多阿
想請問您一下:
ReplyDelete我有在windows下偵測到這塊板子,但是沒有辦法抓到DRIVERS,所以呈現 無法使用,但是連到虛擬機上,會有一直連上跟跳出的問題,之後灌了一台只有LINUX的,就完全沒反應,而線材之前有做過其他塊板子,是正常地所以我覺得應該沒問題,那假如插到LINUX環境下,是有需要下載他的DRIVER嗎??? 因為板子之前給學姊使用的時候她說她成功用SD卡開機,但是他沒有透過燒錄的方式,所以她也不確定能不能正常連上。
終端機收資料我有接上UART,然後是在WINDOWS下,所以我設定 COM1 115200 serial port,但就是沒有資料XDDD
感謝您^_^
您好,我想請問一下我用adb devices時會有權限問題,如下
ReplyDelete?????????? no permissions
pandaboard的驅動我之前在porting 2.3.5的時候有裝過,也確認可以work
所以我無法用adb shell
我有切換為ROOT,想請問一下這個權限該如何修改呢?
謝謝您
就是用root來連接,
ReplyDelete唯一要注意的是,如果你在非root情況下執行了adb shell
則必須先adb kill-server後才能用root身分進行連接
你好, 我在port ICS到pandaboard有遇到下列問題:
ReplyDelete1. 用usbboot load bootloader.bin到板子上失敗, 透過putty看到的訊息是 "SIGNATURE VERIFICATION FAILED".
2. 嘗試用SD card boot,錯誤訊息是"Could not read bootloader! X-Loader hangs"
不知道您是否有相關經驗可以提供解決的方向?
請問你有遇過需要安裝JAVA6的狀況嗎
ReplyDelete我用DESKTOP的UBUNTU他都要求要有JAVA6
但是我怎麼裝都裝不起來JAVA6
用Server的版本會不會有這樣的問題
請參考以下網站:
Deletehttp://www.cnblogs.com/wanqieddy/archive/2011/07/14/2106648.html
你好
ReplyDelete因為我的ubuntu環境為32bit LSB
我已經編譯好ICS
但是執行PandaBoard/ICS4.0/device/ti/panda# ./usbboot bootloader.bin
bash: ./usbboot: cannot execute binary file
無法執行這個binary file
檢查的結果,
PandaBoard/ICS4.0/device/ti/panda#file /sbin/init
/sbin/init: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped
發現usbboot是一個64bit binary file
請問有辦法解決嗎?
你可以重新在32bit電腦上編譯你的usbboot,可以參考這個資料:
Deletehttp://groups.google.com/group/android-porting/browse_thread/thread/70910b0eef198d83?pli=1
謝謝~
ReplyDelete另外有個問題想在請教一下
我的環境是windows在vmware上安裝ubuntu,
現在我將miniUSB插上後,
windows沒有辦法安裝這個硬體,安裝失敗後,
ubuntu下也看不見omap4430,所以雖然我現在usbboot可以執行,
但是一直是停頓在這裡,找不到omap4430,
PandaBoard/ICS4.0/device/ti/panda# ./usbboot bootloader.bin
using built-in 2ndstage.bin
waiting for OMAP44xx device...
請問有什麼想法嗎?
還是windows要安裝driver ?
或者你們的環境是純linux ?
你可以用lsusb看看有沒有正確抓到裝置,
Delete如果沒有的話可能是要裝windows用的driver,
我的環境是純的Ubuntu
你好
ReplyDelete我在稍好SD卡上
等他重新開機 請問我要做什麼事情嗎
我有接HDMI的線到螢幕上
PANDABOARD有兩箇HDMI街頭要接那一各
1. 去泡杯茶
Delete2. 請看我文章裡的圖片編號5
如果15分鐘後還是沒畫面
ReplyDelete那請問是什麼問題嗎?
$ sudo out/host/linux-x86/bin/fastboot -p panda flashall
--------------------------------------------
Bootloader Version...: U-Boot 1.1.4-g157fe435
Baseband Version.....:
Serial Number........: ################
--------------------------------------------
checking product...
OKAY [ 0.006s]
sending 'boot' (3750 KB)...
OKAY [ 2.331s]
writing 'boot'...
OKAY [ 2.381s]
sending 'system' (146598 KB)...
OKAY [ 89.414s]
writing 'system'...
OKAY [119.862s]
rebooting...
finished. total time: 215.212s
我是做完上面這一部
(PS: 要特別注意,在螢幕解鎖畫面下,系統很快會進入idle模式,此時只要動一動你的滑鼠,螢幕就會跑出來囉)
Delete(PS: 第一次開機似乎顯示driver剛初始化無法正確運作,請等到他完成初始化後,再重新開機就可以正確進入)
你可以查看一下putty吐出來的資訊是什麼,這樣比較能夠知道原因
那這時候可以重新開機嗎? POWER ON OFF有影響嗎?
ReplyDelete隨時都可以重開機,直接拔掉重插電源,或是按reset按鈕都可
Delete如果還是沒有畫面
ReplyDelete請問怎麼辦
怎麼辦? 我也不知道阿呵呵...
Delete詢問之前請先提供你的debugging message
root@leo:/home/leo/projects/android-ics/out/host/linux-x86/bin# ./fastboot oem format
ReplyDelete...
OKAY [ 0.395s]
finished. total time: 0.395s
root@leo:/home/leo/projects/android-ics/out/host/linux-x86/bin# ./fastboot flash xloader /home/leo/projects/android-ics/device/ti/panda/xloader.bin
sending 'xloader' (23 KB)...
OKAY [ 0.007s]
writing 'xloader'...
OKAY [ 0.238s]
finished. total time: 0.244s
root@leo:/home/leo/projects/android-ics/out/host/linux-x86/bin# ./fastboot flash xloader /home/leo/projects/android-ics/device/ti/panda/bootloader.bin
sending 'xloader' (161 KB)...
OKAY [ 0.015s]
writing 'xloader'...
FAILED (remote: image too large for partition)
finished. total time: 0.018s
root@leo:/home/leo/projects/android-ics/out/host/linux-x86/bin# ./fastboot flash xloader /home/leo/projects/android-ics/device/ti/panda/bootloader.bin
sending 'xloader' (161 KB)...
OKAY [ 0.015s]
writing 'xloader'...
FAILED (remote: image too large for partition)
finished. total time: 0.018s
root@leo:/home/leo/projects/android-ics/out/host/linux-x86/bin# ./fastboot oem format
...
OKAY [ 0.265s]
finished. total time: 0.265s
root@leo:/home/leo/projects/android-ics/out/host/linux-x86/bin# ./fastboot flash xloader /home/leo/projects/android-ics/device/ti/panda/xloader.bin
sending 'xloader' (23 KB)...
OKAY [ 0.006s]
writing 'xloader'...
OKAY [ 0.238s]
finished. total time: 0.244s
root@leo:/home/leo/projects/android-ics/out/host/linux-x86/bin# ./fastboot flash xloader /home/leo/projects/android-ics/device/ti/panda/bootloader.bin
sending 'xloader' (161 KB)...
OKAY [ 0.015s]
writing 'xloader'...
FAILED (remote: image too large for partition)
finished. total time: 0.018s
root@leo:/home/leo/projects/android-ics/out/host/linux-x86/bin# ./fastboot devices
6A42000200000001 fastboot
root@leo:/home/leo/projects/android-ics/out/host/linux-x86/bin# ./fastboot erase cache
erasing 'cache'...
OKAY [102.906s]
finished. total time: 102.906s
root@leo:/home/leo/projects/android-ics/out/host/linux-x86/bin# ./fastboot flash userdata
sending 'userdata' (10504 KB)...
OKAY [ 0.575s]
writing 'userdata'...
OKAY [ 4.730s]
finished. total time: 5.306s
root@leo:/home/leo/projects/android-ics/out/host/linux-x86/bin# ./fastboot flashall
--------------------------------------------
Bootloader Version...: U-Boot 1.1.4-gedeced79
Baseband Version.....:
Serial Number........: 6A42000200000001
--------------------------------------------
checking product...
OKAY [ 0.001s]
sending 'boot' (3774 KB)...
OKAY [ 0.206s]
writing 'boot'...
OKAY [ 1.721s]
sending 'system' (146946 KB)...
OKAY [ 7.822s]
writing 'system'...
OKAY [ 58.024s]
rebooting...
我發現有一部FAIL
root@leo:/home/leo/projects/android-ics/out/host/linux-x86/bin# ./fastboot flash xloader /home/leo/projects/android-ics/device/ti/panda/bootloader.bin
sending 'xloader' (161 KB)...
OKAY [ 0.015s]
writing 'xloader'...
FAILED (remote: image too large for partition)
finished. total time: 0.018s
請問怎麼解決?換一張記憶卡嗎還是版子有問題?
SDCARD太小?
Delete我是用4G的SDCARD,官方說明文件也說要4G
./fastboot flash xloader /home/leo/projects/android-ics/device/ti/panda/bootloader.bin
Delete單純指令下錯
xloader => bootloader.bin ??
./fastboot flash xloader android_ICS/device/ti/panda/xloader.bin
./fastboot flash bootloader android_ICS/device/ti/panda/bootloader.bin
我也是用4G的 還有什麼要注意的嗎?
ReplyDelete請問燒是透過USB去燒錄嗎
ReplyDelete還是透過RS232轉USB的那一條
有什麼辦法可以檢查SD CARD裡面有沒有資料或是版子是不是好的?
ReplyDelete我把記憶卡放到UBUNTU裡面去看我發現有資料
ReplyDelete但是畫面就是看不到
我用HDMI轉DVI或是兩邊都是HDMI接到我的螢幕
都是黑畫面
請問街道HDMI會有出現什麼嗎
我之前還有出現解析度的訊息但是是黑畫面
現在就只有黑畫面
請問有解決的方法嗎? 感謝!!
我用putty 抓
ReplyDelete開機的資訊有一推的Fail
主要是
PVR_K:(ERROR): BridgeDispatchKM: Initialisation failed. Driver unusable. [4811, driver/gpu/pvr/bridge_pvr_bridge.c]
你方便幫我燒一張4G的SD卡嗎
ReplyDelete我在轉帳給你
請問燒好SD卡以後怎麼增加帳號
ReplyDelete還有SD卡的空間怎麼讓它變大
我用8G的卡但是空間只有500MB
大哥您好:
ReplyDelete請教您,我有做到$ make fastboot,這個步驟,但是出現以下訊息,
============================================
PLATFORM_VERSION_CODENAME=AOSP
PLATFORM_VERSION=4.0.9.99.999.9999.99999
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
HOST_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.2.0-30-generic-x86_64-with-Ubuntu-12.04-precise
HOST_BUILD_TYPE=release
BUILD_ID=OPENMASTER
OUT_DIR=out
============================================
build/core/base_rules.mk:516: dalvik/dx/junit-tests/Android.mk: Module "dx-tests" has useless module tags: tests. It will be installed anyway.
build/core/base_rules.mk:516: libcore/Android.mk: Module "core-tests-hostdex" has useless module tags: tests. It will be installed anyway.
find: ‘src’: 沒有此一檔案或目錄
*** Overlay change detected, clean shared intermediate files...
*** rm -rf out/target/common/obj/APPS/framework-res_intermediates
PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/Effect_Tick.ogg:system/media/audio/ui/Effect_Tick.ogg ignored.
PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/KeypressStandard.ogg:system/media/audio/ui/KeypressStandard.ogg ignored.
。
。
。
。
PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Solarium.ogg:system/media/audio/ringtones/Solarium.ogg ignored.
make: Nothing to be done for `fastboot'.
root@ubuntu12:/home/ubuntu/android-ics#
請問是否哪邊出錯了,謝謝您。
Sorry 補充:
ReplyDeleteout/target/common/obj/APPS/framework-res_intermediates
/APPS/ 底下並沒有 framework-res_intermediates
您好~想請問一下~怎麼把u-boot寫進SD卡??我是超級新手~光寫進SD卡這個程序我就搞不太懂了~看官網跟大家分享的資訊~也不是很懂~目前我寫的方法是用http://ldsrc.blogspot.tw/2012_05_01_archive.html這位版大的方法~只是第二步驟一直失敗~可以開機~但畫面是歪的~而這個方法跟直接把u-boot寫進SD卡似乎也不太一樣??我現在需要的是使用MLO、u-boot、uImages寫進SD卡....麻煩版大指導一下了Orz
ReplyDelete