Linux驅動基礎-Linux中設備分類

原創 2020-03-20 17:29:00 Linux驅動

Linux系統上每一個設備的運行都有其固定的規則,而且設備種類、型號眾多,將每一個設備的固定規則寫入內核是不現實的,也是沒有意義的。所以每一個設備都會有相對應的驅動,小到一個led燈,大到一個網卡,都要有相關的驅動。驅動程序可以看做是應用程序和實際設備之間的一個軟件層。應用程序控制一個設備,首先要向驅動發出信號,驅動接收到信號再控制設備完成相對應的動作。應用程序想要獲取設備采集的數據同樣也是要經過驅動來完成。

Linux中設備分類

Linux系統將設備分成三個基本類型,每個模塊通常實現為其中某一類。

1、字符設備

字符設備是一個能夠像字節流一樣被訪問的設備,由字符設備驅動程序來實現這種特性。字符設備驅動程序通常至少要實現打開、關閉、讀取和寫入系統調用。字符設備是一個順序訪問的,只有在設備響應后才能讀到相應信息。不能隨機訪問,且每個字符設備都有一個設備號,設備號由主設備號和次設備號組成。常見的字符設備如串口、IIC等。字符設備的對應的文件都在/dev目錄下,每一個文件對應一個硬件。在linux系統中/dev目錄下使用ls -l命令查看詳細信息,第一個字母“c”為字符設備文件的標識。

 

2、塊設備

和字符設備類似,塊設備也是通過/dev目錄下的文件系統節點來訪問。塊設備上能夠容納文件系統。常見的塊設備如磁盤、emmc  flash、nand  flash、 SD卡等。每個塊設備同樣有r--+’/h渦陽【5片【一個設備號,設備號由主設備號和次設備號組成。在linux系統中/dev目錄下使用ls -l命令查看詳細信息,第一個字母“b”為塊設備文件的標識。/dev下每個塊設備文件對應一個磁盤的分區。

 

3、網絡設備

任何網絡相關的事務都要經過一個網絡接口,即一個能夠與其他主機交換數據的設備。通常,接口是個硬件設備,但也可能是純軟件設備,比如在ifconfig查看網口信息的時候有一個lo,就是網絡回環(loopback)接口。訪問網絡接口的方法是給它們分配一個唯一的名字,比如eth0、eth1、lo等。但這個名字在文件系統中不存在相應的節點。網絡接口沒有像字符設備和塊設備一樣的設備號,只有一個唯一的名字,如eth0、eth1等,而這個名字也不需要與設備文件節點對應。內核使用一套與數據包傳輸相關的函數來與網絡設備驅動程序通信,它們不同于字符設備和塊設備的read()和write()方法。


 

各種字符設備和塊設備都體現了linux“一切都是文件的”的設計思想,網絡設備是唯一沒有體現這一思想的設備。

設備節點、設備驅動及設備的關聯

整個系統上掛載的設備很多,當我們訪問一個設備節點時,系統是如何知道使用哪個設備驅動及訪問哪個設備的呢?這個是通過設備號來實現的。創建一個設備節點時需要指定主設備號和次設備號。對于設備節點來說,名字不是重要的,設備號才是最重要的,它實際指定了對應的驅動程序和對應的設備。主設備號用來區分不同種類的設備,而次設備號用來區分同一類型的多個設備。對于常用設備,Linux有約定俗成的編號,如硬盤的主設備號是3。在/dev目錄下使用命令ls -l加名字可查看相應的主設備號和次設備號。

 

主設備號

驅動程序在初始化時,會注冊它的驅動及對應主設備號到系統中,這樣當應用程序訪問設備節點時,系統就知道它所訪問的驅動程序了。可以通過/proc/devices文件來驅動系統設備的主設備號。

 

次設備號

驅動程序運行時,每發現一個它能驅動的設備,就會創建一個設備對象,并為其分配一個次設備號以區分不同的設備。這樣當應用程序訪問設備節點時驅動程序就可以根據次設備號知道它所訪問的設備了。


相關產品 >

  • FETA40i-C核心板

    Allwinner A40i是全志開發的一款工業級處理器,A40i作為全國產工業級芯片中的佼佼者,采用更低功耗的4核ARM Cortex-A7架構,工作溫度-40-85℃,是一款高性能低功耗超高性能CPU主芯片。飛凌嵌入式深度研究全志A40i芯片參數、原理圖、datasheet規格書推出了以FETA40i核心板為主的一系列全國產工業級嵌入式計算機板卡,并提供了用于評估的A40i工控板、 A40i開發板。 了解詳情
    FETA40i-C核心板
  • FETT507-C核心板

    推薦T507,全志T507核心板采用工業級處理器設計開發,提供T507規格書,T507各類設計資料。FETT507-C核心板集成全志T507四核工業級處理器設計開發,Cortex-A53架構,主頻1.5GHz,集成G31 GPU,內存2GB DDR3L,存儲8GB eMMC。整板工業級運行溫寬,支持絕大部分當前流行的視頻及圖片格式解碼,具有穩定可靠的工業級產品性能、低功耗以及豐富的用戶接口等優勢,搭載Linux、Android、Ubuntu*操作系統,適用于車載電子、電力、醫療、工業控制、物聯網、智能終端等領域 了解詳情
    FETT507-C核心板

推薦閱讀 換一批 換一批