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