Android系统移植全过程

Android开发环境篇

一.  安装:

Required Packages

Android requires the following system packages:

  • flex: This lexical analyzer generator is used to read a given input file for a description of a scanner to generate.
  • bison: This is a general-purpose parser generator.
  • gperf: This is a perfect hash function generator.
  • libesd0-dev: This enlightened sound daemon (dev files) is used to mix digitized audio streams for playback by a single device.
  • libwxgtk2.6-dev: This package provides GUI components and other facilities for many different platforms.
  • build-essential: This package contains a list of packages considered fundamental to building Debian packages.

$sudo apt-get install git-core gnupg gperf libsdl-dev libesd0-dev

$sudo apt-get install libwxgtk2.6-dev zip curl minicom tftpd

$sudo apt-get install uboot-mkimage libx11-dev libncurses-dev

$sudo apt-get install expect bison build-essential flex zlib1g-dev

四.  JAVA工具安装

1.  JAVA安装时我遇到很多问题:

如果已经安装了sun-java6-jdk,编绎时会提示下列错误:

Your version is: java version "1.6.0_20".
The correct version is: 1.5.
或者是没有提示,可是最后编绎仍然失败,说找不到很多库.

如果已经安装了sun-java5-jdk,编绎时会提示下列错误:

Your version is: java version "1.5.0_19"
The correct version is: 1.6.

2. 后来我想了一个办法,试了ubuntu9.10和ubuntu10.04都可以正常工作了

安装步骤:
(1). 对于Ubuntu 9.10以上用户,先修改 /etc/apt/sources.list

在结尾增加两行:

deb http://cn.archive.ubuntu.com/ubuntu/ jaunty multiverse
deb http://cn.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse
然后执行
$ sudo apt-get update

(2). 安装sun-java6-jdk
$ sudo apt-get install sun-java6-jdk

(3). 卸载sun-java6-jdk
$ sudo apt-get remove sun-java6-jdk
$ sudo apt-get remove sun-java6-bin

(4). 安装sun-java5-jdk
$ sudo apt-get install sun-java5-jdk

安装过程会有一个图形界面,如果你按不了确定,请用TAB键切过去就可以了。

安装完看一下版本
$ java -version
java version "1.5.0_19"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_19-b02)
Java HotSpot(TM) Client VM (build 1.5.0_19-b02, mixed mode, sharing)

至此,开发环境完成!


Android SDK篇

一.  安装repo
01.$ curl http://android.git.kernel.org/repo> /bin/repo /*我选择安装到/bin目录*/

02.$ chmod a+x /bin/repo
复制代码二.  建立工作目录
01.$ export ANDROID=你的android目录 #定义source路径

02.$ mkdir -p $ANDROID

03.$ cd $ANDROID
复制代码三.  下载源码

1. 先下载manifest所有的东东
01.$ repo init -u git://android.git.kernel.org/platform/manifest.git

02.$ repo sync
复制代码1.7G的文件,下载起来不容易,所以这时我们要做好备份工作。
下载完后,有一个隐藏的文件夹".repo",把这个另外保存起来就可以了,其它文件可以删了。

2. 获取 android-2.2_r1.1 项目

(1) 初始化android-2.2_r1.1项目
01.$ repo init -u git://android.git.kernel.org/platform/manifest.git -b android-2.2_r1.1
(复制代码(2) 创建local_manifest.xml文件
01.$ touch .repo/local_manifest.xml

02.$ vi .repo/local_manifest.xml
复制代码/*不想用vi,也可以用gedit*/
复制下列内容: /* 目前是先用ALSA相关的东西,以后可能要我们自已选择 */
01.<?xml version="1.0" encoding="UTF-8"?>

02.<manifest>

03.  <project path="external/alsa-lib" name="platform/external/alsa-lib" revision="froyo"/>

04.  <project path="external/alsa-utils" name="platform/external/alsa-utils" revision="froyo"/>

05.  <project path="hardware/alsa_sound" name="platform/hardware/alsa_sound" revision="froyo"/>

06.</manifest>
复制代码(3) 同步)
(本人认为红色部分可以不做,没什么必要)
01.$ repo sync
复制代码由于前面做过sync工作,所以现在快很多,只用几分钟可完成。

四.  I8320 补丁
01.$ cd $ANDROID

02.方法一:直接下载附件,解压到当前目录,可看到vendor文件夹。此方法不推荐,尽供备份。

03.方法二:推荐从 mephistoph 的git仓库里取得最新的vendor:

04.$ git clone git://gitorious.org/h1droid/vendor.git

05.然后将vendor文件夹复制到$ANDROID目录

06.$ cd vendor

07.$ ./sola/omap3/patch/omap3-patch.sh
复制代码五.  Android编绎
01.$ cd $ANDROID

02.$ source build/envsetup.sh

03.$ lunch i8320board-eng

04.$ make -j3
复制代码五.  为了最后能生成image文件,环境准备工作
01.$ cd $ANDROID

02.$ ./vendor/sola/omap3/image/i8320board-image.sh
复制代码六.  TI 公司 Android SGX SDK 获取,这是生成SDK image的工具。

1. 安装TI_Android_SGX_SDK
01.$ cd $ANDROID

02.$ git clone git://gitorious.org/rowboat/ti_android_sgx_sdk.git TI_Android_SGX_SDK

03.$ cd TI_Android_SGX_SDK

04.$ ./OMAP35x_Android_Graphics_SDK_setuplinux_3_01_00_03.bin
复制代码这时会有界面出来,我们开始安装SDK工具,注意安装目录一定为当前目录(TI_Android_SGX_SDK)。

2. 修改make规则。
安装完毕后,编辑/opt/OMAP35x_Android_Graphics_SDK_3_01_00_03/Rules.make文件。

找到文件中对应的地方,修改下面内容:
01.HOME=$(ANDROID)

02.GRAPHICS_INSTALL_DIR=$(ANDROID)/TI_Android_SGX_SDK

03.ANDROID_ROOT=$(ANDROID)/vendor/sola/omap3/image/i8320board/android

04.CSTOOL_DIR=$(ANDROID)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/

05.KERNEL_INSTALL_DIR=[color=DarkOrchid]linux内核绝对路径
复制代码3. 执行下列命令注意,每次修改内核kernel部分后也要重新做下面步骤)
01.$ cd $ANDROID/TI_Android_SGX_SDK

02.$ make

03.$ make install OMAPES=3.x
复制代码这时你的SDK image产生了。

七.  复制image到TF卡

TF卡要求: 200M以上,ext3文件系统。
进入 $ANDROID/vendor/sola/omap3/image/i8320board/android 目录,所有文件复制到TF卡根目录。

八.  运行

将I8320进入download状态,然后插上USB线,下载boot.bin
01.$ cd odin

02.$ ./odin ../boot.bin
复制代码/*boot.bin在前一级目录*/

如果一切顺利,这时屏幕会发白或花屏几秒,然后出来企鹅以及一些字符信息。
第一次启动要初始化我们的TF卡,耐心等一下,可以看到android的logo出来,然后是激动人心的android2.2主界面。

我也是昨天才真正跑起android,还有很多问题需要大家共同研究:
(1)电源管理
(3) wi-fi,声卡,bluetoolth,watchdog,PL_sensor,等等太多的东东都没有搞好。

内核篇
一.  准备工作
1.toolchain建立 
下载和解压toochain:
$ wget http://www.codesourcery.com/sgpp/lite/arm/portal/package5383/public/arm-none-linux-gnueabi/arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
$ tar xvjf arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 -C 你要解压的目录
复制代码
设置toolchain:
$ export PATH=/toolchain文件夹位置/bin:$PATH
$ export CROSS_COMPILE=arm-none-linux-gnueabi-
$ export ARCH=arm
复制代码
2.安装git
# apt-get install git-core
复制代码
二.  u-boot 编绎
1. 下载master分支的源码 $ git clone git://h1.pargon.nl/srv/git-h1/u-boot.git
$ cd u-boot 
2. 获取nowplus分支的代码更新(nowplus就是I8320的别名)$ git checkout nowplus *如果不成功,请用这个命令: $ git checkout -b nowplus origin/nowplus */
h1.pargon.nl的git仓库坏了,请用mephisto新建的仓库:
$ git clone git://gitorious.org/h1droid/u-boot.git 
$ cd u-boot
复制代码
3. 修改u-boot/include/configs/omap3_nowplus.h
CONFIG_BOOTDELAY,CONFIG_EXTRA_ENV_SETTINGS和CONFIG_BOOTCOMMAND
#define CONFIG_BOOTDELAY 0
#define CONFIG_EXTRA_ENV_SETTINGS \
        "loadaddr=0x82000000\0" \
        "console=ttyS2,115200n8\0" \
        "usbtty=cdc_acm\0"\
        "stdout=usbtty\0" \
        "stdin=usbtty\0" \
        "stderr=usbtty\0" \
        "bootargs=root=/dev/mmcblk0p1 rw init=/init rootdelay=1 rootfstype=ext3 rootwait debug\0" \
#define CONFIG_BOOTCOMMAND \
                "bootm 0x86C30000"
复制代码
4. 编绎u-boot
$ make omap3_nowplus_config
$ make
复制代码
三.  Linux内核,版本为2.6.32.9
1. 下载master分支的源码
$ cd u-boot前一级目录 /*注意: u-boot和I8320Kernel应该在同一级目录下方便生成boot.bin*/
(git仓库搬家了,旧的: git://github.com/mephistophilis/I8320Kernel.git)
$ git clone git://gitorious.org/h1droid/i8320kernel.git
$ cd I8320Kernel
复制代码
2. 获取i8320分支的代码更新
(现在没有i8320分支了$ git checkout i8320 /*如果不成功,请用这个命令: $ git checkout -b i8320 origin/i8320 */$ git pull origin i8320)
暂时只需要执行:
$ git pull origin master #更新代码
复制代码
3. 为生成uImage设置工具路径
$ export PATH=u-boot目录/tools:$PATH
复制代码
4. 编绎uImage
$ cp arch/arm/configs/omap_nowplus_defconfig .config
$ make uImage
复制代码
四.  生成boot.bin
boot.bin目的是合成u-boot.bin和uImage.
1. 获取makeboot工具
$ cd kernel和u-boot前一级目录
$ wget  http://h1droid.googlecode.com/files/makeboot.sh
$ chmod +x makeboot.sh
复制代码
2. 生成boot.bin
$ ./makeboot.sh ./u-boot/u-boot.bin ./I8320Kernel/arch/arm/boot/uImage
复制代码
五.  运行内核
1. 下载工具
$ git clone git://h1.pargon.nl/srv/git-h1/odin.git
$ cd odin
复制代码
2. 编绎
$ make brick
复制代码
3. 将I8320进入download状态,然后插上USB线,下载boot.bin
$ ./odin ../boot.bin 
复制代码
/*boot.bin在前一级目录*/
这时屏幕会发白或花屏几秒,然后出来企鹅以及一些字符信息。
系统工作了!!!!

你可能感兴趣的:(Android系统移植全过程)