Android2.2的移植

Android2.2的移植的詳細步驟

一、  安卓系統的組成

a.  應用層

b.  應用程序框架

c.  庫和運行環境

d.  內核

e.  硬件

二、  移植的主要步驟

 1)安裝sunJDK

開發環境:ubuntu 10.04 32位

a.  卸載系統中的open JDK

爲了標準我們先把系統中的openJDK卸載掉,把從網上下載的jdk-1_5_0_22-linux-i586.bin(47M)安裝下就可以了.

b.  安裝好後,接下來就是要對這個配置文件進行配置。配置的路徑是/etc/profile.d/java.sh (這裏要說明的一點是java.sh要臨時創建),裏面配置的信息是:

export JAVA_HOME=<jdkome>/jdk-1_5_0_22-i586.bin

exportCLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

exportPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

 

c.  如何檢測是否安裝好jdk.

在命令行輸入:java  –version

java version "1.5.0_22"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_22-b03)
Java HotSpot(TM) Server VM (build 1.5.0_22-b03, mixed mode)

若看到這個則說明成功。

查看環境變量修改成功與否

在命令行中輸入:

echo $JAVA_HMOE
echo $CLASSPATH 

2) 編譯android 2.2 froyo

先在網上下載一個安卓的類文件系統(android 2.2 Froyo),然後對其進行解壓:

tar –xvf  xxx.tar.gz    //這是把這個解壓到當前目錄

cd xxx                //cd 進入到這個目錄中去

make -j4             //對這個進行編譯,這可能要花費好長一段時間,我在編譯的過程中沒遇到多大的問題,在這就不在細說了,主要一點是要把上步的那個JDK裝好後遇到的問題就比較的少,我在編譯個過程中遇到的問題也就是一些命令提醒說沒有安裝而已,我用apt-get install  xxx安裝下就可以了。
編譯完後再會告訴你編譯的東西出來東西在哪,而且也不會報錯,也不會報警告。

3)編譯完成後,模擬器的實現與運行

a.模擬器的實現

把類文件系統目錄下out/target/product/generic/system

out/target/product/generic/system 複製到out/target/product/generic/root下面去。

 

/etc/profile.d/java.sh中加入那麼一句 

export PATH=$PATH:<androidhome>/out/host/linux-x86/bin

b.模擬器的運行

  命令行中輸入:emulator –shell

4)實現編譯器的靜態鏈接

先下載一個軟件:arm-none-linux-gcc的軟件,先對它進行解壓後進入/bin目錄下就有這條命令(arm-none-linux-gnueabi-gcc),arm-none-linux-gnueabi-gcc –static test.c –o test,

Cp test out/target/product/generic/system/bin

Mkyaffs2image system system.img

Emulator –shell

#test   這就會出現剛纔你新建的命令中寫的東西

5)實現android自帶的編譯器

cd <android home>

. build/envsetup.sh //點後面記得要有空格

mmm <你想編譯的目錄>

在做上幾步之前要先做這步:

首先要先創建Android.mk文件,裏面填寫內容如下:

LOCAL_PATH  := $(call my-dir)

include $(BUILD_JAVA_SHARED_LIBRARY)

LOCAL_SRC_FILE := test.c

LOCAL_MODULE  := test

LOCAL_SHARED_LIBRAYR  := libc

include $(BUILD_EXECTALE)

 

 

 




 

 

 

 

 

10)u-boot的編譯

tar –xvf xxx.tar.gz2

cd xxx

Makefile中找到你的是哪種板,我自己的是up6410_sd_config.

在命令行中輸入make up6410_sd_config

然後就輸入make –j4編譯就可以了。

在最後編譯成功會出現u-boot在哪裏。

11)、內核的編譯

Tar –xvf xxx.tar.gz2

Cd xxx

makefile中改下編譯工具的路徑,然後就可以開始編譯了。在命令行輸入make –j4

編譯完就可以了。編譯完後把編譯出來的zImage複製到/tftproot下就行了。現在還差個android系統,之前在前面我們已將把它編譯完成了。

12)、android系統的構建

<androidhome>/out/target/product/generic/下的rootdata

System組成一個nfsroot文件夾,操作演示如下:

cp –rf <android >/out/target/product/generic/root/*/nfsroot/

cp –rf <android>/out/target/product/generic/system /nfsroot/

cp –rf < android>/out/target/product/generic/data/ /nfsroot/

/nfsroot/這個就是類似linux中的文件系統,這個就是安卓系統。

 

在電腦與開發板之間連線和設置開發板的環境,開發板的主要環境還是先裝下minicom這個軟件和tftpnfs服務等,裝好這些之後就可以開始下載了。

13)、android系統的下載

先在命令行中輸入minicom –s,設置端口參數,這裏就不在多說了。在這之前要把arm板與pc電腦相連接好,進入了u-boot界面後,就要開始設置一些環境參數了。開發板的IP,電腦的IPgatewayipbootargs等,如下所示:

setenv bootargs console=ttySAC0root=/dev/nfs nfsroot=2.2.2.254:/nfsroot ip=2.2.2.20

setenv serviceip=2.2.2.254

setenv ip=2.2.2.20

下載過程:

     tftp50008000 zImage bootm 50008000

u-boot界面下輸入這兩條命令後就行了,系統就能啓動起來了,要記得在這個期間,串口線和網線不能段,應爲我們只是把內核和文件系統放到arm板的內存中去運行的還沒保存到硬盤(nandflash)中,所以在運行中數據在通信是不能斷開的,而且斷電後又要重新燒寫。

14)、android觸摸屏的校正

啓動起來後點擊下屏卻沒有反應,我這個開發板用的是tft電阻屏,雖然在內核中有觸摸屏驅動,但是沒校正屏幕的驅動,依然無法使用,linux中有一款開源的軟件軟件,名字是tslib,能夠爲觸摸屏驅動獲得的採樣提供諸如濾波、去抖、校準等功能,通常作爲觸摸屏驅動的適配層,爲上層的應用提供了一個統一的接口。

步驟爲:

     首先先要從網上下載一個tslib的軟件,對其進行解壓。

tar –xvf xxx.tar.gz2(這是解壓到當前文件夾)

解壓完之後進入到目錄中:cd xxx/,

用編輯器vim打開裏面的一個叫Android.mk文件,在他的第幾行處加入這麼一行,保存退出

執行 ./configure,在回到<android home>目錄中,把剛纔解壓出來的目錄編譯進android內核中去,執行命令:

. bulid/envsetup.sh

mmm <你所執行文件的目錄>

先把/nfsroot中的system刪除,在從文件系統中的system複製到刪的位置。

先把<kernel home>/driver/input/touchscreen/s3c2410.c的第幾行註解掉

接着就把開發板和pc機連接起來,把android啓動起來,啓動後再android shell中輸入ts_calibrate,你會發現會報說沒有ts.conf這個文件,接下來我們就來講下怎樣得到這個文件。

執行完後再接着做這個步驟:

cp tslib/etc/ts.conf  /nfsroot/system/etc  -rf

這個文件複製完後在執行ts_calibrate這條命令時就不會保錯了,在開發板上會出現要你校屏的界面。你就用手或其他對屏進行校正,校正完後參數保存在 system/etc/pointercal

下,在把這個參數複製到

<kernel home>/driver/input/touchscreen/s3c2410.c下,把

剛纔註解掉的參數中這邊新複製過來的替換掉。(這裏要重新編譯內核,這要記得不然是沒效的)。

 

15)androidframebuffer的分析

16)android ALSA聲卡驅動的移植

到現在這步這個項目已經進行到一半多了,現在我們就來聊聊關於聲卡驅動的移植,聲卡不想顯卡一樣,把文件系統移植上去就能顯示,如若不做這步的話聲卡是用不了的。移植聲卡驅動的話要另外下載三個包,網站地址:www.developer.android.com.下載這三個解壓包:alsa-libalsa-utilalsa_sound.下載完後把這三個解壓包解壓到指定的文件夾如下:

tar jxf alsa-lib alsa-utils  -C <android home>/external/

tar jxf alsa_sound <androidhome>/hardware/

解壓完這三個文件之後,接下來

編輯 <android home>build/board/generic/BoardConfig.mk

加入二行:

              BOARD_USES_ALSA_AUDIO:= true

              BUILD_WITH_ALSA_UTILS:= true

 

接下來重新編譯文件系統。

 

android系統燒錄nandflash

1.   編譯靜態鏈接的busybox

從網上下載busybox這個文件,解壓到當前文件夾中。進入解壓後的目錄中,輸入make menuconfig

Busybox settings à

  BuildOptionsà    

     Build busybox as a static binary (選上)

     Cross compiler prefix(輸入你的編譯器的地址)

   Installationoptionsà

       Busybox installation prefix(寫上安裝的地址)

設置完後保存

接下來就要編譯busybox,命令是make –j4,我這邊編譯出來的地址是默認的,在./install中,把install/bin/busybox複製到/nfsroot(文件系統)中,啓動開發板進入到系統中後輸入以下命令:

/busybox mount –t yaff2/dev/block/mtdblock3 /mnt

/busybox cp –rf /nfsroot_android(文件系統的複製份)/*/mnt

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章