Linux驅動簡介及分類

1. Linux驅動簡介

在介紹Linux驅動之前,我們首先來看Linux系統分層關係:

圖1-1 Linux系統分層關係

Linux驅動主要具有如下幾點作用:

  • 系統調用是應用程序和內核之間的接口,驅動程序是內核和硬件之間的接口;
  • 驅動程序接受上層軟件(應用程序、內核)的請求,完成對硬件的操作,屏蔽了硬件的細節;
  • 驅動程序將硬件設備抽象成一個文件,應用程序操作文件即操作硬件,符合Linux“一切皆文件”的思想。

2. 驅動的分類及特點

計算機硬件系統有CPU、存儲器以及外設組成,Linux驅動針對的對象是存儲器和外設;Linux將驅動分爲三大類:字符設備驅動、塊設備驅動以及網絡設備驅動。

  • 字符設備驅動:顧名思義,應用程序與驅動程序之間的數據交互是以字符(字節)爲單位的,字符設備通常沒有中間緩存。常見的字符設備有:led、key、camera、顯卡、串口等
  • 塊設備驅動:顧名思義,應用程序與驅動程序之間的數據交互是以塊爲單位的,主要針對的是存儲設備,通常設有中間緩存,並且帶有文件系統,可以任意位置訪問。常見的塊設備有:U盤、eMMC、SD卡等
  • 網絡設備驅動:網絡設備面向數據包的發送而設計,它並不對應於文件系統的節點。即不對應 /dev 目錄下的設備文件,應用程序最終通過套接字 socket 完成與網絡設備的數據交互。常見的網絡設備有網卡(無線網卡、有線網卡)。

Linux驅動有兩種存在形式,一種是編譯進內核;另一種編譯成模塊,通過insmod方式安裝的。不管是哪一種方式,除了網絡設備之外,字符設備驅動和塊設備驅動的安裝都會在Linux根文件系統的 /dev 目錄下創建相對應的設備文件(塊設備比較特殊,除了創建設備文件外,還會在根文件系統的某個目錄下掛載文件系統),應用程序可以通過 open()、write()、read()、ioctl()、close()系統調用接口訪問設備。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章