2010-09-23 77 views
1

作爲一個軟,我目前正在對硬件檢測機制的硬件技術。向前兼容的硬件檢測

我覺得應該有可能建立一個「未來驗證」的檢測/發現機制,以今天構建的檢測軟件能夠識別所有硬件版本的有限屬性集在未來發展。反對:目前(dsp)芯片在不久的將來可能會過時;因此,我們無法保證將來的電路板將與當前的發現協議兼容。

這是如何完成的? USB,PnP,還有其他的例子嗎?

回答

1

答案的關鍵是在協議中,就像你暗示的一樣。它可能並不總是美麗的,有時你將自己鎖定在一個設計中。

但是,PC架構本身就是前向檢測可行性的證明。

在今天購買的系統中,通常完全可以啓動在1996年說的編譯的Linux內核。 Linux系統可能無法使用該系統中的大部分硬件,但它會發現任何子集仍然相同。

然而,它需要一個非常的wise硬件檢測方案或者願意忍受kludges(參見PC上最初使用鍵盤控制器的A20行安裝程序)或同時使用兩者。 (就像今天幾乎所有的個人電腦在內部都具有舊的ISA總線來支持諸如PS/2鍵盤之類的東西,但也具有PCI協議。)

爲了工作,我爲子板設計了一種ID ROM格式。它們具有緊湊的二進制XML或類似Lisp的結構,包含幾個必填字段,幾個可選字段和一個版本號。任何全新的硬件都可以增加版本號並添加新軟件所需的任何數據,同時還可以在舊字段中告訴舊軟件。

因此,至少,舊軟件可以檢測到電路板ID,目的,然後放棄。這就是USB設備的工作原理。所有舊軟件都可以枚舉新設備,但是舊軟件可以以任何有意義的方式驅動新硬件,這遠不能確定。例外是鍵盤,鼠標和記憶棒,每個人都堅持舊的「應用程序級別」,可以說,協議。

1

有一個可配置的供應商ID和設備ID以標準方式傳輸到操作系統。負責驅動程序的驅動程序以這種方式識別硬件。所以如果你知道驅動程序中的設備ID,那麼你會知道它是否兼容。如果設備ID保持不變,那麼您應該使用一些內存映射寄存器,這些寄存器可以讀出來包含一些額外信息(推薦!),如硬件設計版本等。

無論如何,驅動程序必須知道硬件它正在交談並作出相應的反應。使用一些標準的方法來正確檢測硬件是一個設計問題。因此,請同意一些信息存儲的地址並堅持。同樣以未來可以擴展的方式進行設計。