前向兼容的硬件检测

时间:2010-09-23 07:56:00

标签: hardware-interface forward-compatibility

作为一个软件,我正在与硬件检测机制上的一些硬件技术人员作斗争。

我觉得应该有可能构建一个“面向未来”的检测/发现机制,以一种今天构建的检测软件能够识别开发的所有硬件版本的一组有限属性的方式在将来。

反对的论点:当前(dsp)芯片可能在不久的将来变得过时;因此,我们无法保证未来的主板与当前的发现协议兼容。

如何做到这一点,例如USB,PnP,还有其他例子吗?

2 个答案:

答案 0 :(得分:1)

答案的关键在于协议,就像你暗示的那样。它可能并不总是很漂亮,有时你会将自己锁定在设计中。

然而,PC架构本身证明了前向检测的可行性。

通常完全有可能在今天购买的系统上启动1996年编译的Linux内核。 Linux系统可能无法使用该系统中的大部分硬件,但它会发现任何子集仍然是相同的。

然而,它需要非常wise硬件检测方案或愿意使用kludges(参见PC上的A20线设置,最初使用键盘控制器)或两者同时使用。 (就像现在几乎所有的PC都有内部旧的ISA总线用于PS / 2键盘支持,但也有PCI协议。)

为了工作,我为子板设计了ID ROM格式。它们具有紧凑的二进制XML或类似Lisp的结构,包含一些必填字段,几个可选字段和一个版本号。任何全新的硬件都可以增加版本号并添加新软件所需的任何数据,同时仍然可以在旧字段中告知旧软件。

至少,旧软件可以检测到电路板ID,目的,然后放弃。这就是USB设备的工作原理。所有旧软件都可以枚举新设备,但很难确定旧软件能否以任何有意义的方式驱动新硬件。例外是键盘,鼠标和记忆棒,每个人都坚持旧的“应用程序级别”,可以说是协议。

答案 1 :(得分:1)

有一个可配置的供应商ID和设备ID以标准方式传输到操作系统。负责它的驱动程序以这种方式识别硬件。因此,如果您在驱动程序中知道设备ID,那么您将知道它是否兼容。如果设备ID保持不变,那么你应该使用一些可以读出的内存映射寄存器来包含一些额外的信息(建议使用!),如硬件设计版本等。

无论如何,驱动程序必须知道它正在与之通信的硬件并作出相应的反应。设计问题有一些标准的方法来正确检测硬件。因此,请同意存储此信息的某些地址并坚持下去。还要设计它可以在将来扩展。