發表於2024-12-27
本教程是麵嚮嵌入式Linux學習和産品開發的入門教程,分上下兩冊。本書為下冊,分3篇,共16章,內容涵蓋Linux內核、設備驅動、係統整閤和産品化等方麵。其中,設備驅動部分是重點內容,從模塊編寫開始,深入淺齣地講述瞭驅動編寫的各個方麵;之後以Linux子係統為單位,分彆講述瞭各常用外設的驅動編寫或移植,如LED、GPIO、I2C、SPI、Input子係統、串口、聲卡、WiFi網卡和3G模塊等。
本 書由淺入深,結構閤理,實用性強,提供的範例稍加改動即可應用於實際項目。閱讀本書需要有一定Linux使用基礎,適閤於準備往驅動方嚮發展的嵌入式Linux開發工程師,也可作為高校非計算機專業高年級學生學習嵌入式Linux驅動的參考教材。
第1篇 嵌入式Linux內核驅動開發
第1章 Linux內核裁剪和定製………………………………………………………… 3
1.1 Linux內核開發簡介…………………………………………………………… 3
1.2 Linux源碼閱讀工具…………………………………………………………… 3
1.2.1 SourceInsight……………………………………………………………… 4
1.2.2 Eclipse ……………………………………………………………………… 6
1.2.3 Vim+ctags+cscope ……………………………………………………… 8
1.2.4 LXR ………………………………………………………………………… 8
1.3 Linux內核源碼………………………………………………………………… 10
1.3.1 目錄樹概覽………………………………………………………………… 10
1.3.2 快速確定主闆關聯代碼…………………………………………………… 12
1.4 Linux內核中的Makefile文件………………………………………………… 14
1.4.1 頂層Makefile …………………………………………………………… 15
1.4.2 子目錄的Makefile ……………………………………………………… 16
1.5 Linux內核中的Kconfig文件………………………………………………… 17
1.5.1 Kconfig基本語法………………………………………………………… 17
1.5.2 配置項和配置開關………………………………………………………… 20
1.6 配置和編譯Linux內核……………………………………………………… 21
1.6.1 快速配置內核……………………………………………………………… 21
1.6.2 內核配置詳情……………………………………………………………… 23
1.6.3 編譯內核…………………………………………………………………… 32
1.6.4 運行內核…………………………………………………………………… 37
1.7 Linux內核裁剪實例…………………………………………………………… 38
1.7.1 GPIO子係統配置………………………………………………………… 38
1.7.2 LED子係統配置………………………………………………………… 39
1.7.3 串口配置…………………………………………………………………… 40
1.7.4 USBHost驅動配置……………………………………………………… 40
1.7.5 USBGadget驅動配置…………………………………………………… 42
1.7.6 SD/MMC驅動配置……………………………………………………… 43
1.7.7 網卡驅動配置……………………………………………………………… 44
1.7.8 NFSClient配置………………………………………………………… 45
1.7.9 PPP撥號配置…………………………………………………………… 45
1.7.10 MTD配置……………………………………………………………… 46
1.7.11 UBIFS文件係統配置…………………………………………………… 47
1.7.12 CAN 驅動配置…………………………………………………………… 47
1.8 EPC-28x平颱內核快速編譯………………………………………………… 48
第2章 Linux設備驅動基礎………………………………………………………… 49
2.1 Linux內核模塊………………………………………………………………… 49
2.1.1 Linux和模塊……………………………………………………………… 49
2.1.2 編寫內核模塊……………………………………………………………… 49
2.1.3 最簡單的內核模塊………………………………………………………… 53
2.1.4 帶參數的內核模塊………………………………………………………… 54
2.2 Linux設備……………………………………………………………………… 56
2.2.1 Linux設備和分類………………………………………………………… 56
2.2.2 設備節點和設備號………………………………………………………… 56
2.2.3 設備的注冊和注銷………………………………………………………… 60
2.3 Linux設備和驅動……………………………………………………………… 62
2.3.1 驅動在Linux中的地位………………………………………………… 62
2.3.2 驅動的基本要素…………………………………………………………… 62
2.3.3 驅動和應用程序的差彆…………………………………………………… 63
2.3.4 驅動的入口和齣口………………………………………………………… 63
2.3.5 支持udev設備管理方法………………………………………………… 65
2.3.6 設備驅動的操作方法……………………………………………………… 70
2.4 字符驅動框架…………………………………………………………………… 74
2.4.1 字符驅動框架……………………………………………………………… 74
2.4.2 測試程序…………………………………………………………………… 78
2.5 第一個完整意義上的驅動……………………………………………………… 80
2.5.1 ioctl命令………………………………………………………………… 80
2.5.2 內核空間的ioctl ………………………………………………………… 82
2.5.3 用戶空間的ioctl ………………………………………………………… 82
2.5.4 LED驅動範例…………………………………………………………… 82
2.6 內核/用戶空間的數據交換…………………………………………………… 88
2.6.1 檢查地址的閤法性………………………………………………………… 88
2.6.2 往用戶空間傳遞數據……………………………………………………… 88
2.6.3 從用戶空間獲取數據……………………………………………………… 90
2.6.4 支持讀/寫的驅動範例…………………………………………………… 91
2.7 在驅動中使用中斷……………………………………………………………… 96
2.7.1 申請和釋放中斷…………………………………………………………… 96
2.7.2 中斷處理程序編寫………………………………………………………… 98
2.7.3 按鍵驅動…………………………………………………………………… 99
2.8 混雜設備驅動編程…………………………………………………………… 103
2.8.1 混雜設備和驅動………………………………………………………… 103
2.8.2 混雜設備驅動框架……………………………………………………… 104
2.9 I/O內存訪問………………………………………………………………… 107
2.9.1 靜態I/O映射…………………………………………………………… 107
2.9.2 動態I/O映射…………………………………………………………… 110
2.9.3 I/O內存訪問函數……………………………………………………… 110
2.10 Linux設備驅動模型………………………………………………………… 111
2.10.1 設 備…………………………………………………………………… 111
2.10.2 驅 動…………………………………………………………………… 113
2.10.3 總 綫…………………………………………………………………… 114
2.10.4 類………………………………………………………………………… 115
2.11 平颱設備和驅動……………………………………………………………… 117
2.11.1 資 源…………………………………………………………………… 117
2.11.2 平颱設備………………………………………………………………… 119
2.11.3 平颱驅動………………………………………………………………… 122
2.11.4 平颱驅動與普通驅動的差異…………………………………………… 123
2.11.5 平颱驅動範例…………………………………………………………… 124
第3章 LED 子係統和驅動………………………………………………………… 131
3.1 LED子係統驅動簡介………………………………………………………… 131
3.2 LED子係統的分層結構……………………………………………………… 131
3.3 LED設備的實現……………………………………………………………… 132
3.4 i.MX28平颱的LED設備…………………………………………………… 135
第4章 GPIO 驅動…………………………………………………………………… 138
4.1 GPIOLIB簡介………………………………………………………………… 138
4.2 GPIOLIB的內核接口………………………………………………………… 138
4.3 GPIOLIB的實現方法………………………………………………………… 139
4.4 驅動示例……………………………………………………………………… 141
第5章 輸入子係統和按鍵驅動……………………………………………………… 149
5.1 輸入子係統…………………………………………………………………… 149
5.1.1 輸入子係統構成………………………………………………………… 149
5.1.2 各事件管理器詳解……………………………………………………… 152
5.1.3 設備驅動………………………………………………………………… 154
5.2 驅動實現……………………………………………………………………… 158
5.2.1 電路和原理……………………………………………………………… 158
5.2.2 按鍵驅動實現…………………………………………………………… 159
第6章 I2C總綫和外設驅動………………………………………………………… 165
6.1 I2C子係統…………………………………………………………………… 165
6.1.1 I2C子係統的設計思路………………………………………………… 165
6.1.2 I2C子係統的實現……………………………………………………… 169
6.1.3 I2C子係統在/sys文件係統的信息…………………………………… 176
6.2 I2C驅動實現示例…………………………………………………………… 177
6.2.1 FM24C02A 驅動的設計思路…………………………………………… 177
6.2.2 添加FM24C02A 設備…………………………………………………… 178
6.2.3 實現FM24C02A 驅動…………………………………………………… 178
6.2.4 實現I2C驅動…………………………………………………………… 178
第7章 SPI總綫和外設驅動………………………………………………………… 185
7.1 硬件連接……………………………………………………………………… 185
7.2 SPI驅動架構簡析…………………………………………………………… 185
7.2.1 SPI核心層……………………………………………………………… 186
7.2.2 SPI主控製器驅動層…………………………………………………… 186
7.2.3 SPI設備驅動層………………………………………………………… 187
7.2.4 SPI數據傳輸…………………………………………………………… 191
7.3 SPINORFlash驅動………………………………………………………… 193
7.3.1 驅動實現………………………………………………………………… 194
7.3.2 配置和編譯……………………………………………………………… 195
7.3.3 測試塊設備……………………………………………………………… 196
7.4 SPI數碼管顯示驅動………………………………………………………… 197
7.4.1 電路原理………………………………………………………………… 197
7.4.2 驅動實現………………………………………………………………… 198
7.4.3 驅動編譯和測試………………………………………………………… 202
第8章 UART和SC16IS752驅動…………………………………………………… 204
8.1 UART驅動簡析……………………………………………………………… 204
8.1.1 重要數據結構…………………………………………………………… 204
8.1.2 UART驅動API………………………………………………………… 208
8.2 SC16IS752芯片和電路原理………………………………………………… 210
8.2.1 SC16IS752芯片介紹…………………………………………………… 210
8.2.2 電路原理………………………………………………………………… 212
8.2.3 驅動移植思路…………………………………………………………… 212
8.3 I2C接口驅動實現…………………………………………………………… 212
8.3.1 定義i2c_device_id ……………………………………………………… 212
8.3.2 添加注冊I2C設備……………………………………………………… 213
8.3.3 I2C驅動實現…………………………………………………………… 214
8.4 UART相關驅動……………………………………………………………… 214
8.4.1 信息描述和數據結構…………………………………………………… 214
8.4.2 底層操作函數和實現…………………………………………………… 215
8.4.3 probe函數和實現……………………………………………………… 219
8.4.4 uart_ops函數和實現…………………………………………………… 221
8.4.5 中斷處理………………………………………………………………… 230
8.5 串口測試……………………………………………………………………… 234
第9章 SGTL5000聲卡驅動移植…………………………………………………… 235
9.1 背景交代……………………………………………………………………… 235
9.2 電路原理圖…………………………………………………………………… 235
9.3 驅動移植……………………………………………………………………… 237
9.3.1 引腳設置………………………………………………………………… 237
9.3.2 添加SGTL5000I2C設備……………………………………………… 238
9.3.3 配置和編譯……………………………………………………………… 239
9.3.4 修正播放音頻的問題…………………………………………………… 239
9.4 音頻接口操作………………………………………………………………… 242
第10章 AP6181無綫網卡驅動移植……………………………………………… 247
10.1 硬件原理圖…………………………………………………………………… 247
10.2 驅動移植……………………………………………………………………… 248
10.2.1 修改引腳功能…………………………………………………………… 248
10.2.2 添加mmc設備………………………………………………………… 250
10.2.3 添加驅動源碼…………………………………………………………… 252
10.2.4 添加喚醒中斷…………………………………………………………… 252
10.2.5 添加上下電控製………………………………………………………… 253
10.2.6 修改內核配置文件……………………………………………………… 254
10.2.7 配置內核………………………………………………………………… 255
10.2.8 編譯內核、模塊驅動…………………………………………………… 256
10.3 使用網卡……………………………………………………………………… 256
10.3.1 加載驅動模塊…………………………………………………………… 256
10.3.2 連接到AP ……………………………………………………………… 257
第11章 SIM6320-PCIE3G模塊驅動移植…………………………………………… 260
11.1 驅動移植……………………………………………………………………… 260
11.1.1 添加驅動源碼…………………………………………………………… 260
11.1.2 配置內核………………………………………………………………… 260
11.2 PPP撥號上網……………………………………………………………… 262
第12章 嵌入式Linux和Bootloader ……………………………………………… 267
嵌入式Linux開發教程(下冊) 下載 mobi pdf epub txt 電子書 格式 2024
嵌入式Linux開發教程(下冊) 下載 mobi epub pdf 電子書書質量不錯,書讀快
評分書質量不錯,書讀快
評分不錯的參考書
評分還沒打開看,搞活動買的,公司用,應該還行
評分挺好的。
評分入門很好,要配閤開發闆。
評分寫的不錯,各個內容都寫到瞭,適閤學習。
評分買瞭上下兩冊,內容很仔細就是紙質差瞭點。
評分書皮摺瞭。。。。。。。。。。。
嵌入式Linux開發教程(下冊) mobi epub pdf txt 電子書 格式下載 2024