簡體   English   中英

在Linux中只能使用設備文件訪問設備驅動程序嗎?

[英]Is accessing a device driver in Linux only possible using its device file?

假設我有一個攝像頭,並且在Linux操作系統中安裝了該攝像頭的設備驅動程序,現在將為該設備驅動程序創建一個設備文件(例如: /dev/video0 )。

現在說我想用C創建一個要訪問此網絡攝像頭的程序。 我的程序如何訪問網絡攝像頭的設備驅動程序,我的程序應該使用設備文件( /dev/video0 )訪問設備驅動程序,還是有其他方法?

您問了一個一般性問題,然后舉了一個具體的例子。 我會盡力解決這兩個問題。

加載驅動程序時,從用戶空間與之通信的方式是通過定義此驅動程序的方式進行的。 通常,這是通過為驅動程序創建的/dev設備進行的。 如果是這樣,是的,這是與之通信的唯一方法。

這並非普遍如此。 許多驅動程序在/sys sysfs偽文件系統下也有條目,並且可以在此修改某些方面。 實際上,有一整類驅動程序只能通過/sys fs訪問。 GPIO和Led設備就是突出的例子,可以通過訪問/sys/class/gpio和類似的路徑來打開和關閉它們。

認為不建議使用但仍有時使用的另一個選項是使用/proc偽文件系統。 同樣,這取決於驅動程序來定義其通信方法。 作為用戶,您將必須遵循驅動程序定義的任何協議。

另外,某些驅動程序根本沒有任何文件系統。 最明顯的標准示例是網絡接口。 與他們通信的唯一方法是通過網絡系統調用。

在您提供的特定示例中,您談到了一個顯示為/dev/video0 這種攝像機通常是Video4Linux(或v4l)攝像機,並且可以通過其角色設備進行訪問。

話雖如此,用於與相機通信的協議可能具有使生活更輕松的包裝器。 如果打開實際的設備,則可能必須使用它進行相當復雜的握手。 相反,您可以使用v4l庫包裝訪問的詳細信息。

不犯錯誤。 您仍在與/dev的字符設備通信。 只是不是您的代碼執行此操作,而是庫執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM