对没有 PCI 驱动程序的设备进行逆向工程

对没有 PCI 驱动程序的设备进行逆向工程

是否可以对没有 PCI 驱动程序的设备进行逆向工程?

有问题的设备是 PCI ESCON 卡,它允许您将大型机 ESCON 通道连接到专用 UNIX 计算机。据我所知,该设备从未公开发布过任何驱动程序,但仍然使用标准的 PCI 总线。

是否有可能在没有现有的逆向工程集的情况下将驱动程序组合在一起?

任何信息,将不胜感激。

答案1

这一切都取决于设备的复杂性,但即使设备非常简单,您也低估了所需工作的性质。

在现实生活中,有些与设备设计及其编程相关的事情根本无法从其暴露的 PCI 接口中推断出来,即设备无论出于何种意图和目的都是一个黑匣子。此外,诸如此类的事情需要大量的资源和时间,所需的努力通常非常不对称(即需要数百万(小时、金钱、人员)来解决)。

一个简单的例子是 nvidia 硬件,但没有可用的文档。了解 nvidia 的 nouveau 驱动程序,了解它是如何在数千人的帮助下进行逆向工程的,并且即使在几十年后,仍然只能被认为只能在 alpha/beta 级别上勉强运行。

Linux 图形堆栈充满了这样的故事:还过得去的 gfx 硬件(尤其是移动设备)和糟糕的制造商驱动程序,无法跟上内核开发的步伐。制造商因某些“商业”原因(芯片设计许可/专利、驱动程序子组件许可/专利、纯粹的贪婪)而无法释放驱动程序,而他们自己无法完全支持它。这些硬件虽然存在,但通常毫无用处。

请记住,移动芯片组市场的营业额是多少,最多一两年?两年后公司就不管了。大部分来自芯片的钱已经赚了,而当前的“消费者”是落后的廉价中国生产商,销售运行过时软件的蹩脚产品,这甚至不相关。

所以真正的答案是,是的,没有什么是不可能的,真正的问题是你从哪里找到资金、人才和最重要的时间来进行这项努力?

你最好的选择是找到一个已经尝试解决给定问题的社区和人才(例如,处理 Linux 上类似的 escon 设备),并以某种方式说服他们调查你的另一个案例。

尝试从制造商那里获取硬件寄存器级文档并找到内核驱动程序开发人员根据该文档开发驱动程序,而不是逆向,可能会更有效率。但请意识到:逆向“只是”信息收集,即使有完整的文档,您仍然必须编写新的驱动程序并使其工作,并且使其性能完全达到另一个水平。

通常制造商有针对某些特定版本操作系统的驱动程序,您可以向他们索要驱动程序,然后让“中间”锁定主机运行与产品接口的过时操作系统,并让一些敢于冒险、勇于进取的小型开发人员制作软件“交互”连接器”通过一些软件 API 将其连接到现代系统的世界。

我发现这种方法效果最好。

相关内容