盈響鴻蒙系統(tǒng)驅(qū)動(dòng)開(kāi)發(fā)—嵌入式系統(tǒng)開(kāi)發(fā)系類(lèi)筆記
一、Linux字符設(shè)備驅(qū)動(dòng)初步
1、Linux設(shè)備類(lèi)型
(1)字符設(shè)備:只能一個(gè)字節(jié)一個(gè)字節(jié)的讀寫(xiě)的設(shè)備,不能隨機(jī)讀取設(shè)備內(nèi)存中的某一數(shù)據(jù),讀取數(shù)據(jù)需要按照先后順序進(jìn)行。字符設(shè)備是面向流的設(shè)備,常見(jiàn)的字符設(shè)備如鼠標(biāo)、鍵盤(pán)、串口、控制臺(tái)、LED等。
(2)塊設(shè)備:是指可以從設(shè)備的任意位置讀取一定長(zhǎng)度的數(shù)據(jù)設(shè)備。塊設(shè)備如硬盤(pán)、磁盤(pán)、U盤(pán)和SD卡等存儲(chǔ)設(shè)備。
(3)網(wǎng)絡(luò)設(shè)備:網(wǎng)絡(luò)設(shè)備比較特殊,不在是對(duì)文件進(jìn)行操作,而是由專(zhuān)門(mén)的網(wǎng)絡(luò)接口來(lái)實(shí)現(xiàn)。應(yīng)用程序不能直接訪問(wèn)網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序。在/dev目錄下也沒(méi)有文件來(lái)表示網(wǎng)絡(luò)設(shè)備。
2、開(kāi)發(fā)流程
3、關(guān)鍵函數(shù)講解(以2.6以下版本內(nèi)核為例)
(1)驅(qū)動(dòng)模塊注冊(cè)register_chrdev()函數(shù)
原型:
major:主設(shè)備號(hào),該值為 0 時(shí),自動(dòng)運(yùn)行分配。而實(shí)際值不是 0 ;
name:設(shè)備名稱(chēng);
fops:操作函數(shù),實(shí)現(xiàn)驅(qū)動(dòng)定義的open、read、write、close等內(nèi)核函數(shù)與應(yīng)用程序調(diào)用的open、read、write、close間的映射;