嵌入式Linux開發教程(下冊)

嵌入式Linux開發教程(下冊)

《嵌入式Linux開發教程(下冊)》是2016年10月北京航空航天大學出版社出版的圖書,作者是周立功、ZLG Linux開發團隊。

基本介紹

  • 中文名:嵌入式Linux開發教程(下冊)
  • 作者:周立功、ZLG Linux開發團隊
  • 出版社:北京航空航天大學出版社
  • 出版時間:2016年10月
  • 頁數:334 頁
  • 定價:49 元
  • 開本:16 開
  • 裝幀:平裝
  • ISBN:9787512422537
內容簡介,目錄,

內容簡介

本教程是面向嵌入式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
第13章 嵌入式Linux檔案系統…………………………………………………… 290
第14章 Buildroot …………………………………………………………………… 301
第15章 OpenWRT ………………………………………………………………… 313
第3篇 產品化和創意
第16章 產品化和創意……………………………………………………………… 319
參考文獻 ……………………………………………………………………………… 334

相關詞條

熱門詞條

聯絡我們