的實現(xiàn)、內(nèi)存映射功能以及對I/O 通道的控制接口函數(shù) ioctl 的實現(xiàn)等,并把它們定義在 struct video_device中。所以首先在驅(qū)動程序中聲明一個 video_device 結(jié)構(gòu),并為其指定文件操作函數(shù)指針數(shù)組fops 向系統(tǒng)注冊。應(yīng)用程序發(fā)出文件操作的相關(guān)命令時,Linux 內(nèi)核根據(jù)這些指針調(diào)用相應(yīng)函數(shù),并將該結(jié)構(gòu)作為參數(shù)傳遞給它們,實現(xiàn)驅(qū)動與內(nèi)核之間的通信。 Linux 內(nèi)核是依據(jù)設(shè)備號來操作設(shè)備文件的,內(nèi)核中攝像頭對應(yīng)的設(shè)備文件名為/dev/video,主設(shè)備號是81,次設(shè)備號根據(jù)攝像頭數(shù)目來確定,本系統(tǒng)中僅使用一個攝像頭。因此沒有此設(shè)備號,所以可以通過mknod /dev/video0 c 81 0來創(chuàng)建節(jié)點,驅(qū)動程序原理如圖2。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論