移植android 到定制开发板
2010-05-28 15:32:00 来源:WEB开发网移植Android的kernel到实际的硬件平台上,很多人很早就做过这件事了,不过相关的文档和经验总结不多,我就写一个吧,也为了自己记录一下大致的流程,以后好继续。
1 Android内核Porting相关背景知识
1.1 运行平台
Google的Android平台到今天为止(2008-2-27),应用层部分还是以二进制的Binary的形式发布的,其编译的目标平台是 ARM926EJ-S的CPU属于ARMV5T的版本,所以ARMV4架构的CPU平台无法使用其二进制代码。关于这点,可以参考下面这篇文章,Benno在此做了详尽的理论分析和代码测试:http://benno.id.au/blog/2007/11/21/android-neo1973
所以目前只有基于ArmV5或以上的架构的平台可以实际运行Android。
1.2 软件环境
SDK下载:http://code.google.com/android/download_list.html
KERNEL,模拟环境等SRC包下载:http://code.google.com/p/android/downloads/list
1.2.1Kernel
到M5-r14 release 为止,Android的Kernel是基于Linux2.6.23的内核开发的,主要添加了一个名为Goldfish的虚拟CPU以及Android所需相关特定驱动代码。
你需要一个支持EABI的内核作为你内核Porting的起点(最低版本?不知道,只要EABI OK,应该没有本质区别,但是,Android的很多驱动依赖于2.6.23的内核API,版本越低的内核,移植修改内核相关代码的工作量越大)
1.2.2Tools chain
SDK中的内核使用的是4.2.1版本的GCC,基本上,你需要的是一个支持EABI的工具链,比如你可以使用Codesourcery的最新工具链:http://www.codesourcery.com/
1.2.3 其它工具
Android的Emulator是一个很好的仿真工具,其底层是基于QEMU来实现的,可以使用SDK中的adb工具登陆Emulator的控制台,和控制台交换文件等,用于获取你所需的信息。
1.3 相关论坛资源等
http://benno.id.au/blog/
http://groups.google.com/group/android-internals
http://groups.google.com/group/android-developers
2 Porting基本思路
2.1 所需资源
2.1.1 硬件
首先,当然是需要一个可以用来向上porting的硬件开发板了,对硬件的需求除了上面说的,需要ArmV5+兼容的CPU以外,最低要求基本需要 64M+的内存,64M-128M+的FLASH(取决于你加载文件系统的方式,如果可以透过网络使用NFS-ROOT或者MMC卡等来存放文件系统的话,这个应该就无所谓了)
更多精彩
赞助商链接