Android2.2的移植

本文详细介绍了如何将Android 2.2 Froyo系统进行移植,包括安装JDK、编译系统、实现模拟器、静态链接编译器、U-Boot编译、内核编译、构建Android系统、下载系统到开发板、触摸屏校正、分析framebuffer、移植ALSA声卡驱动等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值