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