一,裝置驅動程式的作用
最顯著的作用,是可以使計算機和裝置通訊,充當硬體的介面。作業系統只能通過這個介面來控制裝置。
二是書中說的驅動在於提供機制,而不是策略,個人覺得這應該是我們編寫驅動程式遵循的乙個原則。機制--需要提供什麼功能
,策略--如何使用這些功能。由於不同的環境需要不同的方式來使用硬體,因此應盡可能做到讓驅動程式不帶策略
驅動程式在使用者態和核心態之間傳遞資料
驅動程式是核心的一部分,可以使用中斷、dma等操作
二,核心功能劃分
程序管理:建立和銷毀程序,處理他們與外部世界之間的連線
記憶體管理:在有限的可用資源之上為每個進車功能建立乙個虛擬位址空間
檔案系統:
裝置控制:所有裝置控制操作都由與控制裝置相關的**完成
網路功能
上面核心的每一部分都和我們編寫具體的驅動程式相關,以後再學習中會慢慢涉及到每一部分。
三,可裝載模組
linux提供了模組機制以便我們進行驅動開發。
insmod:將模組連線到正在執行的核心
rmmod :移除連線
四,裝置和模組的分類
linux裝置分類一般分為三類:字元裝置,塊裝置,網路介面。
1)字元裝置:所有能夠象位元組流一樣訪問的裝置都通過字元裝置實現它們被對映為檔案系統中的節點,通常在/dev/目錄下
2)塊裝置:通常是指諸如磁碟、記憶體、flash等可以容納檔案系統的儲存裝置塊裝置也是通過檔案系統訪問,與字元裝置的區別:核心管理資料的方式不同它允許象字元裝置一樣以位元組流的方式來訪問,也可一次傳遞任意多的位元組。
3)網路介面裝置:通常它指的是硬體裝置,但有時也可能是乙個軟體裝置(如回環接loopback),它們由核心中網路子系統驅動,負責傳送和接收資料報。它們的資料傳送往往不是面向流的,因此很難將它們對映到乙個檔案系統的節點上。
一般要包含open read write close等系統呼叫的實現
但是我們要知道乙個複雜裝置可能會涉及到linux驅動的很多子系統,比如usb的藍芽鍵盤,會涉及到usb子系統,藍芽協議棧,input子系統,所以這個裝置從不同的角度看在linux核心中屬於不同的子系統,所以這三個分類只是乙個很簡單概括的分類,我們也不必遵循這三個分類。
五,安全問題 & 版本編號 & 許可證條款
1) 主要是:快取區溢位,資料洩漏,後門程式等等安全問題
3)許可證條款,這個問題大概就是說我們寫的核心模組應該遵行gpl2發布,這樣的話核心開發者就會知道我們寫的核心模組的原始碼,這樣如果核心**在更新的時候不至於我們寫的核心模組出現核心版本間不相容的情況,所以我們都最好以gpl2這種許可證發布。
並且該許可證原文可以從核心頂層目錄的copying檔案檢視到。
第一章 裝置驅動程式簡介
注 這是當初學習 linux裝置驅動程式 時記錄的學習筆記,只有提綱挈領的作用,有不足之處還請大家多多指點。可裝載模組 我們可以使用insmod 程式將模組連線到正在執行的核心,也可以使用 rmmod 程式移除連線。裝置和模組的分類 linux系統將裝置分為三種型別 字元裝置,塊裝置,網路介面。字元...
第一章 裝置驅動程式介紹
內容主要作用是對學習內容的總結,以便於後面的回顧,以及方便的及時補充 機制 需要提供什麼功能 策略 如何使用使用功能 驅動程式同樣需要機制和策略分離。驅動程式需要處理如何使硬體可用,盡量將怎樣使用硬體的問題留給上層應用程式引用塊內容。程序管理 記憶體管理 檔案系統 控制裝置 網路功能 字元裝置 塊裝...
驅動第一章字串
使用字串結構 傳統c語言總定義和使用字串 ansi和unicode ansi unicode char str ansi字串定義 wchar t wstr unicode字串定義 求長度 size t len strlen str ansi size t wlen wcslen wstr unico...