将Android移植到自定义的ARM设备需要哪些知识和专业技能?

14

我正在处理一个系统,该系统当前运行着Linux内核和Microwindows窗口系统。我已经拥有当前Linux系统驱动程序的代码。我想将Android移植到这个系统上,只是作为一个兴趣项目。

请问,我需要了解哪些关于Linux内核的知识才能进行移植呢?

请给我提供一些参考资料(书籍、教程),以帮助我建立相关的理解。

谢谢,Sunny。

P.S. 我对Linux有基本的了解。

设备配置如下:

450 MHz ARM9,
64 MB RAM,
256 MB NAND,
480x272分辨率。

部分原因可能是您在美国星期五提出了问题。此外,您的问题涉及主观方面。这并不意味着这是一个错误的问题,只是解释了一些可能的原因。 - Heath Hunnicutt
以上评论回答了为什么这个问题两天没有得到回答的原因。 - SunnyShah
3个回答

9

由于您的板子上已经运行了Linux,您很可能不需要深入了解内核。但是,它需要进行修改以包括以下其他Android特定功能。这可能只需应用一些补丁即可完成,但也可能更加复杂。

  • 低内存杀手
  • Android日志记录器
  • Android共享内存子系统(Ashmem)
  • Android电源管理(唤醒锁)
  • Binder IPC

在用户空间中,Android使用自己的显示软件Surface Manager,因此您将不会使用Nano-X窗口系统(以前称为Microwindows)。

有关移植所涉及的概述,建议您阅读Android移植指南

移植Android到其他基于ARM的设备的网站可能包含有用的提示:

  1. Beagleboard (Cortex)
  2. Zoom OMAP(Cortex)
  3. Nokia Internet Tablet(ARM9E)
  4. Neo 1973(ARM9TDMI)
  5. Intel Bulverde Evaluation Board(XScale)
  6. Sharp Zaurus SL-C760(XScale)

可能能够提供帮助的在线团队:


嗨,tkryger,我知道我必须在设备中为我的板写驱动程序部分。 Android修改了多少Linux内核? Android的架构是什么? 是否有逐步指南或教程可供使用? 它可以简单地告诉我在哪里编写默认屏幕分辨率,缓存首选项。 - SunnyShah
通常在开发板上,我们会得到BSP,Android是否有类似于BSP的东西?Beagle Board开发人员在移植Android之前阅读了哪些文档? - SunnyShah
1
我不确定需要多少内核更改才能支持Android。可能不需要太多。我认为Android的大部分功能都在用户空间中。有关体系结构的良好描述和图片可在http://developer.android.com/guide/basics/what-is-android.html上找到,或者如果您更喜欢视频,请查看http://www.youtube.com/watch?v=Mm6Ju0xhUW8。 - Tim Kryger
2
Embinux的链接并没有描述他们必须做什么,只是你必须在那个板子上安装shell脚本。因此,这些步骤仅适用于Beagleboard,而不适用于任何其他板子。 - Adriaan

6
为了开始移植Android,需要基本了解对Linux内核的更改。此外,您还需要了解除Linux之外需要哪些驱动程序。 linuxfordevices描述了为了适应Android而对Linux内核进行的更改。他们还提供了一些方便的链接,例如更改差异....
在Android架构方面,我发现youtube演示Android Architecture]1很有帮助。
我预计在显示分辨率方面会有一些问题。 Android应用程序期望有许多标准分辨率。作为第一步,建议将显示限制为下一个较小的大小,然后在运行时进行改进。

由于我研究了安卓在电子阅读器上的应用,因此我对自己进行移植非常感兴趣。出于这个原因,我已经注册了一个关于安卓硬件(移植)的(基于Web的)培训课程。我已经寻找了相关书籍等资料,但我发现那些书更多地关注于使用安卓和编写应用程序。


-3

2
这两本书都是关于编写应用程序的,它们不描述如何配置/移植Android内核软件。 - Adriaan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接