作为软件,我目前正在与一些硬件检测机制作斗争。

我觉得应该有可能建立一种检测/发现机制,该机制是“未来证明”的,以当今构建的检测软件将能够识别未来所有硬件版本的有限属性集。

反对:当前(DSP)芯片可能在不久的将来变得过时;因此,我们不能保证未来的董事会将与当前的发现协议兼容。

EG USB,PNP如何做到这一点,还有其他示例吗?

有帮助吗?

解决方案

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

但是,PC体系结构本身就是正向检测可行性的证明。

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

但是,这是一个非常 明智的 硬件检测方案或愿意与Kludges一起生活(请参阅PC上的A20线安装,最初使用键盘控制器)或同时同时使用。 (就像当今几乎所有PC都在内部使用旧的ISA总线用于PS/2键盘支持,但也具有PCI协议。)

在工作中,我为女儿董事会设计了ID ROM格式。他们具有紧凑的二进制XML或类似LISP的结构,具有一些强制性字段,几个可选的和一个版本号。任何全新的硬件都可以增加版本编号并添加新软件所需的任何数据,同时仍然告诉旧软件在旧字段中的任何合适。

因此,至少,旧软件可以检测董事会ID,目的,然后放弃。这是USB设备工作的很大程度上。所有旧软件都可以枚举新设备,但是远不能确定旧软件可以 驾驶 新硬件以任何有意义的方式。例外是键盘,鼠标和内存棒,可以说,每个人都坚持旧的“应用程序级别”。

其他提示

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

无论如何,驾驶员必须知道它正在与之交谈并做出相应反应。设计有一些标准方法可以正确检测硬件。因此,就此信息存储并坚持下去的一些地址达成协议。还以某种方式将其扩展为将来。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top