Enzo Damato Asked: 2022-07-07 13:47:40 +0800 CST2022-07-07 13:47:40 +0800 CST 2022-07-07 13:47:40 +0800 CST 对没有设备的 PCI 驱动程序进行逆向工程 772 是否可以为没有的设备逆向工程 PCI 驱动程序? 有问题的设备是一个 PCI ESCON 卡,它允许您将大型机 ESCON 通道连接到专用 unix 计算机。据我所知,这款设备从未公开发布过任何驱动程序,但仍使用标准 PCI 总线。 是否可以在没有现有集合的情况下将驱动程序放在一起进行逆向工程? 任何信息,将不胜感激。 drivers pci 1 个回答 Voted Best Answer etosan 2022-07-07T14:28:25+08:002022-07-07T14:28:25+08:00 这一切都取决于设备的复杂性,但即使设备非常简单,您也低估了所需工作的性质。 在现实生活中,有些东西与设备设计和编程相关,无法从其暴露的 PCI 接口中推断出来,即设备无论出于何种意图和目的都是一个黑匣子。此外,诸如此类的事情需要大量的资源和时间,所需的努力通常是非常不对称的(即需要数百万(小时、金钱、人员)来解决)。 一个简单的例子是没有可用文档的 nvidia 硬件。阅读有关 nvidia 的 nouveau 驱动程序的信息,了解它是如何在成千上万人的帮助下进行逆向工程的,即使在几十年后,仍然可以认为它仅在 alpha/beta 级别上表现不佳。 Linux 图形堆栈中充满了这样的故事,可通过的 gfx 硬件(尤其是在移动设备中)带有糟糕的制造商驱动程序,无法跟上内核开发的步伐。制造商因某些“商业”原因(硅设计许可/专利、驱动子组件许可/专利、纯粹的贪婪)而无法发布驱动程序开放,并且他们自己无法完全支持它。这种硬件,通常虽然存在,但同样无用。 请记住,在移动芯片组市场的营业额是多少,最多一年两年?在两年内公司甚至不在乎。芯片的大部分钱已经赚了,而当前的“消费者”是落后的廉价中国生产商,他们销售运行过时软件的蹩脚产品,这甚至无关紧要。 所以真正的回答是,是的,没有什么是不可能的,真正的问题是你将在哪里找到金钱、人才和最重要的时间来进行这项努力? 你最好的选择是找到一个已经尝试过解决给定问题的社区和人才(例如在 Linux 上处理类似的 escon 设备),并以某种方式说服他们调查你的另一个案例。 与其逆向,不如尝试从制造商那里获取硬件寄存器级别的文档并找到内核驱动程序开发人员根据该文档开发驱动程序可能会稍微更有效率。但请意识到:逆向是“只是”信息收集,即使有完整的文档,您仍然必须编写新的驱动程序并使其工作,而使其性能完全处于另一个层次。 通常,制造商有特定版本操作系统的驱动程序,您可以向他们索取,然后让运行过时操作系统的“中间”锁定主机与产品接口,并让一些具有冒险精神和进步的小型开发人员制作软件“接口”。连接器”通过一些软件 API 将其连接到现代系统的世界。 我已经看到这种方法效果最好。
这一切都取决于设备的复杂性,但即使设备非常简单,您也低估了所需工作的性质。
在现实生活中,有些东西与设备设计和编程相关,无法从其暴露的 PCI 接口中推断出来,即设备无论出于何种意图和目的都是一个黑匣子。此外,诸如此类的事情需要大量的资源和时间,所需的努力通常是非常不对称的(即需要数百万(小时、金钱、人员)来解决)。
一个简单的例子是没有可用文档的 nvidia 硬件。阅读有关 nvidia 的 nouveau 驱动程序的信息,了解它是如何在成千上万人的帮助下进行逆向工程的,即使在几十年后,仍然可以认为它仅在 alpha/beta 级别上表现不佳。
Linux 图形堆栈中充满了这样的故事,可通过的 gfx 硬件(尤其是在移动设备中)带有糟糕的制造商驱动程序,无法跟上内核开发的步伐。制造商因某些“商业”原因(硅设计许可/专利、驱动子组件许可/专利、纯粹的贪婪)而无法发布驱动程序开放,并且他们自己无法完全支持它。这种硬件,通常虽然存在,但同样无用。
请记住,在移动芯片组市场的营业额是多少,最多一年两年?在两年内公司甚至不在乎。芯片的大部分钱已经赚了,而当前的“消费者”是落后的廉价中国生产商,他们销售运行过时软件的蹩脚产品,这甚至无关紧要。
所以真正的回答是,是的,没有什么是不可能的,真正的问题是你将在哪里找到金钱、人才和最重要的时间来进行这项努力?
你最好的选择是找到一个已经尝试过解决给定问题的社区和人才(例如在 Linux 上处理类似的 escon 设备),并以某种方式说服他们调查你的另一个案例。
与其逆向,不如尝试从制造商那里获取硬件寄存器级别的文档并找到内核驱动程序开发人员根据该文档开发驱动程序可能会稍微更有效率。但请意识到:逆向是“只是”信息收集,即使有完整的文档,您仍然必须编写新的驱动程序并使其工作,而使其性能完全处于另一个层次。
通常,制造商有特定版本操作系统的驱动程序,您可以向他们索取,然后让运行过时操作系统的“中间”锁定主机与产品接口,并让一些具有冒险精神和进步的小型开发人员制作软件“接口”。连接器”通过一些软件 API 将其连接到现代系统的世界。
我已经看到这种方法效果最好。