免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1810 | 回复: 1
打印 上一主题 下一主题

Android移植到现有硬件平台的可行性 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-18 14:40 |只看该作者 |倒序浏览
抛砖引玉,谈谈Android移植到现有硬件平台的可行性
IT168 技术文档】
       虽然对移植Android很感兴趣,苦于手上没有合适的移动硬件平台,苦闷阿。结合开发社区的一些hacking news纸上谈兵,说说我所认为的理论上的移植步骤吧,欢迎交流,如果有朋友移植成功,不吝赐教!  通过前两天对Android的Linux平台以及启动过程的初步学习,我觉得Android的意义不仅仅是手机平台那么简单,通过对其框架,结构的分析,我们可以将Android应用到任何移动硬件平台上,甚至自己研发出新的更好的框架。连Google自己也说,我们的目标是,让我们发布的强大的平台能够应用到数千种不同的移动设备上。这是可以理解的,Google就是这样,它的每个策略都比常理要更进一步。不推出专属的硬件,而是一个通用的移动设备的软件平台,使Android可以更方便的快速占领手机操作系统的市场,而最终可以达到的份额也会非常的可观。
  当然,这都是后话了,group上这几天的焦点话题就是,我们如何让Android在现有的硬件平台上跑起来,而不是仅仅用模拟器来模拟它?这个命题估计对所有hacker都有巨大的吸引力,如果Android能在自己的手机平台上跑起来,所有的开发,就突然变得有意义了。我不是说目前的开发没有意义,毕竟GoogleN位数的奖金在那里摆着的,呵呵,不过对于上层开发者来说,最终目的还是应用的实际性和流行性,对吧?应用有没有实际价值,实际硬件平台上跑一跑就知道了。
  从Android现有的开源情况看,所有的hacking已经有一个比较明确的指导方向了,就是依靠Benno最先放出的方法来hack各种image并分析一些东西,从我之前的两篇文章也可以看出大致步骤。我们现在能够得到的东西,包括ramdiskimage,systemimage以及data image,当然还有open source的Linuxkernel。所以,所有的工作都应该从这几个东西入手。
  先看看kernel部分。由于Android基于Linux,因此所有的目标移植平台都应该允许运行Linux,对于尝试阶段的我们来说,最好是找一款默认就是采用Linux操作系统并提供完善的developenvironment的设备,这样,我们只需要找出Google提供的 Linux2.6.23kernel和现有的kernel有什么不同,把所有需要的修改做成patch,patch到现有系统上,就有可能成功移植整个 Android,无须重新编译Google的Linux 2.6.23kernel,然后绞尽脑汁想怎么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,多多交流
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/85193/showart_1422059.html

论坛徽章:
0
2 [报告]
发表于 2013-10-13 21:50 |只看该作者
回复 1# okitamicuki1412


    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!11
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP