操作系統是通過各種驅動程序賴家與硬件設備的,它為用戶屏蔽了各種各樣的設備,驅動硬件是操作系統最基本的功能,并且提供統一的操作方式。設備驅動程序是操作系統最基本的組成部分之一,在Linux內核源程序中也占有60%以上,因此熟悉驅動的編寫很重要。
Linux系統將每一個驅動都映射成一個文件。這些文件稱為設備文件或驅動文件,都存在/dev目錄中。這樣,在應用程序看來,硬件設備只是一個設備文件,應用程序可以像操作普通文件一樣對硬件設備進行操作,從而大大方便了對設備的處理。
編寫驅動程序的步驟:
(1)建立Linux的驅動骨架(裝載和卸載Linux驅動)任何類型的程序都有一個基本結構,linux驅動程序也不例外。Linux內核在使用驅動時首先需要裝載驅動。在裝載過程中也需要進行一些初始化的工作。
(2)注冊和注銷設備文件
任何一個linux驅動都需要一個設備文件,否則應用程序將無法與驅動程序交互。
(3)指定與驅動相關的信息
驅動程序是自描述的。
(4)指定回調函數
一個驅動程序并不一定要指定所有的回調函數。
(5)編寫業務邏輯
(6)編寫Makefile文件
(7)編寫Linux驅動程序
(8)安裝和卸載Linux驅動
1.準備工作
建立存放Linux驅動程序的目錄
建立驅動源代碼文件
編寫一個makefile文件
2.?編寫linux驅動程序的骨架(初始化和退出驅動)
安裝linux驅動
查看word_count是否成功安裝
卸載linux驅動
查看由驅動輸出的日志信息
3.?指定與驅動相關的信息
模塊作者,模塊描述,模塊別稱,開源協議
4.?注冊和注銷設備文件
5.指定回調函數
6.實現統計單詞數的算法
7.編譯、安裝、卸載linux驅動程序
測試linux驅動
使用ubuntu?linux測試
在android模擬器上通過原聲(native)C程序測試
使用android?NDK測試
使用java代碼直接操作設備文件測試
使用S3C6410開發板測試
將驅動編譯進linux內核進行測試
使用eclipse開發和測試linux驅動
1.建立c工程
2.建立c源代碼文件連接
3.設置include路徑
4.編譯linux驅動
在eclipse中測試linux驅動
1.導入test_word_count.c文件
2.設置include路徑
3.建立targe
4.build工程
5.運行測試程序
需要注意的是,用戶空間與內核空間完成同樣或類似的功能的函數,宏等資源的名稱并不一定相同,有的名稱類似如:malloc和kmalloc?,有的不同如:atoi和simple_strol?等?
Linux系統將每一個驅動都映射成一個文件。這些文件稱為設備文件或驅動文件,都存在/dev目錄中。這樣,在應用程序看來,硬件設備只是一個設備文件,應用程序可以像操作普通文件一樣對硬件設備進行操作,從而大大方便了對設備的處理。
編寫驅動程序的步驟:
(1)建立Linux的驅動骨架(裝載和卸載Linux驅動)任何類型的程序都有一個基本結構,linux驅動程序也不例外。Linux內核在使用驅動時首先需要裝載驅動。在裝載過程中也需要進行一些初始化的工作。
(2)注冊和注銷設備文件
任何一個linux驅動都需要一個設備文件,否則應用程序將無法與驅動程序交互。
(3)指定與驅動相關的信息
驅動程序是自描述的。
(4)指定回調函數
一個驅動程序并不一定要指定所有的回調函數。
(5)編寫業務邏輯
(6)編寫Makefile文件
(7)編寫Linux驅動程序
(8)安裝和卸載Linux驅動
1.準備工作
建立存放Linux驅動程序的目錄
建立驅動源代碼文件
編寫一個makefile文件
2.?編寫linux驅動程序的骨架(初始化和退出驅動)
安裝linux驅動
查看word_count是否成功安裝
卸載linux驅動
查看由驅動輸出的日志信息
3.?指定與驅動相關的信息
模塊作者,模塊描述,模塊別稱,開源協議
4.?注冊和注銷設備文件
5.指定回調函數
6.實現統計單詞數的算法
7.編譯、安裝、卸載linux驅動程序
測試linux驅動
使用ubuntu?linux測試
在android模擬器上通過原聲(native)C程序測試
使用android?NDK測試
使用java代碼直接操作設備文件測試
使用S3C6410開發板測試
將驅動編譯進linux內核進行測試
使用eclipse開發和測試linux驅動
1.建立c工程
2.建立c源代碼文件連接
3.設置include路徑
4.編譯linux驅動
在eclipse中測試linux驅動
1.導入test_word_count.c文件
2.設置include路徑
3.建立targe
4.build工程
5.運行測試程序
需要注意的是,用戶空間與內核空間完成同樣或類似的功能的函數,宏等資源的名稱并不一定相同,有的名稱類似如:malloc和kmalloc?,有的不同如:atoi和simple_strol?等?
http://home.cnblogs.com/u/zivjeli/