Android系统介绍与移植
2009-08-13 17:32
573 查看
成功移植Google Android操作系统至摩托E680【转】
2009-02-09 12:12
2009-02-09 12:12
小E真是太太太太太(省略n个太)强大了!!! 不只能在DOS下模拟WIN,还能用OPIE,QTOPIA。。。 当然都不太成熟啦。。。 不过强大就强大!现在android也弄起来啦,不知道发展下去会成啥样,期待啊~ 1.引言 如今越来越多的Google Android爱好者们开始移植Android系统到现有掌上设备上。最早的成功移植 Android系统是在Zaurus上,然后是在OMAP芯片组基础上的N810。 有些开发者将Android运行在来PXA270的开发板上。我们知道,摩托罗拉 MOTO E680系列 EZX 手机使用intel XScal-PXA270 应用芯片处理器,同时使用Linux 2.4.20 kernel。在经过一些研 究之后,我们认为E680完全满足移植Android系统的条件。 2.移植Android到E680 事实上,移植Android系统就是移植Google ndroid kernel到目标装置上,同时让Android root文件系统 和android kernel一同在目标系统上工作。Google在Android SDK中提供了二进制的Android root file system文件系统以及android kernel的源。因此我们可以轻易的从Android SDK中提取出Android root文 件系统,但是我们要考虑怎样将Android kernel移植到我们的E680上面去。 这里有两种方法移植Android系统到E680上。 a)将所有的Android固件整体移植到E680上 b)将E680的kernel升级到2.6.x,然后再装入Android固件。 显而易见的是,方法a要花更多的力气,因为E680的kernel是2.4.20,而Android的Kernel是基于2.6.23 的。 如果我们选择方法b,那么我们需要先升级E680的kernel到2.6.x。幸运的是,有个开源项目叫做 OpenEzx 可以简单的帮助我们升级E680的kernel到2.6.x。这个文档详细的说明了如何通过方法b移植 Android系统到E680上。 2.1 Android Kernel/Root 文件系统 首先我们需要最新版本的Android模拟器系统。(原文使用的是android-emulator-m5-rc14.tar.gz) 下载链接http://code.google.com/p/android/downloads/list Android Root 文件系统,获取自SDK。 下载链接http://code.google.com/android/download_list.html 获得Android升级补丁去升级2.6.x Linux kernel,你需要将Android SDK kernel从official 2.6.23 kernel中 分离,然后确认所有的Android驱动已经正确改变。这个为Linux 2.6.24做的Android patch在安装 包中 对于Android Root文件系统,你需要一些时间去***。你去要从SDK中解压三个镜像ramdisk.img, system.img and userdata.img去简历你需要的root文件系统。你可以在这里和OMAP上的Android做一 个对比。地址:http://elinux.org/Android_on_OMAP。 现在没有在E680上能够使用的Root文件系统,我使用busybox toolkit和Android SDK自己***了一个 新的Android NFS Root文件系统。你可以在网上找到很多有关NFS Root文件系统建立的文章,在这里 就不多讲了。同样,我也在补丁包内放入了Android NFS Root文件系统。 2.2. SW/HW 环境要求 在我们建立了Android kernel和Root文件系统之后,让我们对需要使用的软硬件环境列个清单。 2.1.1 软件环境 Linux Host: 你可以使用任何主流的Linux系统环境,比如Redhat,Fedora等等。看你自己喜欢。 tool-chain : SDK中的Android Root System是使用ARM EABI兼容编译器编译的,因此我们需要ARM EABI兼容编译 器去编译我们的kerne。 ARM EABI compatible too-chain下载地址 http://www.codesourcery.com/gnu_toolchains/arm/download.html 你应该下载arm-2007q3-51-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.tar ! 其他的不要下载! Patch tool: 我们需要OpenEzx 2.6.24.x-补丁设置工具去升级A1200的kernel。 下载地址:http://savannah.nongnu.org/projects/quilt USB Boot: OpenEzx开发的一个工具,使得你可以使用USB去启动kernel。 下载0.2版本:http://svn.openezx.org/trunk/src/host/boot_usb/ Busybox 1.1.3: 就像前面所说的,我使用了busybox去建立Android NFS Root文件系统。我使用的是1.3版本,同时我 在升级包中放入了busybox config配置文件给你参考。 2.1.2 硬件环境 我们只需要一个E680手机以及一条USB连接线去移植Android。 好了,现在我们来讲一下实施移植的细节。是不是很激动呢!- -0 #下面是我的环境搭建过程 Linux Host: VMwareStation + TurboLinux 10 Tool-Chain: arm-none-linux-gnueabi- tool chain 安装在目录 /home/arm-2007q3 Patch tool: 工具安装在目录/home/quilt-0.46 directory USB Boot tool: 编译后将其放在 /home/testKernel/ezx_usb_boot 我为kernel建立了/home/android文件夹,为Android root文件系统建立了/home/android_nfs文件夹。 2.3 E680 Android移植工程 1)解压Linux-2.6.24 kernel tar文件(linux-2.6.24.tar.bz2)到/home/android/linux-2.6.24 你可以从以下地址下载到linux-2.6.24.tar.bz2 http://www.kernel.org/pub/linux/kernel/v2.6/ 2)简历补丁目录在/home/android/linux-2.6.24下面,然后复制所有的OpenEzx patchset folder下的文件 到这个目录里 3)在目录/home/android/linux-2.6.2下应用OpenEzx patches,通过via cad命令:quilt push –a 4)在目录/home/android/linxu-2.6.24 下使用如下cmd命令:patch –p2 <../ ***.patch u android-core.patch u android-config-nfs.patch u android-e680*-pcap.patch u android-e680*-16bpp.patch u android-framebuffer.patch u android-touchscreen.patch 注:必须在步骤3)完成并且成功之后完成步骤4)! 5)在OpenEzx patchset的Makefile.openezx中以如下方法修正变量CROSS_COMPILE: PHONES = e680* CROSS_COMPILE ?= /home/arm-2007q3/bin/arm-none-linux-gnueabi- 在这里 我将我的tool chain放在了/home/arm-2007q3目录里,你可以随意改变。 6)在目录/home/android/linux-2.6.24下编译android kernel,使用如下命令:make –f patches/ Makefile.openezx 大约在半小时以后,你可以在/home/android/linux-2.6.24目录下看到zImage-e680*和modulese680*. tar.gz 现在我们开始Android via NFS A.解压android_nfs_root-m5-r14.bz2到移植文档指定目录 注:这个目录必须和置顶文档中的内核命令运行参数defoncif-e680*一致.这里我们使用/home/ android_nfs这个目录. defconfig-e680* 这里我使用目录 /home/android_nfs 文件移植到E680 B.解压e680*.tar.fz所得内容到编译阶段相同文档目录android_nfs_root-m5-r14.bz2中.所得tar扩展名内 容解压到/home/android_nfs/lib目录 C.添加USB数据线到E680并且让手机进入mbm flash模式(画面为红色状态) D.用us_boot软件启动内核到/home/下面.测试是否可以通过cmd./ezx_usb_boot zImage-e680*’这一命 令 核心上传到E680之后,你在E680的屏幕上看到核心正在加载. 屏幕会滚动的显示加载信息参数 E.大约几秒钟后,从LINUX终端主机通过命令参数'telnet telent 192.168.1.2'远程登陆E680电话 F.运行'./init'执行远程登陆到电话,你可以看到android字符串 G.运行'/system/bin/runtime',过会,你就能看到让人振奋的红色始终在屏幕上有左至右的做着循环. 然后大约2分钟左右,你可以看到让人感觉倍感亲近的android桌面.Rahman你可以通过手机的触摸屏开 始申请(拨号器,地图,浏览器等) 毫无疑问,如果你使用cmd_line命令修改默认的A1200的设置核心参数让android从SD卡启动的话,那么 android的启动程序会更快 现在,我修正android的键盘映射让摄像头的硬件来做打电话的键盘,同时让虚拟的硬件来结束电话.你可 以按一下E680导航键的中心的键位来选择返回到桌面上. 注:你可以选择用cmd_line命令来修改E680的默认参数使其更容易在mmc卡生成编译,同样你也必须修 改android系统根目录下/etc/init.rc文档 3.已知问题和现状 现状 l Android能正常加载.(android字符显示,红眼循环运行,Android桌面显示) l 触摸屏可以在A1200/E680上工作 l 硬件(VR,摄像头,选择键)能够在部分A1200运行 l 个别主要程序请求(拨号器.地图,浏览器,联系人)可以从用户界面启动加载 l 声音不工作 问题: l 显示屏颜色在A1200/A910使用18插针后在屏幕的面板上产生不错,但是android的变量文件系统使用16 位色 l 虽然触摸屏能用,但是还得校准 l 其他的硬件还是不工作 4. 原作者下面要做的工作 l BP MUX 在A1200上运行 l Implement RIL (Radio Interface Layer) 共享库,让GSM电话正常 l Android audio在A1200运行 l 按键功能在A1200上正常使用 l 触摸屏校准 l 解决A1200触摸屏颜色显示问题 5. 小技巧 l When building Android root file system by yourself, several critical dev nodes (/dev/binder, /dev/log/main, /dev/log/radio, /dev/log/event) must be created correctly. l If your touch screen does not work, you should check whether touch screen driver is assigned to event1 via ‘cat /proc/bus/input/devices’ which Android application use /dev/input/event1 to get touch driver info. l You can modify /system/usr/keylayout/qwerty.kl file to change Android key mapping. l You can use strace to debug during your porting. 6. 参考出处 [1] OpenEZX homepage - http://www.openezx.org/ [2] Google Android homepage - http://code.google.com/android/ [3] Benno’s engineering Blog - http://benno.id.au/blog/ [4] Android on Zaurus - http://androidzaurus.seesaa.net/article/74237419.html [5] Omegamoon Blog http://www.omegamoon.com/blog/in ... 0423-212550&cat egory=1 [6]AndroidPortingOnRealTarget http://wiki.kldp.org/wiki.php/An ... ealTarget?refresh=1 7. 可用资源 1) OpenEZX-patchset.zip – OpenEZX patchset for 2.6.24-x. 2) android-patches.zip – android specific patches including ü android-core.patch ü android-config-nfs.patch ü android-a1200-pcap.patch ü android-a12000-16bpp.patch ü android-framebuffer.patch ü android-touchscreen.patch 3) android-nfs-root-m5r14.bz2 – Android NFS root file system package. 4) android_nfs_kernel – Android test kernel 5) modules-a1200.tar.gz – Android test modules package 6) busybox.config – busybox config file for NFS root file system. |
相关文章推荐
- 深入浅出 - Android系统移植与平台开发(九)- JNI介绍
- 深入浅出 - Android系统移植与平台开发(九)- JNI介绍
- 深入浅出 - Android系统移植与平台开发(九)- JNI介绍
- 深入浅出 - Android系统移植与平台开发(九)- JNI介绍
- Android图形系统分析与移植 -- 三、内核空间显示功能介绍
- 深入浅出 - Android系统移植与平台开发(九)- JNI介绍
- 深入浅出 - Android系统移植与平台开发(九)- JNI介绍
- 深入浅出 - Android系统移植与平台开发(九)- JNI介绍
- Android图形系统分析与移植--三、内核空间显示功能介绍
- Android系统移植与平台开发-JNI介绍(转)
- 深入浅出 - Android系统移植与平台开发(九)- JNI介绍
- Android系统移植与平台开发(三)- JNI介绍
- 深入浅出 - Android系统移植与平台开发(九)- JNI介绍
- 高通MSM8255 GPS 调试分析&&Android系统之Broadcom GPS 移植
- android系统移植默认参数设置(转)
- 深入浅出 - Android系统移植与平台开发(五)- 定制手机模拟器ROM
- 李洋老师将继续介绍Android系统架构的介绍——《Android系统启动过程剖析》。
- Android系统移植与调试之-------)如何修改Android系统默认显示
- Android面试之----Android系统架构图及简单的系统架构介绍
- android系统硬件OpenGL 3D 移植