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/下的root、data、
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这个软件和tftp、nfs服务等,装好这些之后就可以开始下载了。
13)、android系统的下载
先在命令行中输入minicom –s,设置端口参数,这里就不在多说了。在这之前要把arm板与pc电脑相连接好,进入了u-boot界面后,就要开始设置一些环境参数了。开发板的IP,电脑的IP,gatewayip,bootargs等,如下所示:
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-lib、alsa-util、alsa_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