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

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