當前位置: 首頁 > 原創圖書 >嵌入式Linux設備驅動開發詳解

嵌入式Linux設備驅動開發詳解
  • 圖書名稱 :    嵌入式Linux設備驅動開發詳解
  • 作       者 :    華清遠見
  • 出版單位 :    人民郵電出版社
  • 叢書名稱 :    北京華清遠見嵌入式培訓中心教材
  • 全書章節 :    共16章
  • 出版日期 :    2008年3月
編輯推薦

內容權威,權威培訓機構多年經驗的總結
主題全面,覆蓋嵌入式 Linux 設備驅動開發的方方面面
實例豐富,所有驅動均用實例進行講解
華清遠見嵌入式培訓中心指定教材

圖書簡介

      嵌入式Linux設備驅動是嵌入式系統中十分重要的組成部分。本書詳細講解了嵌入式Linux的各種設備驅動,包括字符設備驅動、數字顯示驅動、鍵盤驅動、A/D驅動、D/A驅動、LCD驅動、觸摸屏驅動、CAN總線驅動、IIC總線驅動、音頻總線驅動、IDE接口驅動、閃存芯片驅動、USB驅動、串口驅動、網絡設備驅動等,并結合大量實例進行講解,讀者可以快速熟悉和掌握相關知識。 本書內容豐富,專業性和實用性強,適合嵌入式系統設計人員以及高校相關專業師生學習和使用。

圖書目錄

第1章 嵌入式系統與驅動程序 1
 本章目標 1
 1.1 嵌入式系統概述 1
  1.1.1 嵌入式系統的概念 1
  1.1.2 嵌入式系統的特點 2
  1.1.3 嵌入式系統的體系結構 2
 1.2 嵌入式處理器介紹 4
  1.2.1 嵌入式處理器分類 4
  1.2.2 ARM概述 5
  1.2.3 ARM系列芯片簡介 5
 1.3 嵌入式操作系統介紹 7
  1.3.1 主流嵌入式操作系統 7
  1.3.2 嵌入式系統的發展狀況 8
  1.3.3 嵌入式Linux介紹 8
  1.3.4 嵌入式系統開發環境的建立 9
  1.3.5 嵌入式軟件開發 10
 1.4 嵌入式Linux驅動程序 12
  1.4.1 嵌入式Linux的內核空間和用戶空間 12
  1.4.2 嵌入式Linux的文件系統 12
  1.4.3 嵌入式Linux的設備管理 14
  1.4.4 嵌入式Linux的驅動程序 16
 1.5 知識索引 20
 1.6 思考與練習 21
第2章 簡單的字符設備驅動程序 23
 本章目標 23
 2.1 嵌入式Linux字符設備的驅動程序結構 23
  2.1.1 嵌入式Linux驅動程序常用的頭文件 24
  2.1.2 File_operations結構體 24
  2.1.3 字符設備驅動程序的入口 25
  2.1.4 驅動程序的設備注冊 26
 2.2 設備驅動程序中的具體問題 27
  2.2.1 I/O端口 28
  2.2.2 內存操作 29
  2.2.3 中斷處理 29
 2.3 LED的驅動程序實例及測試 30
  2.3.1 LED I/O端口設置 30
  2.3.2 LED硬件電路設計 32
  2.3.3 LED驅動程序設計 33
  2.3.4 LED測試程序設計 36
 2.4 嵌入式Linux中斷處理驅動程序及測試 37
  2.4.1 中斷處理過程 37
  2.4.2 中斷向量表 39
  2.4.3 中斷的處理模式 39
  2.4.4 中斷的優先級 40
  2.4.5 中斷的嵌套 40
  2.4.6 中斷源的擴展 40
  2.4.7 中斷控制寄存器的設置 41
 2.5 按鍵中斷的驅動程序實例 45
  2.5.1 按鍵中斷的電路設計 45
  2.5.2 按鍵中斷的驅動程序設計 45
 2.6 知識索引 48
 2.7 思考與練習 49
第3章 數字顯示驅動程序 50
 本章目標 50
 3.1 數字顯示器 50
  3.1.1 數碼管簡介 50
  3.1.2 數碼管的分類 51
  3.1.3 數碼管顯示原理 51
 3.2 數碼管顯示電路的硬件設計 52
  3.2.1 譯碼器的使用 52
  3.2.2 數碼管的驅動方式 53
  3.2.3 串/并變換的譯碼設計 55
 3.3 數碼管驅動程序實例 56
  3.3.1 驅動程序的初始化和卸載模塊 56
  3.3.2 文件操作結構模塊 57
  3.3.3 數碼管的打開模塊 57
  3.3.4 數碼管的讀寫模塊 58
  3.3.5 數碼管的I/O控制模塊 58
  3.3.6 數碼管的退出模塊 58
  3.3.7 驅動程序的模塊加載和卸載 59
 3.4 數碼管顯示電路測試程序設計 60
  3.4.1 數碼管測試設計 60
  3.4.2 數碼管測試程序 60
  3.4.3 數碼管測試效果 61
 3.5 知識索引 61
 3.6 思考與練習 62
第4章 鍵盤驅動程序 63
 本章目標 63
 4.1 鍵盤接口概述 63
  4.1.1 鍵盤的分類 63
  4.1.2 鍵盤的防抖 65
  4.1.3 鍵盤的掃描 65
  4.1.4 鍵盤的緩沖算法 67
 4.2 鍵盤的驅動設計實例 67
  4.2.1 鎖存器和緩沖器擴展鍵盤 67
  4.2.2 鎖存器和緩沖器的接口 68
  4.2.3 鎖存器和緩沖器擴展鍵盤驅動程序設計 69
  4.2.4 鎖存器和緩沖器擴展鍵盤測試程序設計 71
 4.3 智能控制芯片HD7279擴展鍵盤 72
  4.3.1 HD7279的電路設計 72
  4.3.2 HD7279的指令介紹 73
  4.3.3 HD7279的串行接口 74
  4.3.4 HD7279的驅動程序設計 75
  4.3.5 HD7279的測試程序設計 84
 4.4 知識索引 85
 4.5 思考與練習 85
第5章 A/D驅動程序 86
 本章目標 86
 5.1 A/D轉換的過程 86
  5.1.1 采樣和保持 86
  5.1.2 量化和編碼 88
  5.1.3 ADC的分類 89
 5.2 A/D轉換器的基本原理 89
  5.2.1 逐次逼近型A/D轉換器 89
  5.2.2 雙積分型A/D轉換器 90
  5.2.3 V/F和F/V型轉換器 93
  5.2.4 其他A/D轉換器 95
 5.3 A/D轉換器接口技術 97
  5.3.1 ADC的主要參數及意義 97
  5.3.2 ADC的電路選擇方法 98
  5.3.3 ADC實際應用中的問題 99
 5.4 S3C2410 A/D轉換驅動設計實例 99
  5.4.1 S3C2410的A/D轉換電路 99
  5.4.2 S3C2410X的A/D轉換控制寄存器 100
  5.4.3 S3C2410X的A/D轉換數據寄存器 101
  5.4.4 S3C2410X中A/D轉換驅動程序的設計 102
  5.4.5 S3C2410X中A/D轉換測試程序的設計 105
 5.5 知識索引 106
 5.6 思考與練習 107
第6章 D/A驅動程序 108
 本章目標 108
 6.1 D/A的原理介紹 108
  6.1.1 D/A轉換的概念及基本原理 108
  6.1.2 電子模擬開關 109
  6.1.3 D/A轉換器的基本結構 110
  6.1.4 D/A轉換的靜態參數 114
  6.1.5 D/A轉換的動態參數 115
 6.2 D/A轉換的硬件電路設計 116
  6.2.1 D/A轉換的接口技術 116
  6.2.2 D/A轉換芯片介紹 117
  6.2.3 D/A轉換的電路設計 118
 6.3 D/A轉換器的驅動程序實例 118
  6.3.1 D/A驅動程序中的宏定義 118
  6.3.2 D/A的模塊加載 118
  6.3.3 D/A轉換器的文件操作模塊 119
  6.3.4 D/A轉換器的讀寫控制模塊 120
  6.3.5 D/A轉換器的打開、退出模塊 120
 6.4 測試程序的設計 120
  6.4.1 D/A測試程序中的宏定義 121
  6.4.2 D/A測試程序的主函數 121
  6.4.3 D/A測試程序中的功能函數 122
  6.4.4 D/A測試程序中的功能打印函數 123
  6.4.5 D/A測試程序中的波形生成函數 123
  6.4.6 D/A測試程序的效果 124
 6.5 知識索引 125
 6.6 思考與練習 125
第7章 LCD驅動程序 126
 本章目標 126
 7.1 LCD顯示器概述 126
  7.1.1 液晶 126
  7.1.2 LCD顯示屏的背光 127
  7.1.3 LCD顯示器的分類 127
  7.1.4 LCD的顯示原理 127
  7.1.5 LCD的驅動方式 130
  7.1.6 LCD的常用指標 131
 7.2 LCD的顯示接口 131
  7.2.1 灰度STN的時序 132
  7.2.2 彩色STN的時序 133
  7.2.3 TFT的時序 134
 7.3 嵌入式處理器的LCD控制器 136
  7.3.1 LCD控制器 136
  7.3.2 LCD控制器的設置 137
  7.3.3 LCD的字符顯示緩存 139
 7.4 LCD的驅動程序設計 140
  7.4.1 LCD驅動程序相關的宏定義 140
  7.4.2 LCD驅動程序的底層操作函數 142
  7.4.3 LCD驅動程序提供的API 145
  7.4.4 LCD驅動程序的模塊化加載 151
  7.4.5 LCD的測試程序 152
 7.5 基于Framebuffer的LCD驅動程序實例 155
  7.5.1 Framebuffer概述 155
  7.5.2 LCD的電路連接 155
  7.5.3 Framebuffer設備驅動程序的結構 156
  7.5.4 Framebuffer設備驅動程序的設計 159
  7.5.5 Framebuffer設備測試程序的設計 164
  7.5.6 嵌入式Linux常用的GUI 166
 7.6 知識索引 166
 7.7 思考與練習 167
第8章 觸摸屏驅動程序 168
 本章目標 168
 8.1 觸摸屏概述 168
 8.2 觸摸屏的分類 168
  8.2.1 電阻技術觸摸屏 168
  8.2.2 表面聲波技術觸摸屏 169
  8.2.3 電容電感技術觸摸屏 170
  8.2.4 紅外線技術觸摸屏 170
 8.3 觸摸屏的特性 171
  8.3.1 透明度和色彩失真 171
  8.3.2 反光性 171
  8.3.3 清晰度 171
  8.3.4 漂移 172
  8.3.5 檢測和定位 172
 8.4 觸摸屏的硬件電路設計 172
  8.4.1 電阻式觸摸屏的電路原理 172
  8.4.2 電阻式觸摸屏原點的定位 173
  8.4.3 電阻式觸摸屏的電路連接 174
 8.5 觸摸屏的驅動程序實例 176
  8.5.1 觸摸屏接口的模式 176
  8.5.2 A/D轉換和觸摸屏寄存器的設置 177
  8.5.3 觸摸屏的坐標 179
  8.5.4 觸摸屏的電路連接 180
  8.5.5 觸摸屏的驅動程序接口 181
 8.6 測試程序的設計 182
  8.6.1 觸摸屏的數據定義 183
  8.6.2 觸摸屏的數據處理 183
  8.6.3 觸摸屏的運行測試 185
 8.7 知識索引 186
 8.8 思考與練習 187
第9章 CAN總線驅動程序 188
 本章目標 188
 9.1 CAN總線接口設計 188
  9.1.1 CAN總線概述 188
  9.1.2 CAN的工作特點及主要優點 189
  9.1.3 CAN總線的電氣特征和MAC幀結構 189
 9.2 嵌入式處理器上CAN總線接口的擴展 190
  9.2.1 SJA1000簡介 190
  9.2.2 SJA1000擴展 191
 9.3 SJA1000擴展CAN總線接口的設計 192
  9.3.1 CAN 控制器SJA1000的操作模式 192
  9.3.2 CAN控制器SJA1000的特征功能 193
  9.3.3 CAN 控制器SJA1000的Basic CAN模式設置 194
 9.4 SJA1000擴展CAN總線接口的通信 196
  9.4.1 通過CAN總線建立通信的步驟 196
  9.4.2 SJA1000的初始化 196
  9.4.3 驅動程序的結構設計 198
  9.4.4 驅動程序init、exit、open、close函數的實現 200
  9.4.5 驅動程序read、write函數的實現 201
  9.4.6 驅動程序interrupt、ioctl函數實現 202
  9.4.7 測試程序的編寫 202
 9.5 驅動程序的加載 204
 9.6 知識索引 204
 9.7 思考與練習 205
第10章 IIC總線驅動程序 206
 本章目標 206
 10.1 IIC總線概述 206
  10.1.1 IIC總線介紹 206
  10.1.2 IIC總線引入的原因 206
  10.1.3 IIC總線的特點 206
  10.1.4 IIC總線的基本結構 207
  10.1.5 IIC總線的術語 207
  10.1.6 IIC總線的工作 208
  10.1.7 IIC總線的競爭仲裁 209
  10.1.8 IIC總線的工作流程 210
 10.2 嵌入式處理器的IIC接口 211
  10.2.1 IIC總線控制寄存器 212
  10.2.2 IIC總線控制/狀態寄存器 213
  10.2.3 IIC總線地址寄存器 214
  10.2.4 IIC總線移位數據寄存器 214
  10.2.5 S3C2410中與IIC對應的I/O端口 215
 10.3 基于IIC的鍵盤芯片應用 216
  10.3.1 ZLG7290的功能 217
  10.3.2 ZLG7290的控制方式 218
  10.3.3 ZLG7290的寄存器 218
  10.3.4 ZLG7290的通信接口 219
  10.3.5 ZLG7290的指令介紹 219
 10.4 IIC總線驅動程序實例 221
  10.4.1 ZLG7290的電路連接 221
  10.4.2 ZLG7290的通信流程 223
  10.4.3 ZLG7290驅動中變量的定義 225
  10.4.4 ZLG7290驅動中實時時鐘的改變 226
  10.4.5 ZLG7290和IIC寄存器的初始化 227
  10.4.6 ZLG7290驅動程序的模塊化 228
  10.4.7 ZLG7290的文件操作結構 228
 10.5 IIC總線的測試程序 230
 10.6 知識索引 231
 10.7 思考與練習 231
第11章 音頻總線驅動程序 232
 本章目標 232
 11.1 音頻總線接口概述 232
  11.1.1 音頻的采樣精度 233
  11.1.2 音頻編碼 233
 11.2 IIS音頻總線接口 233
  11.2.1 IIS總線的物理連接 233
  11.2.2 IIS的總線協議 234
  11.2.3 IIS總線的硬件設計 235
  11.2.4 IIS總線的寄存器 236
 11.3 AC97音頻總線接口 239
 11.4 IIS總線的驅動程序設計 240
  11.4.1 音頻設備基礎知識 240
  11.4.2 音頻設備文件 241
  11.4.3 WAV聲音文件 243
  11.4.4 音頻設備和驅動程序的通信 243
  11.4.5 設備的初始化和加載 244
  11.4.6 DMA的操作和宏定義 246
  11.4.7 audio設備文件的操作 248
  11.4.8 mixer設備文件的操作 260
 11.5 音頻驅動程序的測試 262
 11.6 知識索引 262
 11.7 思考與練習 263
第12章 IDE接口驅動程序 264
 本章目標 264
 12.1 IDE接口概述 264
  12.1.1 硬盤知識介紹 264
  12.1.2 IDE接口標準 267
  12.1.3 IDE接口的傳輸模式 269
  12.1.4 IDE接口寄存器 269
 12.2 IDE接口驅動程序的移植 271
  12.2.1 嵌入式Linux下IDE驅動程序接口 271
  12.2.2 嵌入式Linux下IDE驅動程序 272
  12.2.3 IDE硬盤的讀/寫操作 274
 12.3 IDE驅動程序測試 282
  12.3.1 磁盤文件系統簡介 283
  12.3.2 IDE分區測試 283
 12.4 知識索引 285
 12.5 思考與練習 285
第13章 閃存芯片的驅動程序 286
 本章目標 286
 13.1 閃存芯片概述 286
  13.1.1 閃存芯片的物理特性 286
  13.1.2 嵌入式文件系統概述 289
  13.1.3 MTD體系介紹 289
  13.1.4 Flash專有名詞 291
 13.2 NAND Flash 291
  13.2.1 NAND Flash的結構 291
  13.2.2 NAND Flash的操作 292
  13.2.3 NAND Flash控制器 294
  13.2.4 NAND Flash的時序 296
  13.2.5 NAND Flash的驅動程序實例 297
 13.3 NOR Flash 301
  13.3.1 NOR Flash的結構 301
  13.3.2 NOR Flash的操作 302
  13.3.3 NOR Flash的驅動程序實例 303
 13.4 基于閃存的文件系統 307
 13.5 知識索引 309
 13.6 思考與練習 310
第14章 USB 設備驅動程序 311
 本章目標 311
 14.1 USB接口概述 311
  14.1.1 USB系統 311
  14.1.2 USB的電氣特性 312
  14.1.3 USB總線的拓撲結構 313
  14.1.4 USB的通信協議 313
 14.2 嵌入式系統中USB的使用 315
  14.2.1 OHCI概述 315
  14.2.2 Host接口硬件設計 316
 14.3 嵌入式系統中USB設備的驅動程序設計 316
  14.3.1 USB設備驅動程序的分類 316
  14.3.2 USB驅動的骨架程序 317
  14.3.3 設備端USB驅動程序 327
  14.3.4 USB鍵盤飛梭的驅動程序 327
 14.4 USB驅動程序測試 331
  14.4.1 熱插拔 331
  14.4.2 利用hotplug腳本實現設備的自動加載 332
 14.5 知識索引 333
 14.6 思考與練習 334
第15章 串口驅動程序 335
 本章目標 335
 15.1 串口概述 335
  15.1.1 同步串口的傳輸標準 335
  15.1.2 異步串口的傳輸標準 336
  15.1.3 串口的物理層標準 336
  15.1.4 串口的電平邏輯轉換 341
 15.2 嵌入式處理器串口控制器 342
  15.2.1 嵌入式系統中常用的UART控制器 342
  15.2.2 S3C2410中的UART控制器 342
 15.3 嵌入式Linux串口驅動程序設計 346
  15.3.1 異步串口的工作流程 346
  15.3.2 串口的驅動程序結構 347
  15.3.3 串口驅動程序的注冊 349
  15.3.4 ops中的串口操作函數 351
  15.3.5 串口驅動中與控制臺有關的函數 360
 15.4 嵌入式Linux串口的應用程序設計 360
  15.4.1 串口編程需要用到的頭文件 360
  15.4.2 串口的終端函數 361
  15.4.3 RS-485和RS-232的通信 363
 15.5 基于串口的GPRS應用實例 366
  15.5.1 GPRS簡介 366
  15.5.2 GPRS的電路設計 367
  15.5.3 GPRS的程序分析 368
 15.6 基于串口的GPS應用實例 371
  15.6.1 GPS簡介 371
  15.6.2 GPS應用程序設計 371
 15.7 知識索引 375
 15.8 思考與練習 376
第16章 網絡設備驅動程序 377
 本章目標 377
 16.1 以太網概述 377
  16.1.1 以太網的連接 377
  16.1.2 以太網的工作原理 378
  16.1.3 以太網的幀結構 379
  16.1.4 TCP/IP網絡協議 381
  16.1.5 嵌入式系統中常用的網絡協議 382
 16.2 嵌入式處理器的以太網接口 383
  16.2.1 帶有MAC層控制協議的處理器 383
  16.2.2 通過以太網芯片擴展網絡接口 384
 16.3 以太網驅動程序體系結構 385
  16.3.1 網絡驅動程序的結構 385
  16.3.2 網絡設備初始化 386
  16.3.3 數據包的發送與接收 386
  16.3.4 網絡設備的加載方式 387
  16.3.5 常用的系統支持 388
 16.4 網卡驅動程序實例 392
  16.4.1 NE2000的內核支持 392
  16.4.2 網絡接口的初始化 392
  16.4.3 網絡接口設備的打開和關閉 393
  16.4.4 數據包發送和接收 394
  16.4.5 網絡驅動程序的基本操作 394
  16.4.6 編寫嵌入式Linux網絡驅動程序中需要注意的問題 398
 16.5 網絡驅動程序的測試 399
  16.5.1 嵌入式Linux的網絡配置 400
  16.5.2 NFS文件系統 401
  16.5.3 socket編程 403
  16.5.4 socket編程實例 405
 16.6 知識索引 415
 16.7 思考與練習 416