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
㈡ 為什麼Linux的音頻驅動位於sound目錄下而不是driver/sound
1、早期的2.4內核所有的音頻驅動和其他驅動一樣都是位於drivers目錄下的:drivers/sound
2、到了2.5開發版內核,所有的音頻驅動包括音頻框架代碼由drivers/sound移到了sound目錄下:
(1)2.6內核之前的git記錄查找:http://git.kernel.org/?p=linux/kernel/git/tglx/history.git;a=summary
(2)音頻驅動代碼被移動的git提交:
http://git.kernel.org/?p=linux/kernel/git/tglx/history.git;a=commit;h=
author Jaroslav Kysela <[email protected]>
Wed, 13 Feb 2002 03:32:11 +0000 (19:32 -0800)
committer Jaroslav Kysela <[email protected]>
Wed, 13 Feb 2002 03:32:11 +0000 (19:32 -0800)
commit
tree tree | snapshot
parent commit | diff
[PATCH] ALSA patch for 2.5.4
Integrate ALSA into v2.5.4
Jaroslav
這個提交是在2.5.4~2.5.5-pre1之間發生的
從這個提交信息可以看出,是在Linux內核正式引入ALSA音頻構架的時候,所有的代碼都被移動到了drivers/sound下。
也就是在同一天,音頻子系統的維護由原來的Alan Cox轉為Jaroslav Kysela:
http://git.kernel.org/?p=linux/kernel/git/tglx/history.git;a=commit;h=
Make Jaroslav the sound maintainer, remove Alan on his request.
author Linus Torvalds <[email protected]>
Wed, 13 Feb 2002 04:05:43 +0000 (20:05 -0800)
committer Linus Torvalds <[email protected]>
Wed, 13 Feb 2002 04:05:43 +0000 (20:05 -0800)
commit
tree tree | snapshot
parent commit | diff
Make Jaroslav the sound maintainer, remove Alan on his request.
所以這個代碼的移動應該是在ALSA那個分支開發的時候就已經是這樣的了
㈢ 虛擬機linux操作系統中如何查看是否已安裝驅動程序
硬體驅動是必須由內核支持的,無論是我們自己安裝驅動,還是內核自帶的驅動都是如此。硬體驅動如果是以內核模塊支持的,驅動目錄位於: /lib/moles/內核版本/kernel/目錄 或 /lib/moles/內核版本/kernel/drivers 目錄中;
[root@localhost beinan]# uname -r
2.6.11-1.1369_FC4
[root@localhost beinan]# ls /lib/moles/2.6.11-1.1369_FC4/kernel
arch crypto drivers fs lib net sound
註:只有驅動在內核中以模塊的方法支持的,或者我們自己安裝的驅動,驅動才位於 /lib/moles/相應的目錄;如果是直接置入內核的,不會出現在/lib/moles驅動相關的目錄;