2011-09-14 54 views
1

我拥有一个三星Galaxy 3,并且希望移植可用于其他Android设备的内核。我准备好了所有的建筑环境。我也有C知识。我不明白的是,移植过程中涉及到的是什么和什么,哪些代码应该以什么方式修改?关于Android内核从一个设备移植到其他设备的指导

如果有人可以帮助我。这会很棒。

在此先感谢。


好吧,我明白了。但真正的问题是我不明白一件事。

什么需要在源代码中进行更改,以便使其兼容于其他设备?有人能解释我吗?

+0

请不要在这里摧毁你的问题。我已经将其回滚到原来的状态。 –

回答

3

Idolon给出了一个很好的建议。从理论上讲,所写的是真实的。实际上,这涉及更多一点。我几个月来一直在移植Android Kernel。我的目标是用我的定制I/O在我的定制电路板上安装定制的S5PV210处理器模块。我有三星galaxy标签和几个三星的android智能手机的源代码,以及三星评估板(S5PV210 CPU的SMDKV210)的几个版本(Froyo,姜饼)。 FYI,S5PC110是一个紧密的衍生产品。这是我发现的。尽管所有设备驱动程序都应该以非常模块化的方式构建,并且彼此独立,并且您应该可以用类似的设备替换它们,但三星做的并不完全如此。给你举一个例子是关于电源管理。在许多处理硬件设备的低级驱动程序中,它会为诸如电源管理芯片等其他硬件设备调用一些特定的例程。所以,当你在“make xconfig”或“make menuconfig”中改变驱动程序的选择时,它将删除你不想要的东西的源代码并添加你想要的东西,但还有其他模块正在调用您移除的低级别功能。在构建时,您将会遇到大量未解决的外部问题,因为您已经移除了您的硬件所没有但在您开始使用的源中使用的电源管理芯片。我浏览了几个三星的设备源代码,他们很早就分支了。他们已经被不同的团队改编,从一个源代码包中的一个设备到另一个设备将是一项重要的工作。

下面是我成功的原因:我买了一个已经移植了Android Kernel(姜饼)的S5PV210评估板。所有的电源管理和相互依赖的问题已经清理完毕。然后,形成一个工作包,我可以更换我需要的设备(没有100K单位/年的承诺就无法购买),而不会陷入相互依赖的状态。然后我甚至可以改变LCD分辨率(从800x480到1024x768),触摸屏,Cell调制解调器等等。整件事情只需要一个人(我)就可以工作大约一个月。

从Galaxytab或其他商业设备开始,我浪费了几个月的头球,没有有用的结果,但我学到的东西。

有一个要求我的方法取得成功。你必须知道你正在使用的硬件。举个例子,你需要知道你的硬件有哪些触摸屏(芯片组)来选择驱动程序,并且是否连接它将它连接到正确的设备(USB,Serial等)。所有其他设备(电源管理芯片,键盘,背光,LCD等)的相同的东西

希望有助于给你一个有关工作的想法,以及如何做到这一点。

0

我也到Android的移植东西相当长的一段时间,我建议如下路线:

你需要有Android的移植和AOSP源代码,目录stucture层次的基本知识。 我建议你开始阅读https://books.google.co.in/books/about/Embedded_Android.html?id=plHsngEACAAJ&hl=en 并且还请参考https://source.android.com/devices/index.html作为好人指出,你也可以谷歌Android移植相关组,并成为其中的成员,如果你被困在一个问题有机会类似的问题可能已经面临的人否则以前。

观察

AOSP代码: 部件并联时,您需要潜到android源码例如,从像https://android.googlesource.com/链接观察哪些组件放置在源代码,是什么从以前的机器人版本更新(像ART在LL中取代了dalvik),在顶层将会有通用代码,硬件/设备/文件夹中特定于硬件的代码,称为HAL。

内核代码: 在内核还需要观察目录结构和知道哪些东西躺在那里像SoC的特定代码将在arch /目录defconfigs(用于选择内核配置)将拱// configs /目录。 也有好的书籍可用于Linux内核,你可以谷歌他们,并开始阅读他们也。

同时移植的内核,你需要采取新的内核以下

1.如果照顾已经有支持的SoC,其在硬件用于移植,那么你需要添加像假设只有设备的具体变化你想将新内核版本移植到三星Galaxy S3,你可以选择一个具有exynos支持的参考android内核,然后你只需要添加对三星Galaxy S3的支持就可以进行更改。

为了您需要参考某些支持s3的旧内核,您可以从那里学习已添加的补丁以添加对s3的支持并将这些补丁移植到较新的内核中。

实验

首先,你只能端口需要启动该平台的最低限度的变化,编译和闪光吧你的平台上,然后观察输出,如果一切都看起来不错比之后的修改继续以其他方式尝试解决问题。

谢谢, Devarsh

相关问题