摘要:1、linux設(shè)備驅(qū)動計算機(jī)系統(tǒng)硬件主要由CPU、存儲器和外設(shè)組成。驅(qū)動針對的對象是存儲器和外設(shè)(包括CPU內(nèi)部集成的存儲器和外設(shè)),而不是針對從CPU核。linux將存儲器和外設(shè)分為3個基礎(chǔ)大類。字符設(shè)備塊設(shè)備網(wǎng)絡(luò)設(shè)備 字符設(shè)備指那些必須以串行順序一次進(jìn)行訪問的設(shè)備,如觸摸屏、磁帶驅(qū)動器、鼠標(biāo)等?! K設(shè)備可以任意順序進(jìn)行訪問,以塊為單位進(jìn)行操作,如硬盤、軟驅(qū)等?! ∽址O(shè)備和塊設(shè)備的不同點:
1、linux設(shè)備驅(qū)動
計算機(jī)系統(tǒng)硬件主要由CPU、存儲器和外設(shè)組成。
驅(qū)動針對的對象是存儲器和外設(shè)(包括CPU內(nèi)部集成的存儲器和外設(shè)),而不是針對從CPU核。linux將存儲器和外設(shè)分為3個基礎(chǔ)大類。
字符設(shè)備
塊設(shè)備
網(wǎng)絡(luò)設(shè)備
字符設(shè)備指那些必須以串行順序一次進(jìn)行訪問的設(shè)備,如觸摸屏、磁帶驅(qū)動器、鼠標(biāo)等。
塊設(shè)備可以任意順序進(jìn)行訪問,以塊為單位進(jìn)行操作,如硬盤、軟驅(qū)等。
字符設(shè)備和塊設(shè)備的不同點:字符設(shè)備不經(jīng)過系統(tǒng)的快速緩沖,而塊設(shè)備經(jīng)過系統(tǒng)的快速緩沖。
在linux系統(tǒng)中,網(wǎng)絡(luò)設(shè)備面向數(shù)據(jù)包的接收和發(fā)送而設(shè)計的,它并不對應(yīng)于文件系統(tǒng)的節(jié)點。內(nèi)核與網(wǎng)絡(luò)設(shè)備的通信與內(nèi)核和字符設(shè)備、網(wǎng)絡(luò)設(shè)備的通信方式完全不同。
2.linux設(shè)備驅(qū)動與整個軟硬件系統(tǒng)的關(guān)系
如下圖所示,除網(wǎng)絡(luò)設(shè)備外,字符設(shè)備與塊設(shè)備都被映射到linux文件系統(tǒng)的文件和目錄,通過文件系統(tǒng)的系統(tǒng)調(diào)用接口open(),write(),read(),close()等即可訪問字符設(shè)備和塊設(shè)備,所有的字符設(shè)備和塊設(shè)備都被統(tǒng)一的呈現(xiàn)給用戶。塊設(shè)備比字符設(shè)備復(fù)雜,在它上面會首先建立一個磁盤/Flash文件系統(tǒng),如FAT、EXT3、YAFFS2 、JFFS2、 UBIFS等。FAT、EXT3、YAFFS2 、JFFS2、 UBIFS定義了文件和目錄在存儲介質(zhì)上的組織。
應(yīng)用程序可以使用linux的系統(tǒng)調(diào)用接口編程,但也可以使用c庫函數(shù),處于代碼可移植性的目的,后者更值得推薦。c庫函數(shù)本身也通過系統(tǒng)調(diào)用接口而實現(xiàn),如c庫函數(shù)fopen(),fwrite(),fread(),fclose()分別會調(diào)用操作系統(tǒng)的API open(),write(),read(),close().