內容簡介
全書共分10章。前面4章簡要介紹Linux作業系統的操作、嵌入式Linux驅動開發環境的建立方法以及Linux驅動程式開發所需要的核心基礎。第5章和第6章介紹字元驅動程式的設計方法,第7章和第8章介紹塊設備驅動程式的設計方法,第9章和第10章介紹網路驅動程式的設計方法。每類驅動程式分別從數據結構、驅動架構、驅動模組設計三方面進行了介紹,每類驅動程式都配置了一個模擬驅動小實例,通過這些小實例,可以深入理解各類驅動程式的架構。每類驅動程式還配置了一個真實外部設備的驅動程式開發實例。
《嵌入式Linux驅動程式開發實例教程》實例豐富,通俗易懂,可作為高等學校計算機科學與技術、軟體工程等專業學生學習嵌入式技術的教材,也可以作為計算機相關專業學生學習作業系統的提高教材,還可作為工程技術人員設計Linux驅動程式的參考書。
圖書目錄
第1章 設備驅動概述
1.1 設備驅動程式的作用
1.1.1 嵌入式系統的硬體組成
1.1.2 嵌入式系統的軟體組成
1.1.3 驅動程式的作用
1.2 Linux設備驅動
1.2.1 Linux設備驅動程式的分類及特點
1.2.2 Linux設備驅動程式與整個軟體系統的關係
1.3 Linux設備驅動程式開發技術的學習方法
習題1
第2章 Linux基本操作
2.1 Linux常用命令
2.1.1 檔案及目錄操作命令
2.1.2 顯示命令
2.1.3 檔案壓縮及解壓命令
2.1.4 網路命令
2.1.5 改變檔案訪問許可權的命令
2.1.6 幫助命令
2.1.7 安裝卸載檔案系統命令
2.2 Linux基本編程
2.2.1 emacs編輯器
2.2.2 使用gcc編譯程式
2.2.3 make命令
2.2.4 描述檔案
習題2
第3章 嵌入式Linux驅動程式開發環境的建立
3.1 交叉編譯環境的建立
3.2 超級終端的配置
3.3 檔案共享的配置
3.3.1 配置防火牆
3.3.2 配置samba使Windows與Linux共享
3.3.3 配置NFS使宿主機Linux與目標機Linux共享
習題3
第4章 Linux設備驅動核心基礎
4.1 Linux設備的表示
4.2 設備檔案系統(devfs)
4.3 模組
4.4 I/O連線埠的訪問
4.5 中斷管理
4.5.1 中斷的註冊
4.5.2 中斷的釋放
4.5.3 中斷處理例程
4.5.4 中斷的禁止和使能
4.6 設備驅動程式中的並發控制
4.6.1 信號量的初始化
4.6.2 信號量的申請
4.6.3 信號量的釋放
4.7 核心空間和用戶空間數據複製
4.8 使用printk()函式調試設備驅動程式
習題4
第5章 字元設備驅動程式
5.1 有關字元設備的數據結構
5.1.1 file_operations結構
5.1.2 file結構
5.1.3 chrdevs數組
5.2 字元設備驅動程式的設計
5.2.1 字元設備驅動程式的組成
5.2.2 file_operations結構體變數
5.2.3 字元設備驅動程式的載入及卸載函式
5.2.4 字元設備驅動程式的接口函式
5.3 訪問字元設備的系統調用
5.3.1 open()函式和create()函式
5.3.2 close()函式
5.3.3 read()函式
5.3.4 write()函式
5.3.5 套用舉例
5.4 核心訪問字元設備驅動程式的流程
5.4.1 open()系統調用的執行流程
5.4.2 read()和write()系統調用的執行流程
5.4.3 close()系統調用的執行流程
5.5 字元設備驅動程式示例:虛擬字元設備驅動程式
5.5.1 虛擬字元設備驅動程式代碼
5.5.2 測試程式代碼
5.5.3 虛擬字元設備驅動程式的編譯
5.5.4 虛擬字元設備驅動程式的測試
習題5
第6章 字元設備驅動程式實例:S3C2410ADC驅動程式
6.1 S3C2410X的ADC概述
6.1.1 S3C2410XADC的轉換頻率及轉換時間
6.1.2 S3C2410X與A/D轉換有關的暫存器
6.2 S3C2410X的ADC驅動程式設計
6.2.1 ADC驅動程式需要包含的頭檔案
6.2.2 ADC驅動程式的file_operations結構體變數
6.2.3 ADC驅動程式的載入函式
6.2.4 ADC驅動程式的卸載函式
6.2.5 ADC驅動程式的接口函式
6.2.6 ADC中斷處理函式
6.3 ADC驅動程式的編譯及測試
6.3.1 測試程式
6.3.2 ADC驅動程式的編譯
6.3.3 ADC驅動程式的測試
習題6
第7章 塊設備驅動程式
7.1 有關塊設備的數據結構
7.1.1 block_device_operations結構
7.1.2 gendisk結構
7.1.3 request_queue結構
7.1.4 buffer_head結構
7.1.5 request結構
7.2 塊設備驅動程式的設計
7.2.1 塊設備驅動程式的組成
7.2.2 檔案包含與宏定義
7.2.3 block_device_operations結構體變數
7.2.4 塊設備驅動程式的接口函式
7.2.5 塊設備驅動程式的request()函式
7.2.6 塊設備驅動的載入函式
7.2.7 塊設備驅動的卸載函式
7.3 塊設備驅動程式示例:虛擬塊設備驅動程式
7.3.1 虛擬塊設備驅動程式代碼
7.3.2 虛擬塊設備驅動程式的編譯
7.3.3 虛擬塊設備驅動程式的測試
習題7
第8章 塊設備驅動程式實例:SD卡驅動程式
8.1 SD卡功能概述
8.1.1 匯流排協定
8.1.2 SD卡的引腳
8.1.3 SD卡的命令
8.1.4 SD卡的回響
8.1.5 SD卡的暫存器
8.1.6 SD卡的狀態及操作模式
8.2 S3C2410XSDI接口概述
8.2.1 SDI暫存器
8.2.2 SDI的初始化
8.2.3 SD卡命令的傳送
8.2.4 數據的讀寫
8.3 基於S3C2410X的SD卡驅動程式設計
8.3.1 SD卡驅動程式的載入函式
8.3.2 SD卡驅動程式的卸載函式
8.3.3 SD卡驅動程式的接口函式
8.3.4 SD卡驅動程式的request()函式
8.4 SD卡驅動程式的編譯及測試
8.4.1 SD卡驅動程式的編譯
8.4.2 SD卡驅動程式的測試
習題8
第9章 網路設備驅動程式
9.1 有關網路設備的數據結構
9.1.1 net_device結構體
9.1.2 sk_buff結構體
9.2 網路設備驅動程式開發常用的核心函式
9.2.1 sk_buff結構操作函式
9.2.2 記憶體申請和釋放函式
9.2.3 網路驅動程式註冊和解除註冊函式
9.2.4 乙太網設備通用初始化函式
9.2.5 傳送佇列的啟動、喚醒及停止函式
9.2.6 查詢網路設備是否在運行的函式
9.2.7 向上層傳遞數據包的函式
9.3 網路設備驅動程式的設計
9.3.1 網路設備驅動程式的組成
9.3.2 網路設備驅動程式的載入函式
9.3.3 網路設備驅動程式的卸載函式
9.3.4 網路設備驅動程式的接口函式
9.3.5 網卡中斷處理程式
9.4 網路設備驅動程式示例:虛擬網路設備驅動程式
9.4.1 虛擬網路設備驅動程式代碼
9.4.2 虛擬網路設備驅動程式的編譯
9.4.3 虛擬網路設備驅動程式的測試
習題9
第10章 網路設備驅動程式實例:AX88796驅動程式
10.1 AX88796晶片與CPU的接口
10.1.1 AX88796與CPU的接口信號
10.1.2 S3C2410CPU與AX88796接口的信號
10.1.3 S3C2410CPU與網卡晶片接口相關的暫存器
10.1.4 UP-NETARM2410-S中AX88796與S3C2410CPU的連線
10.2 AX88796MAC核心暫存器
10.2.1 MAC核心暫存器概述
10.2.2 常用的MAC核心暫存器
10.3 AX88796晶片的緩衝區操作
10.3.1 數據包的接收
10.3.2 數據包的傳送
10.3.3 填充數據包到傳送緩衝區以及從接收緩衝區環移走數據包
10.4 AX88796驅動程式設計
10.4.1 AX88796.h
10.4.2 AX88796驅動程式的載入函式
10.4.3 AX88796驅動程式的卸載函式
10.4.4 AX88796驅動程式的接口函式
10.4.5 AX88796驅動程式的中斷處理程式
10.5 AX88796驅動程式的編譯及測試
10.5.1 AX88796網路驅動程式的編譯
10.5.2 AX88796驅動程式的測試
習題10
參考文獻