第1章Linux設備驅動模型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文件_操作結構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求接口16
1.2.7投票接口18
1.2.8異步通知22
1.3處理器文件系統24
1.3.1 proc文件系統概述24
1.3.2序列文件機制25
1.3.3使用proc文件系統27
1.4設備驅動程序32
1.4.1 Linux塊設備驅動原理32
1.4.2簡單塊設備驅動程序示例35
1.5網絡設備驅動程序39
網絡設備的特殊性39
1.5.2 sk_buff結構40
1.5.3 Linux網絡設備驅動架構42
1.5.4虛擬網絡設備驅動程序示例46
1.6 Linux 2.6設備管理機制50
1 . 6 . 1k對象和kset 50
1.6.2 sysfs文件系統51
1.6.3設備型號層級52
1.6.4平臺的概念54
第二章Linux內核同步機制58
2.1鎖機制58
2.1.1旋轉鎖58
2.1.2讀寫鎖60
RCU 61
2.2相互排斥64
2.2.1原子操作64
信號量65
2.2.3讀寫信號量67
2.3等待隊列68
2.3.1等待隊列原則68
2.3.2阻塞I/O示例68
完成事件70
2.4關閉中斷71
第3章內存管理和鏈表72
3.1物理地址和虛擬地址72
3.2內存分配和釋放72
3.3 IO端口到虛擬地址的映射73
3.3.1靜態映射73
動態映射75
3.4從內核空間到用戶空間的映射76
3.4.1內核空間到用戶空間的地址
映射原則76
3.4.2 mmap地址映射示例78
3.5內核鏈表80
3.5.1 Linux內核中的Linux列表80
3.5.2內核鏈表實例81
第4章延期處理83
4.1內核線程83
4.2軟中斷機制85
4.2.1軟中斷原理85
小任務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 s3c 6410+00地址映射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/開發/端口設備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內核生成文件138
6 . 2 . 4 s3c 6410硬件初始化139
6.3 Linux文件系統141
6.3.1虛擬文件系統141
6.3.2根文件系統143
文件系統加載143
6.3.4 ext3文件系統145
6.4閃存文件系統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閃存驅動程序移植157
6.5.4配置啟動參數159。
6.5.5移植RTC驅動程序160
6.6根文件系統制作162
6.6.1忙碌盒162
殼牌基礎165
6.6.3根文件系統構建實例166
6.7 udev型號167
6.7.1 udev模型原理167
6 . 7 . 2 MDEV mdev 167
第七章I2C公交車司機169
7.1 Linux 169的I2C驅動架構
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 s3c 2410x的I2C驅動程序
分析175
7.3 I2C接入S3C2410 182的例子
7.4 I2C客戶端驅動程序185
第八章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 s3c 6410的串行驅動器
示例199
8.5 TTY應用層202
第九章網絡設備驅動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插座224
9.3.1網絡鏈接機制224
9.3.2 netlink應用程序編程228
9.3.3 netlink驅動程序實例229
第10章幀緩沖驅動程序232
10.1 Linux幀緩沖驅動程序
程序原則232
10.1.1幀緩沖區核心數據結構232
10.1.2幀緩沖區操作接口234
10.1.3幀緩沖區驅動程序的文件
接口236
10.1.4幀緩沖區驅動程序幀236
10.2 S3C6410顯示控制器238
10.3 S3C6410 LCD驅動示例243
10.4幀緩沖應用層250
10.5 Qt4接口系統移植251
第11章輸入子系統驅動程序253
11.1 Linux輸入子系統概述253
11.1.1輸入_開發結構253
11.1.2輸入事件255
11.2輸入處理程序256
11 . 2 . 1輸入句柄層256
11.2.2常用輸入處理程序259
11.3輸入設備應用層261
11.4鍵盤輸入設備驅動程序
實施例262
11.5事件接口267
11.6觸摸屏驅動程序示例270
11 . 6 . 1s3c 6410觸摸屏控制器270
11 . 6 . 2 s3c 6410觸摸屏驅動
設計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
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小工具驅動程序301
12.5.1Linux USB小工具驅動程序301
12.5.2 Linux USB小工具驅動程序
示例302
第13章音頻設備驅動303
13.1 ALSA音響系統303
13.2 ALSA驅動層API 304
13 . 2 . 1聲卡和設備管理
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
AC97控制13 . 3 . 1s3c 6410
第三百零八單元
13.3.2 S3C6410聲卡電路原理309
13 . 3 . 3 s3c 6410 310的數字音頻接口
13 . 3 . 4 WM 9713 313的數字音頻接口
13.4 ALSA音頻編程接口316
13.4.1 ALSA PCM接口示例316
13.4.2 ALSAMDI接口實例320
13.4.3 ALSA混音器接口實例321
13.4.4 ALSA計時器接口實例322
第14章視頻4linux2視頻
司機327
14.1視頻4linux2驅動程序
建築327
14.1.1視頻4Linux 2驅動程序
註冊327
14.1.2 v4l2_fops接口331
14.1.3普通結構332
14.1.4 video 4 Linux 2333的Ioctl函數
14.2 S3C6410攝像頭驅動程序
分析333
14.2.1 333電路原理
驅動因素分析334
14.3 video4linux2應用層實例339
第15章SD卡驅動346
15.1 Linux SD卡驅動系統346
15.1.1 SD卡電路原理3446
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 . 3sd卡364加載示例
參考文獻366