Android移植到Asus P535步驟說明

來源:互聯網
上載者:User
轉自:http://sites.google.com/site/siteofhx/Home/android/android-porting-steps

1. 首先我們大家都知道Android是基於Linux之上的一個軟體平台,Android移植的大部分工作其實是Linux到P535的移植。所以,我們首先需要完成Linux的移植。

2. P535原本是Windows Mobile系統(以下簡稱WM),因此需要解決如何從WM引導進入Linux的問題。燒boot是不可能了,我只有一台P535,可不想把3000多大洋換成磚頭。幸好有HaRET這個好工具,它運行在WM下,可以直接讀取linux的zImage檔案實現核心載入。所以,欲練神功,必先...
學習HaRET,首頁地址: http://www.handhelds.org/moin/moin.cgi/HaRET

3. 接下來要編譯一個能在P535上跑起來的linux核心檔案zImage。從www.kernel.org下載下來的linux原始碼編譯產生的zImage是無法直接跑起來的,因為缺了對P535硬體裝置的驅動支援。最好有一套能直接支援P535裝置的Linux原始碼,有嗎?沒有。如果有的話這移植工作就太沒勁了。不過,我們可以找到一個好的起點。請訪問連結:
http://www.handhelds.org/moin/moin.cgi/GettingHandheldKernels
handhelds是一個組織,他們的工作就是移植linux到各種PDA上面,包括HP、HTC、DELL等等,還有Asus,不過都是一些老的型號,不包括P535。這個組織似乎有一兩年沒什麼動靜了,他們的Familiar項目最後版本v0.84發布日期是06年8月20日。所以指望他們去更新支援P535是不可能了,我還嘗試過發郵件想加入他們的隊伍,結果沒人理我:( 。

看來只能自力更生了。他們雖然不更新了,但是他們的網站依然屹立。從上面的連結,我們可以下載到他們維護的最近的linux原始碼版本2.6.21。這個版本就是我們的出發點。

4. 載下來的這套原始碼我們稱為handheld linux2.6.21,它與官方linux2.6.21的區別在於增加了對很多PDA裝置的驅動支援。雖然不包括P535,但我們可以參考其他類似裝置完成對我們裝置的驅動支援。我當時參考的其它裝置主要有:Asus A730, Asus 696, HTC magician等。因為P535的很多硬體組件的晶片型號與這幾款裝置相同。

那如何知道P535使用的都是什麼晶片呢?這得下點狠功夫了,拆機!而且是很徹底的那種。不狠一點怎麼能體會到幹底層工作的樂趣?!心腸不夠狠的弟兄可以參考我拆機後拍的照片。
http://sites.google.com/site/siteofhx/Home/android/p535-hardware
我這台已經被我肢解過好幾十次了,之前換觸控螢幕、升級記憶體都是大手術,能倖存下來真是頑強。

5. 知道了硬體晶片型號,可又不知道管腳串連,又不可能向Asus要電路圖,怎麼辦?認真學習並操練過前面幾個步驟的弟兄可能已經有答案了。HaRET這個工具再次出馬,所以要不我怎麼說欲練神功,必先....

通過HaRET這個工具,我們可以知道P535中各個組件對應的GPIO,最重要的是搞清楚鍵盤、LCD、觸控螢幕,這三個硬體驅動的成功移植是我們的首要目標,這樣才能體驗到Android Touch操作的快感!

6. OK,這幾項準備工作完成後,您就可以開始埋頭苦幹了,寫代碼、編譯、調試、拷貝、粘貼,快的話幾天,慢的話幾周,最後炮製出一個能在自己的機器上跑起來的zImage檔案。

對了,得用這個交叉編譯器:
http://www.codesourcery.com/gnu_toolchains/arm/portal/package3696/public/arm-none-linux-gnueabi/arm-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

7. 光有zImage最多隻能進入黑漆漆的命令列介面,無法驗證鍵盤、液晶和觸控螢幕是否工作正常,解決這個問題,您可以到這裡:
http://familiar.handhelds.org/releases/v0.8.4/install/files/ipaq-pxa270/
下載一個rootfs系統,準備一張閒置SD卡,將下載的檔案解到卡中,然後通過HaRET引導您炮製好的linux kernel,啟來後執行rootfs中的初始化指令碼,進入GPE或者OPIE的圖形介面,這時您就可以驗證您的鍵盤、LCD和觸控螢幕驅動是否正常工作了。

如果還不正常,那再埋頭苦幹吧,這關必須過了才能繼續往下走。

8. 過了上一關,Linux的移植已經被你踩在了腳下,您一定有一點興奮感和成就感了。別急,讓我們繼續往上爬。

Android SDK 1.0使用的linux版本是2.6.25,而我們剛剛完成移植的版本是2.6.21,要知道他們之間有什麼不同嗎?在此推薦一個非常棒的工具,Meld Diff Viewer,有了它,後面的工作將變得易如反掌。
從Kernel.org下載一份官方的2.6.25,同您剛完成的handheld 2.6.21比較一下,不比不知道,一比嚇一跳!改動的地方是不是很多?不要怕,讓我們一步一步搞定。

我們之前的移植是基於handheld的版本完成的,多少有點讓我們感覺是踩在了別人的肩膀上爬上來的。沒關係,至少我們學會了爬。現在讓我們回到地上,自己爬上來。
從Kernel.org再下載一份官方的2.6.21,用Meld同前面的handheld 2.6.21比較一下,將官方版本缺少的驅動合并過來,不要一股腦全部合并過來,看看您的P535缺少什麼才合并什麼,這樣子您就非常清楚從官方下載的linux需要增加哪些驅動才能在您的機器上跑起來。

合并完成後,編譯和調試您的官方2.6.21版本,讓它也能順利的跑起來,進入GPE和OPIE圖形介面。

9. 把移植成功的官方2.6.21,同前面下載的官方2.6.25進行比較,官方比官方,差別是不是沒那麼恐怖了?同樣,將2.6.25缺少的驅動檔案從2.6.21合并過來,編譯調試,讓2.6.25也跑起來。

10. OK,下面我們要真正開始同Android打交道了。
先下載 Android 使用的linux版本,地址在此:http://code.google.com/p/android/downloads/list
再下載Android SDK 1.0:http://code.google.com/android/download.html
照此教程從SDK中提取Android的rootfs:http://discuz-android.blogspot.com/2008/01/extract-google-android-file-system.html

現在就差Android的linux zImage了。

11. 將Android linux2.6.25同前面移植完成的官方linux2.6.25比較,找出其中的異同,將官方2.6.25缺少的東東從Android linux2.6.25合并過來,注意不要搞錯方向了。其中,凡是涉及QEMU、Goldfish及yaffs2的內容沒有用處,不要合并過來。您會發現其實Android對linux的改動很小。
這一步的詳細操作請參考這個連結:http://elinux.org/Android_on_OMAP

然後編譯,又得到一個zImage. 調試它,讓它能順利引導進入Android rootfs中的初始化指令碼。

12. 引導進入Android的圖形介面不像進入GPE和OPIE那麼順利,因為Android對LCD驅動有特殊的要求,需要Frame Buffer驅動支援double buffering 和 pan function。您需要參考這個文章:http://androidzaurus.seesaa.net/article/105551643.html 或者 http://www.androidrd.com/thread-9-1-1.html 完成對2.6.25內建的Frame Buffer驅動的修改。

LCD驅動完成後就可以看到閃閃發光的 Android 機器人,並進入令人激動的 Android 介面了。

13. 但等等,觸控螢幕還不能正常工作!再漂亮的介面,不能 Touch哪來的快感?所以,一定要挺住,完成這最後一步。
Touchscreen驅動移植的關鍵在於2.6.25內建的WM97XX觸摸驅動在pen點擊螢幕時,沒有發送 BTN_TOUCH 事件給上層,這在GPE下可以正常工作,但 Android可不理你,一點反應沒有,因此,修改您的驅動,讓它向Android發出求愛資訊吧!

此外,觸摸驅動發出的X座標是對的,Y座標是倒過來的,您需要修改驅動糾正一下姿勢。參考:http://androidzaurus.seesaa.net/article/90045743.html

Enjoy!

有任何問題,請在 BBS 中留言.
相關移植檔案請查看 Revelant Porting Files .

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.