关闭

android系统移植之全过程

标签: android系统移植
1069人阅读 评论(0) 收藏 举报
分类:
Android开发环境篇
1. 安装
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

2. 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都可以正常工作了,安装步骤:
①对于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
②安装sun-java6-jdk
$ sudo apt-get install sun-java6-jdk
③卸载sun-java6-jdk
$ sudo apt-get remove sun-java6-jdk
$ sudo apt-get remove sun-java6-bin
④安装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篇
1. 安装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-4.4_r1 项目
(1) 初始化android-4.4_r1项目
01.$ repo init -u git://android.git.kernel.org/platform/manifest.git -b android-4.4_r1
(复制代码(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工作,所以现在快很多,只用几分钟可完成。

四. 打 补丁
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在前一级目录*/
这时屏幕会发白或花屏几秒,然后出来企鹅以及一些字符信息。系统工作了!
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:22404次
    • 积分:365
    • 等级:
    • 排名:千里之外
    • 原创:12篇
    • 转载:16篇
    • 译文:0篇
    • 评论:1条
    文章存档
    最新评论