android - 关于 Android 内核从一台设备移植到另一台设备的指南

标签 android linux-kernel porting android-source

我拥有 Samsung Galaxy 3,并希望移植可用于其他 Android 设备的内核。我已经准备好了所有的建筑环境。我也有C知识。我不明白的是所有移植涉及的方式和内容,应该以何种方式修改哪些代码?

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

提前致谢。


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

需要在源代码中更改哪些内容才能使其与其他设备兼容?谁能给我解释一下?

最佳答案

Idolon 给出了一个很好的建议。从理论上讲,那里写的是真的。在实践中,它涉及更多。几个月来我一直在移植 Android 内核。我的目标是在我的定制板上安装一个定制 S5PV210 处理器模块和我的定制 I/O。我有三星 galaxy tab 和几款三星 android 智能手机的源代码,以及三星评估板(SMDKV210 用于 S5PV210 CPU)的几个版本(Froyo、Gingerbread)。仅供引用,S5PC110 是一个紧密的衍生产品。这是我发现的。 尽管所有的设备驱动程序都应该以非常模块化的方式构建并且彼此独立,并且您应该能够用类似的设备替换它们,但三星的做法并非如此。举个例子是关于电源管理的。在许多处理硬件设备的低级驱动程序中,它为电源管理芯片等其他硬件设备调用一些特定的例程。因此,当您在“make xconfig”或“make menuconfig”中更改驱动程序的选择时,它会删除您不需要的源代码并添加您想要的源代码,但仍有其他模块正在调用您删除的低级功能。构建时,您将获得大量 Unresolved external 问题,因为您移除了硬件没有但在您开始使用的源代码中使用的电源管理芯片。我查看了几个三星的设备源代码,它们很早就有分支了。它们已被不同的团队改编,从一个源工具包从一个设备转移到另一个设备将需要大量工作。

我是这样成功的:我买了一 block S5PV210 评估板,上面已经移植了 Android 内核 (Gingerbread)。已经清理的所有电源管理和相互依赖的问题。然后,形成一个工作套件,我可以更改我需要的设备(如果没有 100K 单位/年的 promise ,你就无法购买)而不会陷入相互依赖的困境。然后我什至可以更改 LCD 分辨率(从 800x480 到 1024x768)、触摸屏、Cell 调制解调器等。整个事情只需要一个人(我)就可以完成大约一个月的工作。

从 Galaxytab 或其他商业设备开始让我浪费了几个月的时间,但没有得到有用的结果,而是我学到的东西。

要在我的方法上取得成功,有一项要求。您必须了解您正在使用的硬件。例如,你需要知道你的硬件有什么触摸屏(芯片组)来选择驱动程序,它是否连接到正确的设备(USB、串行等)。对于所有其他设备(电源管理芯片、键盘、背光、LCD 等)也是如此

希望这对您了解所涉及的工作以及如何完成这项工作很有用。

关于android - 关于 Android 内核从一台设备移植到另一台设备的指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7414289/

相关文章:

android - Wordpress 菜单栏在调整桌面大小时工作正常,但在移动浏览器上却不行

android - 在 Android 库 jar 中包含和使用 XML 布局

c - Linux设备驱动程序: Copying String from Kernel to UserSpace

linux - linux新手关于嵌入式linux设备驱动的问题

c - 使用内核模块锁定内部系统调用

java - 停止未恢复的 Activity

c# - C# 中的 Java 等效代码

c++ - 为什么我的 TCP 传输在 cygwin 上损坏了?

linux - 将 VxWorks intConnect API 移植到 linux

android - 在 Android 应用程序中实现 Leadbolt