2010-07-22 67 views
0

inHi,這個問題很快,但從我的角度來看它很難。我一直在搞實施由MCU構建的USB設備。所以我找到了一個名爲V-USB的項目,它是愛特梅爾MCU的軟件仿真USB接口。但這並不重要。在USB通信中的Windows X Unix

問題是,在他們的網站上,他們說使用自定義的USB類,你可以簡單地在Unix上編寫主機軟件,但你需要驅動程序DLL的Windows。問題是,他們沒有解釋爲什麼。

那麼,請問,爲什麼?我不知道基於Unix的系統,但我認爲不同操作系統的基礎知識是相同的,因爲它們來自相同的硬件,甚至Unix也不能在用戶模式下執行HW IO操作。

我知道像LibUSB等USB通信庫,但我想知道爲什麼說它在Unix上很容易的原因。謝謝。

編輯: 感謝您的回答,但我可以有進一步的問題嗎?這一切都是一個文件如何工作?我的意思是,我在Windows上的驅動程序是一個運行在內核模式下的程序,因此可以訪問CPU IO端口,這些端口可以通過某些標準提供給OS,從而允許Windows使用它(例如,HDD驅動程序必須可以從文件系統驅動程序通過標準化的功能集,以使任何硬盤工作相同)。

所有你需要做的就是通過WinAPI函數調用驅動程序或直接調用它的函數。但USB實現了不同類別的新功能。所以有主要的USB根驅動程序來處理USB併爲正確的設備調用正確的次要驅動程序。除了有相同的程序,你只需調用你的USB驅動程序。

但是如果在Unix中一切都是文件,怎麼處理不同的類?我無法想象它如何在Windows方式下類推。該文件是否代表與USB根驅動程序通信的方式?

回答

1

Everything in UNIX is a file,它支持簡單的操作。無論您是通過終端還是通過USB設備進行通信,所有內容都是文件流的字節流。

* read 
* write 
* lseek 
* close 
+0

好的,但是還是必須有一些在內核中運行的主USB驅動程序,並且將Unix標準USB行爲轉換爲Unix文件方式,對嗎? – 2010-07-22 22:49:59