當前位置:編程學習大全網 - 源碼下載 - Linux驅動程序開發實例的目錄

Linux驅動程序開發實例的目錄

前言

第1章 Linux設備驅動程序模型 1

1.1 設備驅動程序基礎 1

1.1.1 驅動程序的概念 1

1.1.2 驅動程序的加載方式 2

1.1.3 編寫可加載模塊 3

1.1.4 帶參數的可加載模塊 5

1.1.5 設備驅動程序的分類 6

1.2 字符設備驅動程序原理 7

1.2.1 file_operations結構 7

1.2.2 使用register_chrdev註冊字符

設備 9

1.2.3 使用cdev_add註冊字符設備 11

1.2.4 字符設備的讀寫 13

1.2.5 ioctl接口 14

1.2.6 seek接口 16

1.2.7 poll接口 18

1.2.8 異步通知 22

1.3 proc文件系統 24

1.3.1 proc文件系統概述 24

1.3.2 seq_file機制 25

1.3.3 使用proc文件系統 27

1.4 塊設備驅動程序 32

1.4.1 Linux塊設備驅動程序原理 32

1.4.2 簡單的塊設備驅動程序實例 35

1.5 網絡設備驅動程序 39

1.5.1 網絡設備的特殊性 39

1.5.2 sk_buff結構 40

1.5.3 Linux網絡設備驅動程序架構 42

1.5.4 虛擬網絡設備驅動程序實例 46

1.6 Linux 2.6設備管理機制 50

1.6.1 kobject和kset 50

1.6.2 sysfs文件系統 51

1.6.3 設備模型層次 52

1.6.4 platform的概念 54

第2章 Linux內核同步機制 58

2.1 鎖機制 58

2.1.1 自旋鎖 58

2.1.2 讀寫鎖 60

2.1.3 RCU 61

2.2 互斥 64

2.2.1 原子操作 64

2.2.2 信號量 65

2.2.3 讀寫信號量 67

2.3 等待隊列 68

2.3.1 等待隊列原理 68

2.3.2 阻塞式I/O實例 68

2.3.3 完成事件 70

2.4 關閉中斷 71

第3章 內存管理與鏈表 72

3.1 物理地址和虛擬地址 72

3.2 內存分配與釋放 72

3.3 IO端口到虛擬地址的映射 73

3.3.1 靜態映射 73

3.3.2 動態映射 75

3.4 內核空間到用戶空間的映射 76

3.4.1 內核空間到用戶空間的地址

映射原理 76

3.4.2 mmap地址映射實例 78

3.5 內核鏈表 80

3.5.1 Linux內核中的鏈表 80

3.5.2 內核鏈表實例 81

第4章 延遲處理 83

4.1 內核線程 83

4.2 軟中斷機制 85

4.2.1 軟中斷原理 85

4.2.2 tasklet 87

4.3 工作隊列 89

4.3.1 工作隊列原理 89

4.3.2 工作隊列實例 91

4.4 內核時間 92

4.4.1 Linux中的時間概念 92

4.4.2 Linux中的延遲 93

4.4.3 內核定時器 93

第5章 簡單設備驅動程序 96

5.1 寄存器訪問 96

5.1.1 S3C6410地址映射 96

5.1.2 S3C6410看門狗驅動程序實例 98

5.1.3 S3C6410蜂鳴器驅動程序實例 102

5.2 電平控制 107

5.2.1 S3C6410 LED驅動程序實例 107

5.2.2 掃描型S3C6410按鍵驅動

程序實例 109

5.3 時序產生 112

5.3.1 時序圖原理 112

5.3.2 AT24C02芯片原理 112

5.3.3 AT24C02驅動程序開發實例 115

5.4 硬中斷處理 123

5.4.1 硬中斷處理原理 123

5.4.2 中斷型S3C6410按鍵驅動

程序實例 127

5.5 Linux I/O端口控制 132

5.5.1 Linux I/O端口讀寫 132

5.5.2 在應用層訪問Linux I/O

端口 133

5.5.3 /dev/port設備 134

第6章 深入Linux內核 135

6.1 嵌入式Linux系統構成 135

6.2 Linux內核導讀 136

6.2.1 Linux內核組成 136

6.2.2 Linux的代碼結構 137

6.2.3 內核Makefile 138

6.2.4 S3C6410硬件初始化 139

6.3 Linux文件系統 141

6.3.1 虛擬文件系統 141

6.3.2 根文件系統 143

6.3.3 文件系統加載 143

6.3.4 ext3文件系統 145

6.4 Flash文件系統 145

6.4.1 MTD設備 145

6.4.2 MTD字符設備 148

6.4.3 MTD塊設備 150

6.4.4 cramfs文件系統 153

6.4.5 JFFS2文件系統 153

6.4.6 YAFFS文件系統 155

6.4.7 文件系統總結 156

6.5 Linux內核移植 156

6.5.1 體系配置 156

6.5.2 添加yaffs2 157

6.5.3 Nand flash驅動程序移植 157

6.5.4 配置啟動參數 159

6.5.5 移植RTC驅動程序 160

6.6 根文件系統制作 162

6.6.1 Busybox 162

6.6.2 shell基礎 165

6.6.3 根文件系統構建實例 166

6.7 udev模型 167

6.7.1 udev模型原理 167

6.7.2 mdev的使用 167

第7章 I2C總線驅動程序 169

7.1 Linux的I2C驅動程序架構 169

7.1.1 I2C適配器 169

7.1.2 I2C算法 170

7.1.3 I2C驅動程序結構 170

7.1.4 I2C從設備 171

7.1.5 i2c-dev設備層 171

7.2 Linux I2C驅動程序開發 174

7.2.1 S3C2410X的I2C控制器 174

7.2.2 S3C2410X的I2C驅動程序

分析 175

7.3 S3C2410的I2C訪問實例 182

7.4 I2C客戶端驅動程序 185

第8章 TTY與串口驅動程序 190

8.1 TTY概念 190

8.2 Linux TTY驅動程序體系 190

8.2.1 TTY驅動程序調用關系 190

8.2.2 TTY驅動程序原理 191

8.3 線路規程 194

8.4 串口驅動程序與TTY 196

8.4.1 串口設備驅動程序原理 196

8.4.2 S3C6410的串口驅動程序

實例 199

8.5 TTY應用層 202

第9章 網絡設備驅動程序 205

9.1 DM9000網卡驅動程序

開發 205

9.1.1 DM9000原理 205

9.1.2 DM9000X驅動程序分析 207

9.1.3 DM9000網口驅動程序移植 215

9.2 NFS根文件系統搭建 219

9.2.1 主機配置 219

9.2.2 NFS根文件系統搭建實例 220

9.3 netlink Socket 224

9.3.1 netlink機制 224

9.3.2 netlink應用層編程 228

9.3.3 netlink驅動程序實例 229

第10章 framebuffer驅動程序 232

10.1 Linux framebuffer驅動

程序原理 232

10.1.1 framebuffer核心數據結構 232

10.1.2 framebuffer操作接口 234

10.1.3 framebuffer驅動程序的文件

接口 236

10.1.4 framebuffer驅動程序框架 236

10.2 S3C6410 顯示控制器 238

10.3 S3C6410 LCD驅動程序實例 243

10.4 framebuffer應用層 250

10.5 Qt4界面系統移植 251

第11章 輸入子系統驅動程序 253

11.1 Linux輸入子系統概述 253

11.1.1 input_dev結構 253

11.1.2 輸入事件 255

11.2 input_handler 256

11.2.1 Input Handler層 256

11.2.2 常用的Input Handler 259

11.3 輸入設備應用層 261

11.4 鍵盤輸入設備驅動程序

實例 262

11.5 event接口 267

11.6 觸摸屏驅動程序實例 270

11.6.1 S3C6410觸摸屏控制器 270

11.6.2 S3C6410觸摸屏驅動程序

設計 273

11.7 觸摸屏校準 282

11.7.1 觸摸屏校準原理 282

11.7.2 利用TSLIB庫校準觸摸屏 282

第12章 USB驅動程序 284

12.1 USB體系概述 284

12.1.1 USB系統組成 284

12.1.2 USB主機 284

12.1.3 USB設備邏輯層次 285

12.2 Linux USB驅動程序體系 287

12.2.1 USB總體結構 287

12.2.2 USB設備驅動程序 287

12.2.3 主機控制器驅動程序 288

12.2.4 USB請求塊urb 289

12.2.5 USB請求塊的填充 291

12.3 S3C6410 USB主機控制器

驅動程序 292

12.3.1 USB主機控制器驅動程序

分析 292

12.3.2 S3C6410 USB驅動程序

加載 294

12.4 USB鍵盤設備驅動程序

分析 296

12.5 USB Gadget驅動程序 301

12.5.1 Linux USB Gadget驅動程序 301

12.5.2 Linux USB Gadget驅動程序

實例 302

第13章 音頻設備驅動程序 303

13.1 ALSA音頻體系 303

13.2 ALSA驅動層API 304

13.2.1 聲卡和設備管理 304

13.2.2 PCM API 304

13.2.3 控制與混音API 305

13.2.4 AC97 API 306

13.2.5 SOC層驅動 307

13.3 ALSA驅動程序實例 308

13.3.1 S3C6410的AC97控制

單元 308

13.3.2 S3C6410聲卡電路原理 309

13.3.3 S3C6410的數字音頻接口 310

13.3.4 wm9713的數字音頻接口 313

13.4 ALSA音頻編程接口 316

13.4.1 ALSA PCM接口實例 316

13.4.2 ALSA MIDI接口實例 320

13.4.3 ALSA mixer接口實例 321

13.4.4 ALSA timer接口實例 322

第14章 video4linux2視頻

驅動程序 327

14.1 video4linux2驅動程序

架構 327

14.1.1 video4linux2驅動程序的

註冊 327

14.1.2 v4l2_fops接口 331

14.1.3 常用的結構 332

14.1.4 video4linux2的ioctl函數 333

14.2 S3C6410攝像頭驅動程序

分析 333

14.2.1 電路原理 333

14.2.2 驅動程序分析 334

14.3 video4linux2應用層實例 339

第15章 SD卡驅動程序 346

15.1 Linux SD卡驅動程序體系 346

15.1.1 SD卡電路原理 346

15.1.2 MMC卡驅動程序架構 347

15.1.3 MMC卡驅動程序相關

結構 347

15.1.4 MMC卡塊設備驅動程序 350

15.1.5 SD卡主機控制器接口驅動

程序 356

15.2 S3C6410 SD卡控制器驅動

程序分析 360

15.2.1 電路原理 360

15.2.2 S3C6410 SDHCI驅動

程序原理 360

15.2.3 SD卡的加載實例 364

參考文獻 366

  • 上一篇:java是世界上最好的語言嗎?
  • 下一篇:硬盤邏輯鎖的形成和解決辦法?
  • copyright 2024編程學習大全網