驅(qū)動(dòng)程序如何實(shí)現(xiàn)設(shè)備函數(shù)對(duì)外圍設(shè)備操作及控制解析方案
4結(jié)論
總的來說,設(shè)備函數(shù)的實(shí)現(xiàn)過程由下面幾個(gè)步驟來完成:
(1) 加載驅(qū)動(dòng)程序。驅(qū)動(dòng)程序中的初始化函數(shù)申請(qǐng)設(shè)備名和主設(shè)備號(hào),這些可以在/proc/devieces目錄中查看到。 (2)從/proc /devices中獲得主設(shè)備號(hào),驅(qū)動(dòng)程序加載成功后建立設(shè)備節(jié)點(diǎn)文件。通過主設(shè)備號(hào)將設(shè)備節(jié)點(diǎn)文件和設(shè)備驅(qū)動(dòng)程序聯(lián)系在一起。設(shè)備節(jié)點(diǎn)文件中的file 屬性中指明了驅(qū)動(dòng)程序中fops方法實(shí)現(xiàn)的函數(shù)指針。 (3)用戶程序使用open打開設(shè)備節(jié)點(diǎn)文件,這時(shí)操作系統(tǒng)內(nèi)核知道該驅(qū)動(dòng)程序工作了,就調(diào)用 fops方法中的open函數(shù)進(jìn)行相應(yīng)的工作。 (4)當(dāng)用戶使用write函數(shù)操作設(shè)備文件時(shí),操作系統(tǒng)調(diào)用內(nèi)核中的sys_write函數(shù),該函數(shù)首先通過文件描述符得到設(shè)備節(jié)點(diǎn)文件對(duì)應(yīng)的inode指針和filp指針。 (5)然后sys_write才會(huì)調(diào)用驅(qū)動(dòng)程序中的write方法來對(duì)設(shè)備進(jìn)行寫的操作。用戶的write函數(shù)和驅(qū)動(dòng)程序的write函數(shù)通過系統(tǒng)調(diào)用sys_write聯(lián)系到了一起。本文以設(shè)備文件操作控制函數(shù)write為例來闡述整個(gè)函數(shù)的調(diào)用過程,其它函數(shù)的過程基本相同,本文不再詳述。
本文的創(chuàng)新點(diǎn)在于闡述了嵌入式應(yīng)用程序中對(duì)外部設(shè)備操作控制函數(shù)的實(shí)現(xiàn)機(jī)制及具體過程的分析,在目前的文獻(xiàn)中很少有具體的分析,是作者在具體開發(fā)過程中的經(jīng)驗(yàn)總結(jié)。
評(píng)論