使用者程序是通過裝置檔案來與實際的硬體打交道。每個裝置檔案都有其檔案屬性(c/b),如表示是字元裝置還是塊裝置。另外每個檔案都有兩個裝置號,第乙個是主裝置號,用於標識驅動程式;第二個是從裝置號,用於標識使用同一裝置驅動的不同的硬體裝置。裝置檔案的主裝置號必須與裝置驅動程式在登記時申請的主裝置號一致,否則使用者程序將無法訪問到驅動程式。
最好,在使用者程序呼叫驅動程式時系統進入核心態,這時不再是搶先式排程,也就是說,系統必須在完成當前驅動的子函式返回後才能進行其他的工作。
模組程式設計
linux核心中採用可載入的模組化設計(lkms,loadable kernel modules),一般情況下編譯的核心是支援可插入式模組的,也就是將最基本的核心**編譯在核心中,其他的**可以在核心中或者編譯為核心的模組檔案。
模組相關命令
lsmod
rmmod,
insmod和modprobe
用於載入當前模組,但insmod不會自動解決依存關係,而modprobe則可以根據模組間的依存關係以及/etc/modules.conf檔案中的內容自動插入模組。
mknod用於建立相關模組
模組編寫流程
**程式設計:
2.模組編譯
在2.6核心下,模組編譯的makefile與2.4核心下有較大區別。由於這裡使用的是make的擴充套件語法,下面是makefile的形式。
執行make
3.模組載入
這些不同優先順序的資訊可以輸出到控制台和/var/log/messages中
要開啟klogd和syslogd服務,訊息才能正常輸出。
嵌入式linux字元裝置驅動
arm linux 驅動 抵岸科技 1.我們需要先呼叫register chrdev region 或 alloc chrdev region 來向系統申請裝置號 int register chrdev region dev t first,unsigned int count,char name ...
嵌入式linux字元裝置驅動
1.我們需要先呼叫register chrdev region 或 alloc chrdev region 來向系統申請裝置號 int register chrdev region dev t first,unsigned int count,char name 函式通過已知的裝置號first來註冊...
嵌入式Linux裝置驅動開發筆記(一)
一 linux裝置的分類 字元裝置 塊裝置 網路裝置,三種裝置之間的區別是資料的互動模式,分別為 位元組流 資料塊 資料報。二 vfs核心結構體 vfs核心結構體定義在 linux fs.h 標頭檔案中。1 struct inode結構體 記錄檔案的屬主 訪問時間等資訊。當第一次開啟檔案的時候由vf...