从 ROM 中获取设备驱动程序

Obtaining device drivers from ROMs

我想在基于 ARM 的 smartphone 中全新安装嵌入式 linux。为此,我需要闪存、显示器等设备驱动程序。我想知道是否可以从这些 phone 供应商提供的 ROM 中提取设备驱动程序?

不,这通常是不可能的。一个困难是由于链接。驱动程序将在 Linux 中调用函数和基础结构。例如,即使 kmalloc() 是同一个来源,地址 space 中的位置也可能不同。要提取代码,您需要将提取的 Linux 地址映射到您的目标地址。此外,驱动程序 inline 可能会在另一个模块(如 kfifo 等)中调用的功能很常见,这些功能可能在 Linux 版本之间进行了功能更改。更常见的是 kfifo 代码将被内联到驱动程序中。如果自旋锁功能在 ARM Linux 版本之间发生变化,您需要从驱动程序中提取此信息并将其替换为新版本。最后,还有 Linux 功能不仅被弃用,而且被完全删除并被其他一些基础设施取代。

您的问题与非常相似。从上面的一些甚至更多的原因可以看出,要实现这一点是非常困难或不可能的。这就是人们制作 Linux 内核 GPL 的原因。您应该能够索取源代码并以更有效(和功能正确)的方式修改它。