`

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系统成功移植openssh的步骤

    该文档为亲手实践总结,绝对靠谱,从下载openssh源码到成功使用的全过程,凝聚了网上很多经验。

    omap3530 移植android2.2及导入Eclipse全过程

    Omap3530 对android 的移植

    编译Android源码全过程

    介绍android源码下载方法步骤、编译过程、编译后运行的方法。

    ARM Cortex-A8和Android 4.x联动报警系统

    第20节:Android移植之Android文件系统编译.zip 第21节:linux补充之vi使用.zip 第22节:linux补充之shell命令.zip 第23节:Android移植之开发板真机测试.zip 三、Cortex-A8裸机开发: 第24节:Cortex-A8裸机开发...

    深度学习入门之模型训练到移植使用全过程学习文档.zip

    通过Keras和tesorflow简单的几行代码,训练自己需要的模型,实现图像识别。...Android实现智能识别,把Keras或Tensorflow训练的深度学习模型移植到Android上进行使用。 具体请参考发表的博客文章。

    基于ARM Cortex-A8和Android 4.x的联动报警系统 (Android 、A8、Linux、驱动、NDK)

    掌握Android从应用开发,到系统移植,再到设备驱动开发的全套技术,无疑会极大的提升自己的职业竞争力和薪酬谢水平 ,本课程深入浅出,手敲全部实战项目代码,经历软硬件结合的嵌入式项目开发全部过程,而且课程中不...

    嵌入式平台虚拟机移植

    嵌入式平台虚拟机移植,具有移植全过程,详细而又简单

    ARM Cortex-A8和Android 4.x的联动报警

    掌握Android从应用开发,到系统移植,再到设备驱动开发的全套技术,无疑会极大的提升自己的职业竞争力和薪酬谢水平 ,本课程深入浅出,手敲全部实战项目代码,经历软硬件结合的嵌入式项目开发全部过程,而且课程中不...

    AIR_Android应用开发实战

    全书共16章,分为五个部分:准备篇(1~2章) 主要介绍了利用AIR开发Android应用之前需要了解的基本信息、开发环境的搭建,以及一个简单的AIR Android应用开发的全过程,旨在让读者对AIR Android应用开发有一个全面...

    Unity对接网狐服务器.pdf

    前几年,网 狐为 Android和 iPhone两个移动平台分别开发了大厅, 弊端显而易见, 一个游戏就会同时配有三个不同平台的客户端,也就是说,需要使用 三种编程语言来实现客户端才能满足市场的需求。 这三种语言分别是 ...

Global site tag (gtag.js) - Google Analytics