Linux驅動認知

2021-10-11 09:31:44 字數 1356 閱讀 4676

使用者態核心態

程序,記憶體,執行緒,網路,裝置驅動不需要上層應用開發者關心,驅動在前面的學習是呼叫wringpi庫實現,接下來的學習就是要自己實現wringpi庫,因為wringpi庫由廠家提供,可能有可能沒有,這樣當我們拿到另一種型別的板子時,同樣也可以完成開發。

驅動鏈表:管理所有裝置的驅動,新增或查詢,新增是發生在我們編寫完驅動程式,載入到核心。查詢發生在呼叫驅動程式,由應用層使用者空間去open。

驅動插入鍊錶的順序由裝置號檢索,就是說主裝置號和次裝置號除了除了能區分不同種類的裝置和不同型別的裝置,還能起到將驅動程式創到鍊錶的某個位置。

硬體

linux經典的一句話一切皆檔案:包括檔案,裝置(滑鼠,鍵盤,led,螢幕,flash,記憶體,網絡卡等),普通的io口,串列埠等等。

對於檔案,學習到對檔案的操作有open ,read,write這幾個api,對於這些api是如何區分操作物件是檔案還是一些裝置,這些裝置需不需要有驅動,驅動又在哪個位置這都是我們需要了解的。驅動肯定是要有的。

假設:現在的硬體有pin4,pin5,pin6,這些引腳分別對應於4驅動,5驅動,6驅動,這些驅動需要由我們來開發。

open(「/dev/pin4」,許可權)用來呼叫引腳4的驅動,那麼如何找到相關的驅動,有兩個東西供我們查詢,一是檔名,二是裝置號(包含主裝置號和次裝置號)。

linux的裝置管理是和檔案系統緊密結合的,各種裝置都以檔案的形式存放在/dev目錄下,稱為裝置檔案。應用程式可以開啟、關閉和讀寫這些裝置檔案,完成對裝置的操作,就像操作普通的資料檔案一樣。為了管理這些裝置,系統為裝置編了號,每個裝置號又分為主裝置號和次裝置號。主裝置號用來區分不同種類的裝置,而次裝置號用來區分同一型別的多個裝置。

ls -l  檢視裝置號    /dev下

驅動**的開發無非就是新增驅動和呼叫驅動。

例如:使用者態呼叫引腳四open(「/de/pin4」,o_rdwr), 這個open會呼叫system call inte***ce(這個函式是在核心中的),這個函式會根據裝置名找到裝置號,然後會呼叫vfs中的sys_open,sys_open會找到引腳4中的open函式,引腳4中的open函式是對暫存器的操作。使用者態進入核心態會發生一次軟中斷 ,中斷號是0x80。

以上是對下圖的解釋:

linux 防火牆 認知

本篇要解決2個疑問 防火牆的作用 防火牆的工作原理 一 防火牆作用 目前我使用的 大體可分為兩種,網路位址轉換 net 和資料報過濾 filter 1.1 現網中常見的是多台伺服器共用乙個ip,那麼如何去區分這些共用乙個ip的伺服器呢?用的就是目的位址轉化功能。將訪問某個公網ip的某個埠,經過防火牆...

學習LINUX前的認知

主要分為真機安裝 虛擬機器安裝 2.虛擬機器軟體 為了模擬乙個真實的電腦環境,礙於使用真機安裝代價太大,因此誕生虛擬 機。目前比較出名的vmware的vmware workstation oracle 出品的virtual box 五 linux 系統的檔案 linux本身是乙個基於檔案形式表示的作...

Linux驅動 按鍵驅動

開發板 tiny6410 核心版本 linux2.6.38 要想寫出案件驅動 需要複習的知識 1 混雜裝置的使用原理 2 系統呼叫驅動函式的原理 3 中斷處理機制 4 阻塞性裝置驅動的書寫規範 1 混雜裝置的註冊和使用比較簡單,以前也複習過,這裡不再複習 3 中斷處理機制 也有部落格內容中斷處理機制...