【发布时间】:2020-02-28 11:19:48
【问题描述】:
我想在基于 ARM 的智能手机中彻底安装嵌入式 linux。为此,我需要设备驱动程序,例如闪存、显示器等。我想知道是否可以从这些手机供应商提供的 ROM 中提取设备驱动程序?
【问题讨论】:
标签: android arm embedded embedded-linux linux-from-scratch
我想在基于 ARM 的智能手机中彻底安装嵌入式 linux。为此,我需要设备驱动程序,例如闪存、显示器等。我想知道是否可以从这些手机供应商提供的 ROM 中提取设备驱动程序?
【问题讨论】:
标签: android arm embedded embedded-linux linux-from-scratch
不,这通常是不可能的。一个困难是由于链接。驱动程序将在 Linux 中调用函数和基础设施。例如,即使kmalloc() 是同一个源,地址空间中的位置也可能不同。要提取代码,您需要将提取的 Linux 地址映射到目标地址。此外,inline 功能的驱动程序很常见,这些功能可能会在另一个模块(如kfifo 等)中调用,这些功能可能会在 Linux 版本之间发生功能变化。更常见的是kfifo 代码将内联在驱动程序中。如果自旋锁功能在 ARM Linux 版本之间发生变化,您需要从驱动程序中提取此信息并将其替换为新版本。最后,还有一些 Linux 功能不仅被弃用,而且被其他一些基础设施完全删除和替换。
您的问题与decompiling 非常相似。从以上一些甚至更多的原因可以看出,要实现这一点非常困难或不可能。这就是人们制作 Linux 内核 GPL 的原因。您应该能够请求源代码并以更有效(且功能正确)的方式对其进行修改。
【讨论】: