當(dāng)前位置: 首頁 > 原創(chuàng)圖書 >嵌入式Linux驅(qū)動開發(fā)教程圖書介紹
《嵌入式Linux驅(qū)動開發(fā)教程》結(jié)合大量實例,在基于ARM Cortex-A9四核處理器Exynos4412的硬件教學(xué)平臺和PC上,全面詳細(xì)地講解了Linux設(shè)備驅(qū)動開發(fā)。主要內(nèi)容包括開發(fā)環(huán)境的搭建、內(nèi)核模塊、字符設(shè)備驅(qū)動框架、高級I/O、中斷和時間管理、互斥和同步、內(nèi)存和DMA、Linux設(shè)備模型、外設(shè)的驅(qū)動實例、總線類設(shè)備驅(qū)動、塊設(shè)備驅(qū)動、網(wǎng)絡(luò)設(shè)備驅(qū)動和內(nèi)核調(diào)試技術(shù)。每一個知識點都有一個對應(yīng)的典型實例,大多數(shù)實例既可以在上面說到的嵌入式平臺上運行,也可以在PC上運行。另外,《嵌入式Linux驅(qū)動開發(fā)教程》也引入了新內(nèi)核的一些新特性,比如高分辨率定時器、針對嵌入式平臺的dmaengine和設(shè)備樹。在需要重點關(guān)注的地方還加入了大量的內(nèi)核源碼分析,使讀者能夠快速并深刻理解Linux設(shè)備驅(qū)動的開發(fā)。 《嵌入式Linux驅(qū)動開發(fā)教程》可作為大學(xué)院校電子、通信、計算機、自動化等專業(yè)的嵌入式Linux設(shè)備驅(qū)動開發(fā)課程的教材,也可供嵌入式Linux驅(qū)動開發(fā)人員參考。
嵌入式Linux驅(qū)動開發(fā)教程章節(jié):
第1章 概述 1
第2章 內(nèi)核模塊 6
2.1 第一個內(nèi)核模塊程序 7
2.2 內(nèi)核模塊的相關(guān)工具 10
2.3 內(nèi)核模塊的一般形式 11
2.4 將多個源文件編譯生成一個內(nèi)核模塊 13
2.5 內(nèi)核模塊參數(shù) 15
2.6 內(nèi)核模塊依賴 17
2.7 關(guān)于內(nèi)核模塊的進(jìn)一步討論 20
2.8 習(xí)題 21
第3章 字符設(shè)備驅(qū)動 23
3.1 字符設(shè)備驅(qū)動基礎(chǔ) 24
3.2 字符設(shè)備驅(qū)動框架 30
3.3 虛擬串口設(shè)備 35
3.4 虛擬串口設(shè)備驅(qū)動 35
3.5 一個驅(qū)動支持多個設(shè)備 39
3.6 習(xí)題 45
第4章 高級I/O操作 46
4.1 ioctl設(shè)備操作 47
4.2 proc文件操作 56
4.3 非阻塞型I/O 58
4.4 阻塞型I/O 60
4.5 I/O多路復(fù)用 65
4.6 異步I/O 69
4.7 幾種I/O模型總結(jié) 73
4.8 異步通知 74
4.9 mmap設(shè)備文件操作 89
4.10 定位操作 88
4.11 習(xí)題 90
第5章 中斷和時間管理 92
5.1 中斷進(jìn)入過程 93
5.2 驅(qū)動中的中斷處理 98
5.3 中斷下半部 101
5.3.1 軟中斷 102
5.3.2 tasklet 104
5.3.3 工作隊列 106
5.4 延時控制 108
5.5 定時操作 109
5.5.1 低分辨率定時器 109
5.5.2 高分辨率定時器 112
5.6 習(xí)題 114
第6章 互斥和同步 116
6.1 一種典型的競態(tài) 117
6.2 內(nèi)核中的并發(fā) 117
6.3 中斷屏蔽 118
6.4 原子變量 119
6.5 自旋鎖 120
6.6 讀寫鎖 122
6.7 順序鎖 123
6.8 信號量 125
6.9 讀寫信號量 127
6.10 互斥量 127
6.11 RCU機制 128
6.12 虛擬串口驅(qū)動加入互斥 130
6.13 完成量 134
6.14 習(xí)題 135
第7章 內(nèi)存和DMA 137
7.1 內(nèi)存組織 138
7.2 按頁分配內(nèi)存 139
7.3 slab分配器 142
7.4 不連續(xù)內(nèi)存頁分配 144
7.5 per-CPU變量 145
7.6 動態(tài)內(nèi)存實例 146
7.7 I/O內(nèi)存 147
7.8 DMA原理及映射 155
7.8.1 DMA工作原理 155
7.8.2 DMA映射 157
7.9 DMA統(tǒng)一編程接口 160
7.10 習(xí)題 164
第8章 Linux設(shè)備模型 166
8.1 設(shè)備模型基礎(chǔ) 167
8.2 總線、設(shè)備和驅(qū)動 171
8.3 平臺設(shè)備及其驅(qū)動 176
8.3.1 平臺設(shè)備 176
8.3.2 平臺驅(qū)動 178
8.3.3 平臺驅(qū)動簡單實例 179
8.3.4 電源管理 182
8.3.5 udev和驅(qū)動的自動加載 183
8.3.6 使用平臺設(shè)備的LED驅(qū)動 184
8.3.7 自動創(chuàng)建設(shè)備節(jié)點 190
8.4 Linux設(shè)備樹 193
8.4.1 Linux設(shè)備樹的由來 193
8.4.2 Linux設(shè)備樹的目的 194
8.4.3 Linux設(shè)備樹的使用 195
8.4.4 使用設(shè)備樹的LED驅(qū)動 202
8.5 習(xí)題 204
第9章 字符設(shè)備驅(qū)動實例 205
9.1 LED驅(qū)動 206
9.2 基于中斷的簡單按鍵驅(qū)動 209
9.3 基于輸入子系統(tǒng)的按鍵驅(qū)動 213
9.4 ADC驅(qū)動 222
9.5 PWM驅(qū)動 231
9.6 RTC驅(qū)動 239
第10章 總線類設(shè)備驅(qū)動 243
10.1 I2C設(shè)備驅(qū)動 244
10.1.1 I2C協(xié)議簡介 244
10.1.2 Linux I2C驅(qū)動 246
10.1.3 I2C設(shè)備驅(qū)動實例 251
10.2 SPI設(shè)備驅(qū)動 258
10.2.1 SPI協(xié)議簡介 258
10.2.2 Linux SPI驅(qū)動 259
10.2.3 SPI設(shè)備驅(qū)動范例 264
10.3 USB設(shè)備驅(qū)動 268
10.3.1 USB協(xié)議簡介 268
10.3.2 Linux USB驅(qū)動 271
10.3.3 USB設(shè)備驅(qū)動實例 274
10.4 PCI設(shè)備驅(qū)動 283
10.4.1 PCI協(xié)議簡介 283
10.4.2 Linux PCI驅(qū)動 287
10.4.3 PCI設(shè)備驅(qū)動實例 288
10.5 習(xí)題 296
第11章 塊設(shè)備驅(qū)動 298
11.1 磁盤結(jié)構(gòu) 299
11.2 塊設(shè)備內(nèi)核組件 300
11.3 塊設(shè)備驅(qū)動核心數(shù)據(jù)結(jié)構(gòu)和函數(shù) 301
11.4 塊設(shè)備驅(qū)動實例 308
11.5 習(xí)題 316
第12章 網(wǎng)絡(luò)設(shè)備驅(qū)動 317
12.1 網(wǎng)絡(luò)層次結(jié)構(gòu) 318
12.2 網(wǎng)絡(luò)設(shè)備驅(qū)動核心數(shù)據(jù)結(jié)構(gòu)和函數(shù) 319
12.3 網(wǎng)絡(luò)設(shè)備驅(qū)動實例 327
12.4 DM9000網(wǎng)絡(luò)設(shè)備驅(qū)動代碼分析 333
12.5 NAPI340
12.6 習(xí)題 343
第13章 內(nèi)核調(diào)試技術(shù) 344
13.1 內(nèi)核調(diào)試方法 345
13.1.1 內(nèi)核調(diào)試概述 345
13.1.2 學(xué)會分析內(nèi)核源程序 346
13.1.3 調(diào)試方法介紹 346
13.2 內(nèi)核打印函數(shù) 350
13.2.1 內(nèi)核鏡像解壓前的串口輸出函數(shù) 350
13.2.2 內(nèi)核鏡像解壓后的串口輸出函數(shù) 352
13.2.3 內(nèi)核打印函數(shù) 353
13.3 獲取內(nèi)核信息 357
13.3.1 系統(tǒng)請求鍵 357
13.3.2 通過/proc接口 358
13.3.3 通過/sys接口 359
13.4 處理出錯信息 362
13.4.1 oops信息 362
13.4.2 panic 364
13.4.3 通過ioctl方法 366
13.5 內(nèi)核源碼調(diào)試 367
13.6 習(xí)題 369
第14章 搭建開發(fā)環(huán)境 370
14.1 準(zhǔn)備Linux開發(fā)主機 371
14.2 安裝串口相關(guān)軟件 375
14.2.1 安裝串口驅(qū)動 375
14.2.2 安裝串口終端軟件PuTTY 376
14.2.3 安裝串口終端軟件minicom 377
14.3 安裝TFTP和NFS服務(wù)器 379
14.4 準(zhǔn)備Linux內(nèi)核源碼 381
14.5 在目標(biāo)板上運行Linux系統(tǒng) 382
14.6 源碼瀏覽及編輯器環(huán)境 386
習(xí)題答案 388
參考文獻(xiàn) 389