Android2.2移植總結(第一部分)

bootargs : set bootargs noinitrd root=/dev/nfs rw nfsroot=192.168.221.90:/shnfs ip=192.168.221.100 console=ttySAC0,115200 init=/linuxrc mem=128M
平臺要求:uname -r 查看RHEL6.1是否爲i686版本,如果有x86_64將無法正常編譯android
android版本 :android-2.2
android kernel:android-kernel-2.6.35 
移植前準備:busybox arm-linux-gcc android-2.2 android-kernel-2.6.35 alsa tslib等
1.安裝Sun JDK
     a>卸載linux 下OpenJDK 方法:redhat 系統中有卸載軟件,直接搜索JDK,卸載相關軟件大概有50個左右吧!
     b>安裝Sun JDK :rpm -ivh jdk-1_5_0_22-linux-i586.rpm 
2.修改環境變量
     a>vim /etc/bashrc 
         添加: export JAVA_HOME=/usr/java/jdk1.5.0_22
               export JRE_HOME=${JAVA_HOME}/jre
               export CLASS_PATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASS_PATH
               export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
               export PATH=${JAVA_PATH}:$PATH
        如果成功:java+TAB 會補全
3.在編譯前最好安裝gperf包:gperf-3.0.4,如果直接make Android會有錯誤,由於編譯時間太長最好最好這步驟
      a> ./configure --build=i386 --host=arm-linux
      b> make
      c> make install
4.編譯Android2.2
      a> make //這個將持續三個小時左右,你可以耐心的研究一下java了
5.編譯如果成功,直接cd out/target/product/generic/目錄下你會發現*.img 
      a>ramdisk.img --->root
      b>system.img---->system
      c>userdata.img--->data
        //這三個目錄將是我們構建nfs的重要目錄/root  --
                                                      /system
                                                      /data
      再來看看我們的模擬器,cd out/host/linux-x86/bin ---->ls---->就會看到emulator模擬器
      那爲了放便我們可以把emulator加在環境變量裏:echo export PATH=$PATH:<此目錄> >>/etc/bashrc
6.驚喜來了,運行模擬器emulator
      a>爲了少加些環境變量,我們進入到 cd /out/target/product/generic/
      b>執行一下ANDROID_PRODUCT_OUT=`pwd` emulator -shell 正確則會進入到emulator。
      c>寫個小程序測試一番,感覺和手機一樣。
      d>應用層就在這裏開發了。
      e>如果覺得這樣比較麻煩,那就把該目錄叫如環境變量。echo export ANDROID_PRODUCT_OUT=<android>/root/outarget/product/generic
      f>生效後emulator 或者emulator -shell
7.Android.mk有一個神奇的功效,在那文件夾裏有着個文件,我們都可回到android-2.2目錄:執行mmm 文件路徑
      a>cd <android home>
  b>. build/envsetup.h
  c>mmm <編譯的目錄>    //該目錄下必須有Android.mk ,如果沒有則去上級目錄
8.eclipse這裏不再介紹,因爲我們完全不依賴這個我們依然可以做到。
9.這裏我們就通過源碼創建android應用程序
  a>先在命令:local-host#android 查看缺什麼東西在相應的目錄上添加mkdir + 目錄;這裏需要添加三個或者四個左右吧,有一個x86,其他的就忘記裏
      b>如果命令可以用裏,這裏我們用android list查看一笑target的id。記住
      c>android  create project -t -k abc.bcd 1 -a example -p ./ 如果不懂就android --help
      d>如果創建成功就和eclipse創建的一樣的目錄結構,仔細研究一番。我們發現只有res src AndroidManifest三個文件有用,其他都是爲eclipse使用的
             res/layout/main.xml
10.這裏說明一下虛擬機是用image三個文件,而不是目錄,如果你對其修改後,一定要記得刪除system.image 
      a>重新生成makyaffs2 ststem/system.image
11.燒寫bootloader到開發板
12.構建Android nfs文件系統a>/mkdir /nfsroot b>vim /etc/exports /nfsroot *(rw,sync,no_root_squash)
13.構建tftp系統
14.配置內核:a>tar zcf android-kernel-2.6.35.tar.gz
             b>cd android-kernel-2.6.35
             c>修改一Makefile 交叉編譯器選擇Android自身的:在目錄android-2.2/prebult/linux_x86/toolchain/
或者make menuconfig 修改編譯器
d>make
            e>cp arch/arm/boot/zImage /tftpboot/
15>cp前面講的文件到/nfsroot下
           a>cp -rf <android home>/out/target/product/generci/root/* /nfsroot
           b>cp -rf <android home>/out/target/product/generci/system/* /nfsroot/system/
           c>cp -rf <android home>/out/target/product/generci/data/* /nfsroot/data/

16.設置開發版setenv bootargs console=ttySAC0 init=/init root=/dev/nfs nfsroot=192.168.221.90:/nfsroot ip=192.168.221.100:192.168.221.90:255.255.255.0
            a>save /saveenv
            b>tftp 50008000 zImage
            c>bootm 50008000
17.這時是啓動不了需要該init.rc 默認權限有問題
                    同時註釋init.rc中的27註釋,變爲橫屏 
                     啓動起來發現觸摸屏不好用,根本沒什麼反映,這時我們就需要矯正這個觸摸屏
18.矯正觸摸屏
            a>對於linux來說我們矯正的時候直接刪掉一個配置文件pointcal,重啓就可以矯正了
            b>而對於Android來說,似乎不像我們想的那麼容易,我們打開這個配置文件發現裏面就是一行數據,而我們要得到這行數據,需要的一個轉換公式
            c>所以我們需要一個程序講這些轉換爲我麼所需要的數據
                   //tslib移植,這個就是Android觸摸屏需要的一個庫
19.移植tslib 下載tslib庫
           a>./configure --host=arm-linux   --build=i386
           b>vim Android.mk         //添加生成庫之前LOCAL_PERLINK_MODULE:=false
           c>. build/envsetup.h
           d>mmm <tslib 目錄>
       e>cp ts.config /sytem/etc/
           f>修改內核代碼kernel/drivers/input/touchscreen/s3c6410.c x=ts.xp;y=ts.yp
           g>make zImage
           f>cp zImage /tftpboot
           h>啓動開發板tftp 50008000 zImage bootm 50008000 我們得到pointcal新數據,再填回內核代碼中。make zImage //重複g f h
20.這樣觸摸屏就能用了。寫一個應用程序測試led
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章