Wednesday, May 18, 2011

追著 Mask 神人的 Android Porting on PXA270

前言
這學期狠下心修了一門資工系的嵌入式系統設計,連微處理機都沒基礎的寶尼,幾乎喘不過氣來,尤其是前兩個實驗課的概念(Linux Driver, Non-os Application)一直無法消化,因此還沒有把操作步驟分想到這裡。前幾堂的助教課程中,(隱約)聽到因為業界還沒有把 Android 移植到 ARM 架構的 PXA270 開發板,因此這學期不會教這部份,會移植另一個 Linux 作為教學。某一堂教 Linux Driver 時,稍微搜尋一下竟然發現神人 Mask 所撰寫的 PDF 文件,幾乎都是 Step by Step 的教學步驟,感覺有一點希望可以自己嘗試看看,反正失敗也是寶尼蠢的問題啊~

前人種樹
Mask 的碩士論文專注於 Android 移植 PXA270,內容以及程式是開放原始碼以及公開的移植過程,並且有投稿研討會。真的是高手中的高手,太欽佩了。

事前準備
  1. 安裝免費的 Virtualbox
  2. 下載 Ubuntu 8.04 TLS 並安裝,其他版本不建議使用 (原因忘記出處!)
  3. Virtualbox 安裝 Guest Additions 


移植操作
主要的操作請參閱 [2.], [3.] 的文件,這裡記錄一下操作遇到的問題以及解決方式。

  • 步驟: Build uImage and roofts.jffs2
cd /path/release-sourceforge/android-pxa270

// 開始編譯出現問題
make

請安裝以下套件,並且重新編譯即可
sudo apt-get install zlib1g-dev,libx11-dev,libssl-dev

星期四借板子才操作後續步驟,下面先將步驟紀錄一下,也只是一些要燒錄的記憶體位址,應該不至到於把參考來源一次不漏地打上來的境界吧。

  • 步驟: Write uImage and roofts.jffs2 into Flash ROM
uImage
tftp a1100000 uImage
protect off 100000 47ffff
erase 100000 47ffff
cp.b a1100000 100000 200000

rootfs.jffs2
tftp a1480000 rootfs.jffs2
protect off 480000 97ffff
erase 480000 97ffff
cp.b a1480000 480000 500000

  • 步驟: 執行 Android 系統
cd tmp
// 預掛載之名稱
mkdir usb

// 掛載 USB 到前面的資料夾名稱
mount /dev/sda1 ./usb

// 到資料夾中
cd usb

// 更換工作環境
chroot .

// 執行 Android
./init

Updated 2011/05/19
目前遭遇,將 uImage 以及 rootfs.jffs2 燒錄後,無法 mount 的窘境。
先鎖定 File System 的問題,重新找尋機會。

Updated 2012/01/10
小弟慚愧,因為期末作業改直接研究 Android App ,加上修課完畢之後整個人都在玩耍,PXA270 已經很久沒碰了,而且這問題當初助教只說以前的學長有做出來,然後把廠商 PXA270 附的 rootfs 燒回去而已,然後就放著了...

感謝網友 Joe 提供的解決方法如下:

mknod sda b 8 0
mknod sda1 b 8 1


當初在搜尋的時候,除了神人的文章之外,幾乎都沒有人在分享成功的案例以及過程遇到問題的解決之道。其實很歡迎大家一起討論這個主題,因為 Porting Android 似乎非常經典,然後如果可以的話又順便把簡單的 Android App 放上去  Run,可以說是一系列的學習過程!然後在這個部落格內放了嵌入式的上課筆記。目前手邊沒有 PXA 270 的板子可以讓寶尼繼續玩耍,有點中途放棄學習的感覺,真的很可惜...

有這些經驗的網友們不訪留下你們偉大的操作記錄,把部落格網址留下來吧!

Reference

[1.] Mask (鍾文昌) 實例教學網頁
[2.] Mask (鍾文昌) BringUp_Android_on_PXA270

5 comments:

  1. 想請問一下ubuntu剛安裝完的時候有需要安裝什麼軟體或套件嗎?
    我make都有error...

    ReplyDelete
  2. Joe:
    錯誤訊息應該會出現缺少哪些套件,再用 apt-get install 安裝處理看看囉^^

    ReplyDelete
  3. 不好意思,我想在請問一下您的無法 mount的問題解決了嗎?

    因為我也卡在同樣的問題

    ReplyDelete
  4. Joe:
    更正回復,我沒有解決呢。後來沒繼續做下去呢(慚愧)

    ReplyDelete
  5. mknod sda b 8 0
    mknod sda1 b 8 1

    就有sda了:)

    ReplyDelete