您好,  [请登录] [QQ登录]  [支付宝登录[免费注册]

商品分类

分享到: 百度搜藏 搜狐微博 新浪微博 腾讯微博 QQ收藏 人人网 Facebook Twitter

抛砖引玉,谈谈Android移植到现有硬件平台的可行性

发布日期:2011-05-10

  固然对移植Android很感兴趣,苦于手上没有符合的移动硬件平台,苦闷阿。连合开辟社区的一些hacking news纸上谈兵,说说我以是为的理论上的移植步调吧,欢迎交换,要是有朋侪移植告成,不吝见示!

  通过前两天对Android的Linux平台 以及启动进程的开端学习,我以为Android的意义不但仅是手机平台那么大略,通过对其框架,布局的阐发,我们可以将Android应用到任意移动硬件平台上,乃至本身研发出新的更好的框架。连Google本身也说,我们的目标是,让我们颁布的强大的平台可以或许应用到数千种差别的移动配置上。这是可以明白的,Google便是如许,它的每个战略都比常理要更进一步。不推出专属的硬件,而是一个通用的移动配置的软件平台,使Android可以更方便的快速霸占手机操纵体系的市场,而终极可以到达的份额也会非常的可观。

  固然,这都是后话了,group上这几天的内核话题便是,我们怎样让Android在现有的硬件平台上跑起来,而不是仅仅用模仿器来模仿它?这个命题预计对全部hacker都有巨大的吸引力,要是Android能在本身的手机平台上跑起来,全部的开辟,就忽然变得故意义了。我不是说如今的开辟没故意义,终究GoogleN位数的奖金在那边摆着的,呵呵,不过对付上层开辟者来说,终极目标还是应用的实际性和盛行性,对吧?应用有没有实际代价,实际硬件平台上跑一跑就知道了。

  从Android现有的开源环境看,全部的hacking已经有一个比较明白的引导方向了,便是寄托Benno开始放出的要领来hack种种image并阐发一些东西,从我之前的两篇文章也可以看出大抵步调。我们如今可以或许得到的东西,包括ramdisk image,systemimage以及data image,固然另有open source的Linux kernel。以是,全部的事变都应该从这几个东西入手。

  先看看kernel部分。由于Android基于Linux,因此全部的目标移植平台都应该容许运行Linux,对付实行阶段的我们来说,最好是找一款默认便是采取Linux操纵体系并提供美满的develop environment的配置,如许,我们只必要找出Google提供的Linux2.6.23kernel和现有的kernel有什么差别,把全部必要的修改做成patch,patch到现有体系上,就有大概告成移植整个Android,无须重新编译Google的Linux 2.6.23 kernel,然后绞尽脑汁想怎么port到某个配置上。先下载一个standard Linux2.6.23 kernel,然后利用下令

  diff -ruN linux-2.6.23/ Google-linux-2.6.23/ >lk.patch

  打开lk.patch,God,有3万多行。细致阐发一下,大部分都是和Qemu以及goldfish有关的。我们要做的事变,是让Android在真实平台上跑起来,以是不管是用于假造处理惩罚器的Qemu还是SDK模仿的硬件平台Goldfish,都不是我们所必要的,要在patch内里去失他们,由于我们盼望运行在真实的硬件平台上。恩,说实话,是一个很贫苦的事变,你要阐发又30000多行的patch阿……不过内里有一超长段是关于yaffs的补丁,要是你目标平台所带的内核已经支持yaffs了,就没须要要了。这是我修改后的patch ,放在googlepages上的,要是哪天又被调和了我也没有步伐。

  下一步,便是让打了Android patch的内核运行在你的目标硬件上,详细步调是和不消硬件的开辟环境相接洽的。固然,还必要导入Android的rootfs以及filesystem。将他们用mkfs.jffs2构建成jffs文件体系即可。

  必要细致的是,这个符合的硬件平台是必要挑选的,看看Android模仿器内里的信息:

  # cat /proc/cpuinfo

  Processor : ARM926EJ-S rev 5 (v5l)

  BogoMIPS : 331.77

  Features : swp half thumb fastmult vfp edsp java

  Google默认的是ARM926EJ-S内核。这就在肯定程度上限定了我们可以或许port的平台选择,Benno曾经试验在Openmoko上移植Android ,末了失败了,缘故起因便是ARM926EJ-S采取的是ARMv5TEJ指令集,而Openmoko的ARM920T采取的是ARMv4T指令集。以是,不但仅是必要能运行兼容EABI的Linux的配置那么大略。

  以上是理论步调的逻辑阐发,由于我如今手上没有试验平台,以是也无法验证,要是有朋侪末了告成移植了Android,多多交换。