天天看點

Pandaboard使用手冊1. 移植ubuntu到pandaboard2. 移植android到pandaboard

HaiPeng([email protected])

      最近的實驗需要在移動平台上來做,通過調研發現大多數開發闆不能進行DVFS,手機和平闆又不能随心所欲的修改核心,好在米國的開發闆PandaBoard是可以調頻的開發闆,拿到手的是OMAP4430 雙核1G的處理器,下面就簡單介紹一下,如何在這個開發闆上移植ubuntu和android。

1. 移植ubuntu到pandaboard

      Ubuntu的移植比較簡單,先将ubuntu安裝到SD卡中,然後在編譯相關核心,替換掉SD卡中的鏡像檔案以及驅動就行了,跟在x86上編譯核心的流程類似,下面簡述一下。

安裝ubuntu到pandaboard

1.      在http://omappedia.org/wiki/Prebuilt_ubuntu_binaries選擇自己需要的版本,下載下傳二進制鏡像檔案,如11.04-desktop;

2.      使用gunzip解壓鏡像,如gunzip ubuntu-11.04-preinstalled-desktop-armhf+omap4.img.gz;

3.      插入sd卡,要求sd卡是沒有任何檔案系統的(将sd卡插入linux主機,沒有隻有/dev/sdb,沒有/devsdb1)。可以使用linux下的disk utility工具删除sd卡上的檔案系統;

4.      使用dd指令,将ubuntu鏡像拷貝到sd卡中,如ddbs=4M if=ubuntu-11.04-preinstalled-desktop-armhf+omap4.img of=/dev/sdb;

5.      拷貝完成後,将sd卡插入pandaboard,啟動,便開始将ubuntu裝入sd卡中;

6.      裝入完成後,sd卡被分為兩個分區:boot分區與檔案系統分區。

參考:https://wiki.ubuntu.com/ARM/OmapDesktopInstall

接下來介紹,如何運作自己編譯的核心

1.      下載下傳專門為omap準備的ubuntu的核心源代碼(與上面的比對或者是核心版本高于上面的,就像在ubuntu 11.04編譯高版本的核心一樣):

網址:https://launchpad.net/ubuntu/oneiric/+source/linux-ti-omap4/;

2.      安裝交叉編譯工具:

apt-get install gcc-arm-linux-gnueabi

apt-get install uboot-mkimage

3.      修改Makefile

ARCH=arm

CROSS_COMPILE=arm-linux-gnueabi-

4.      使用預設的config檔案:

cp ./arch/arm/configs/omap4_defconfig.config

5.      自行配置:

make menuconfig

6.      編譯核心和子產品

make uImage –j  4

make modules

7.      挂載sd卡的boot分區,以及rootfs分區

mount /dev/sdb1 /media/boot/

mount /dev/sdb2 /media/rootfs/

8.      拷貝uImage到挂載點(先将之前的uImage備份一下)

mv /media/boot/uImage/media/boot/uImage.bak

cp ./arch/arm/boot/uImage/media/boot/

9.      安裝子產品到sd卡中

export INSTALL_MOD_PATH=/media/rootfs

cd ../ubuntu-natty

make modules_install

10.   解除安裝/dev/sdb1,并将sd卡插入pandaboard中。

2. 移植android到pandaboard

      android到pandaboard的移植麻煩一點,從網上下載下傳的已經編譯好的鏡像檔案燒寫到SD卡上,發現進入android後很卡,根本沒法使用,還是一步步從android的源碼開始編譯吧。

1.      配置編譯android源碼的主機環境

android必須在64位的機器上編譯,我使用的作業系統是ubuntu 11.04。然後根據http://source.android.com/source/initializing.html安裝必要的軟體包:

sudo apt-getinstall git-core gnupg flex bison gperf build-essential \

  zip curl zlib1g-dev libc6-devlib32ncurses5-dev ia32-libs \

  x11proto-core-dev libx11-dev lib32readline5-devlib32z-dev \

  libgl1-mesa-dev g++-multilib mingw32 tofrodospython-markdown \

  libxml2-utils xsltproc

然後配置usb的通路控制,不然ubuntu無法識别pandaboard開發闆,我使用的是root使用者是以username被替換成了root:

# adbprotocol on passion (Nexus One)

SUBSYSTEM=="usb",ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e12",MODE="0600", OWNER="<root>"

# fastbootprotocol on passion (Nexus One)

SUBSYSTEM=="usb",ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0fff",MODE="0600", OWNER="<root>"

….

Jdk的安裝參見http://hi.baidu.com/designhouse/item/0dbece7c4f6af0376e29f6c1。

 2.      準備一塊大的空閑分區

     要求必須大于30G(僅僅同步一個分支),100G是最好的(同步整個android源碼),不然會報磁盤空間不足的錯誤。

 3.      下載下傳android源碼

     這個工作最好是在睡覺的時候下載下傳,因為實在是太慢了。這個可以參見http://source.android.com/source/downloading.html,該網頁預設源碼代碼放在根分區的WORKING_DIRECTORY,自己根據自己的實際情況修改一下就行。我的磁盤隻有30G的空餘,是以隻初始化同步一個分支,我使用的是最新的android 4.04(repo init -u https://android.googlesource.com/platform/manifest-b android-4.0.4_r1)

 4.      下載下傳pandaboard對應的驅動

      網址:https://developers.google.com/android/nexus/drivers?hl=zh-CN,下載下傳完解壓,然後執行解壓後的腳本,最後将生成的verdor目錄拷貝到android源代碼的根目錄下面,預設就是那個WORKING_DIRECTORY目錄下面。

 5.      編譯android核心源碼

      在android源碼根目錄下面執行

sourcebuild/envsetup.sh

lunch full_panda-eng

make –j 4

這期間有可能還會出錯,google吧!

 6.      編譯完成後,将相關檔案燒寫到sd卡中

這個可以參見 http://fosiao.com/content/build-android-4-pandaboard。

其他注意事項:

1.      錯誤網上一般都能找到答案,有一個是需要換一下HDMI的插口的(pandaboard有兩個HDMI接口,我用的是遠離網卡的那個,但是ubuntu使用離網卡近的那個);

2.      通過pandaboard的序列槽來使用linux指令是沒有root權限的,要root使用權限需要用adb shell。adb shell在第6步少寫sd卡的時候已經用過了,使用root,先adb root,然後adb shell就行了;

3.      我使用android已經編譯好的鏡像啟動pandaboard花了一天時間(實驗證明發現隻有http://releases.linaro.org/12.01/android/leb-panda/用起來還行,而且是采用有三個檔案的那種方法,單純的鏡像也是不行的),下載下傳android源碼花了一天時間,編譯android源碼花了一天時間,總共花了3天時間,希望各位能比我快的多;

4.      要使用自己編譯的核心,參加http://blog.chinaunix.net/uid-495571-id-3071261.html,目前個人還用不着,等用找了在将這一塊補充上;

5.      網上已經有人用pandaboard來玩憤怒的小鳥了,支援重力感應,牛人真多啊http://v.ku6.com/show/RtbrEkBr-85lyyjp.html。