基本介紹
- 書名:嵌入式Linux C語言應用程式設計
- 作者:華清遠見嵌入式培訓中心、孫瓊
- ISBN:9787115342799
- 頁數:386頁
- 定價:59元
- 出版社:人民郵電出版社
- 出版時間:2014年4月
- 裝幀:平裝
- 開本:16開
內容簡介,圖書目錄,
內容簡介
嵌入式系統是現在**熱門的計算機套用領域之一,嵌入式Linux是套用**廣泛的嵌入式作業系統之一,嵌入式C語言在其中起著到關重要的作用。
《嵌入式Linux C語言應用程式設計(修訂版)》共分13章,全面講解了嵌入式系統基礎,嵌入式Linux C語言開發工具、語言基礎,檔案I/O相關實例,ARM Linux進程線碑霉炒程開發實例,ARM Linux網路開發實例,嵌入式Linux設備驅動開發以及視頻監控系統實例。
《嵌入式Linux C語言應用程式設計(修訂版)》可作為大中專院校嵌入式相關專業本科生、研究生的教材,也可供廣大希望轉入嵌入式領域的科研和工程技術人員使用。
圖書目錄
第 1章 嵌入式系統基礎知識 1
1.1 嵌入式系統概述 1
1.1.1 嵌入式系統的發展史 2
1.1.2 嵌入槳遙才充式系統的定義與特點 3
1.1.3 嵌入式系統的特點 4
1.2 嵌入式系統的組成 5
1.2.1 嵌入式系統的棵己汗硬體架構 5
1.2.2 嵌入式作業系統 8
1.2.3 嵌入式套用軟體 10
1.3 ARM處理器平台介紹 11
1.3.1 ARM處理器簡介 11
1.3.2 ARM處理器系列 12
1.3.3 ARM體系結構簡介 16
1.3.4 S3C2410處理器簡介 17
1.4 嵌入式系統硬體平台選型 21
1.4.1 硬體平台的選催陵擇 21
1.4.2 ARM處理器選型 22
1.5 嵌入式系統開發概述 25
1.5.1 嵌入式系灑悼灶統開發流程 25
1.5.2 嵌入式軟體開發流程 25
本章小結 29
動手練練 30
第 2章 嵌入式Linux C語言開發工具 31
2.1 嵌入式Linux下C語言概述 31
2.1.1 C語言簡史 31
2.1.2 C語言特點 32
2.1.3 嵌入式Linux C語言編程環境 33
2.2 嵌入式Linux編輯器vi的使用 33
2.2.1 vi的基本模式 34
2.2.2 vi的基本操作 34
2.2.3 vi的使用實例分析 38
2.3 嵌入式Linux編譯器GCC的使用 40
2.3.1 GCC概述 40
2.3.2 GCC編譯流程分析 40
2.3.3 GCC警告提示 43
2.3.4 GCC使用庫函式 45
2.3.5 GCC代碼最佳化 46
2.4 嵌入式Linux調試器GDB的使用 47
2.4.1 GDB使用實例 47
2.4.2 設定/刪除斷點 50
2.4.3 數據相關命令 51
2.4.4 調試運行環境相關命令 52
2.4.5 堆疊相關命令 套判定霸52
2.5 make工程管理器 53
2.5.1 Makefile基本結構 53
2.5.2 Makefile變數 55
2.5.3 Makefile規則 58
2.5.4 make使用 59
2.6 Emacs綜合編輯器 59
2.6.1 Emacs的啟動與退出 60
2.6.2 Emacs的基本編輯 61
2.6.3 Emacs的C模式 63
2.6.4 Emacs的Shell模式 66
本章小結 67
動手練練 67
第3章 構建嵌入式Linux系統 68
3.1 嵌入式系統開發環境的構建 68
3.1.1 嵌入式交叉編譯環境搭建 68
3.1.2 minicom和超級終端配置及使用 72
3.1.3 宿主機服務配置 79
3.2 Bootloader 83
3.2.1 Bootloader的概念 84
3.2.2 Bootloader啟動流程分析 84
3.2.3 U-Boot概述 85
3.2.4 U-Boot源碼導讀 86
3.3 編譯嵌入式Linux核心 86
3.4 Linux核心結構 90
3.5 製作檔案系統 91
本章小結 92
動手練練 92
第4章 嵌入式Linux C語言基礎——數據、表達式 93
4.1 嵌入式Linux C語言概述 93
4.2 基本數據類型 94
4.2.1 整型家族 94
4.2.2 實型家族 96
4.2.3 字元型家族 98
4.2.4 枚舉家族 99
4.2.5 指針微狼斷家族 100
4.3 變數與常量 101
4.3.1 變數的定義 101
4.3.2 typedef 107
4.3.3 常量定義 108
4.3.4 ARM-Linux基本數據類型綜合套用實例 109
4.4 運算符與表達式 111
4.4.1 算術運算符和表達式 112
4.4.2 賦值運算符和表達式 114
4.4.3 逗號運算符和表達式 116
4.4.4 位運算符和表達式 116
4.4.5 關係運算符和表達式 118
4.4.6 邏輯運算符和表達式 119
4.4.7 sizeof操作符 121
4.4.8 條件(?)運算符 122
4.4.9 運算符優先權總結 123
4.4.10 ARM-Linux運算符綜合實例 125
本章小結 129
動手練練 129
第5章 嵌入式Linux C語言基礎——控制語句及函式 130
5.1 嵌入式Linux C語言程式結構概述 130
5.1.1 嵌入式Linux C語言3種程式結構 130
5.1.2 嵌入式Linux C語言基本語句 131
5.2 選擇語句 134
5.2.1 if語句 134
5.2.2 switch語句 136
5.2.3 ARM-Linux選擇語句套用實例 138
5.3 循環語句 139
5.3.1 while和do-while語句 139
5.3.2 for循環語句 140
5.3.3 break和continue語句 141
5.3.4 ARM-Linux循環語句套用實例 143
5.4 goto語句 144
5.4.1 goto語句語法 144
5.4.2 ARM-Linux中goto語句套用實例 145
5.5 函式的定義與聲明 146
5.5.1 C語言函式概述 146
5.5.2 函式定義 147
5.5.3 函式聲明 148
5.5.4 ARM-Linux函式定義與聲明實例 149
5.6 函式的參數、值和基本調用 150
5.6.1 函式的參數 150
5.6.2 函式的值 151
5.6.3 函式的基本調用 151
5.7 函式的嵌套、遞歸調用 152
5.7.1 函式的嵌套調用 152
5.7.2 函式的遞歸調用 152
5.7.3 ARM-Linux函式調用套用實例 155
本章小結 156
動手練練 156
第6章 嵌入式Linux C語言基礎——數組、指針與結構 158
6.1 數組 158
6.1.1 一維數組 158
6.1.2 字元串 161
6.1.3 二維數組 163
6.2 指針 164
6.2.1 指針的概念 164
6.2.2 指針變數的操作 166
6.2.3 指針和數組 173
6.2.4 指針高級議題 178
6.3 結構體與聯合 182
6.3.1 結構體 182
6.3.2 聯合 186
6.3.3 ARM-Linux指針、結構體使用實例 187
本章小結 189
動手練練 189
第7章 嵌入式Linux C語言基礎——高級議題 190
7.1 預處理 190
7.1.1 預處理的概念 190
7.1.2 預定義 191
7.1.3 檔案包含 196
7.1.4 條件編譯 197
7.2 C語言中的記憶體分配 199
7.2.1 C語言程式所占記憶體分類 199
7.2.2 堆和棧的區別 200
7.3 嵌入式Linux可移植性考慮 201
7.3.1 字長和數據類型 201
7.3.2 數據對齊 203
7.3.3 位元組順序 203
7.4 C和彙編的接口 203
7.4.1 內嵌彙編的語法 204
7.4.2 編譯器最佳化介紹 206
7.4.3 C語言關鍵字volatile 207
7.4.4 memory描述符 207
7.4.5 gcc對內嵌彙編語言的處理方式 207
本章小結 209
動手練練 209
第8章 嵌入式Linux C語言基礎——ARM Linux核心常見數據結構 210
8.1 鍊表 210
8.1.1 鍊表概述 210
8.1.2 單向鍊表 211
8.1.3 雙向鍊表 217
8.1.4 循環鍊表 219
8.1.5 ARM Linux中鍊表使用實例 219
8.2 樹、二叉樹、平衡樹 221
8.2.1 樹 221
8.2.2 二叉樹 222
8.2.3 平衡樹 229
8.2.4 ARM Linux中紅黑樹使用實例 230
8.3 哈希表 232
8.3.1 哈希表的概念及作用 232
8.3.2 哈希表的構造方法 234
8.3.3 哈希表的處理衝突方法 235
8.3.4 ARM Linux中哈希表使用實例 236
本章小結 238
動手練練 239
第9章 檔案I/O相關實例 240
9.1 Linux系統調用及用戶編程接口(API) 240
9.1.1 系統調用 241
9.1.2 用戶編程接口(API) 241
9.1.3 系統命令 241
9.2 ARM Linux檔案I/O系統概述 242
9.2.1 虛擬檔案系統(VFS) 242
9.2.2 通用檔案模型 243
9.2.3 ARM Linux的設備檔案 248
9.3 檔案I/O操作 248
9.3.1 不帶快取的檔案I/O操作 248
9.3.2 標準I/O開發 258
9.4 嵌入式Linux串口套用開發 261
9.4.1 串口概述 261
9.4.2 串口設定詳解 262
9.4.3 串口使用詳解 266
本章小結 269
動手練練 269
第 10章 ARM Linux進程執行緒開發實例 270
10.1 ARM Linux進程執行緒管理 270
10.1.1 進程描述符及任務結構 270
10.1.2 進程的調度 273
10.1.3 Linux中的執行緒 274
10.1.4 Linux中進程間通信 275
10.2 ARM Linux進程控制相關API 276
10.3 ARM Linux進程間通信API 282
10.3.1 管道通信 282
10.3.2 信號通信 284
10.3.3 共享記憶體 289
10.3.4 訊息佇列 290
10.4 ARM Linux執行緒相關API 293
10.5 Linux守護進程 298
10.5.1 守護進程概述 298
10.5.2 編寫規則 298
10.5.3 守護進程實例 300
本章小結 301
動手練練 302
第 11章 ARM Linux網路開發實例 303
11.1 TCP/IP協定簡介 303
11.1.1 TCP/IP的分層模型 303
11.1.2 TCP/IP分層模型特點 304
11.1.3 TCP/IP核心協定 305
11.2 網路基礎編程 308
11.2.1 socket概述 308
11.2.2 地址及順序處理 309
11.2.3 socket基礎編程 313
11.3 Web伺服器 319
11.3.1 Web伺服器功能 319
11.3.2 Web伺服器協定 320
11.3.3 Web伺服器協定 321
11.3.4 運行Web伺服器 326
11.4 traceroute程式實例 326
11.4.1 traceroute原理簡介 326
11.4.2 traceroute實例與分析 327
11.4.3 traceroute實例運行結果 332
本章小結 332
動手練練 333
第 12章 嵌入式Linux設備驅動開發 334
12.1 設備驅動概述 334
12.1.1 設備驅動簡介 334
12.1.2 設備驅動程式的特點 335
12.2 模組編程 336
12.2.1 模組編程簡介 336
12.2.2 模組相關命令 336
12.2.3 模組編程流程 337
12.3 字元設備驅動編寫 338
12.4 塊設備驅動編寫 347
12.4.1 塊設備驅動程式描述符 347
12.4.2 塊設備驅動編寫流程 348
12.5 簡單的skull驅動實例 354
12.5.1 驅動簡介 354
12.5.2 驅動編寫流程 354
12.5.3 結果分析 357
12.6 LCD驅動編寫實例 358
12.6.1 LCD工作原理 358
12.6.2 LCD驅動實例 360
本章小結 367
動手練練 367
第 13章 視頻監控系統 368
13.1 視頻監控系統概述 368
13.1.1 系統組成 368
13.1.2 音視頻伺服器 369
13.1.3 音視頻客戶端 370
13.1.4 通信傳輸控制協定 370
13.2 基本數據結構 373
13.3 功能實現 375
13.3.1 傳輸控制 375
13.3.2 用戶檢驗 379
13.3.3 控制命令處理 380
13.3.4 雲台轉動控制 381
13.3.5 執行緒相關 385
本章小結 386
動手練練 386
2.5.3 Makefile規則 58
2.5.4 make使用 59
2.6 Emacs綜合編輯器 59
2.6.1 Emacs的啟動與退出 60
2.6.2 Emacs的基本編輯 61
2.6.3 Emacs的C模式 63
2.6.4 Emacs的Shell模式 66
本章小結 67
動手練練 67
第3章 構建嵌入式Linux系統 68
3.1 嵌入式系統開發環境的構建 68
3.1.1 嵌入式交叉編譯環境搭建 68
3.1.2 minicom和超級終端配置及使用 72
3.1.3 宿主機服務配置 79
3.2 Bootloader 83
3.2.1 Bootloader的概念 84
3.2.2 Bootloader啟動流程分析 84
3.2.3 U-Boot概述 85
3.2.4 U-Boot源碼導讀 86
3.3 編譯嵌入式Linux核心 86
3.4 Linux核心結構 90
3.5 製作檔案系統 91
本章小結 92
動手練練 92
第4章 嵌入式Linux C語言基礎——數據、表達式 93
4.1 嵌入式Linux C語言概述 93
4.2 基本數據類型 94
4.2.1 整型家族 94
4.2.2 實型家族 96
4.2.3 字元型家族 98
4.2.4 枚舉家族 99
4.2.5 指針家族 100
4.3 變數與常量 101
4.3.1 變數的定義 101
4.3.2 typedef 107
4.3.3 常量定義 108
4.3.4 ARM-Linux基本數據類型綜合套用實例 109
4.4 運算符與表達式 111
4.4.1 算術運算符和表達式 112
4.4.2 賦值運算符和表達式 114
4.4.3 逗號運算符和表達式 116
4.4.4 位運算符和表達式 116
4.4.5 關係運算符和表達式 118
4.4.6 邏輯運算符和表達式 119
4.4.7 sizeof操作符 121
4.4.8 條件(?)運算符 122
4.4.9 運算符優先權總結 123
4.4.10 ARM-Linux運算符綜合實例 125
本章小結 129
動手練練 129
第5章 嵌入式Linux C語言基礎——控制語句及函式 130
5.1 嵌入式Linux C語言程式結構概述 130
5.1.1 嵌入式Linux C語言3種程式結構 130
5.1.2 嵌入式Linux C語言基本語句 131
5.2 選擇語句 134
5.2.1 if語句 134
5.2.2 switch語句 136
5.2.3 ARM-Linux選擇語句套用實例 138
5.3 循環語句 139
5.3.1 while和do-while語句 139
5.3.2 for循環語句 140
5.3.3 break和continue語句 141
5.3.4 ARM-Linux循環語句套用實例 143
5.4 goto語句 144
5.4.1 goto語句語法 144
5.4.2 ARM-Linux中goto語句套用實例 145
5.5 函式的定義與聲明 146
5.5.1 C語言函式概述 146
5.5.2 函式定義 147
5.5.3 函式聲明 148
5.5.4 ARM-Linux函式定義與聲明實例 149
5.6 函式的參數、值和基本調用 150
5.6.1 函式的參數 150
5.6.2 函式的值 151
5.6.3 函式的基本調用 151
5.7 函式的嵌套、遞歸調用 152
5.7.1 函式的嵌套調用 152
5.7.2 函式的遞歸調用 152
5.7.3 ARM-Linux函式調用套用實例 155
本章小結 156
動手練練 156
第6章 嵌入式Linux C語言基礎——數組、指針與結構 158
6.1 數組 158
6.1.1 一維數組 158
6.1.2 字元串 161
6.1.3 二維數組 163
6.2 指針 164
6.2.1 指針的概念 164
6.2.2 指針變數的操作 166
6.2.3 指針和數組 173
6.2.4 指針高級議題 178
6.3 結構體與聯合 182
6.3.1 結構體 182
6.3.2 聯合 186
6.3.3 ARM-Linux指針、結構體使用實例 187
本章小結 189
動手練練 189
第7章 嵌入式Linux C語言基礎——高級議題 190
7.1 預處理 190
7.1.1 預處理的概念 190
7.1.2 預定義 191
7.1.3 檔案包含 196
7.1.4 條件編譯 197
7.2 C語言中的記憶體分配 199
7.2.1 C語言程式所占記憶體分類 199
7.2.2 堆和棧的區別 200
7.3 嵌入式Linux可移植性考慮 201
7.3.1 字長和數據類型 201
7.3.2 數據對齊 203
7.3.3 位元組順序 203
7.4 C和彙編的接口 203
7.4.1 內嵌彙編的語法 204
7.4.2 編譯器最佳化介紹 206
7.4.3 C語言關鍵字volatile 207
7.4.4 memory描述符 207
7.4.5 gcc對內嵌彙編語言的處理方式 207
本章小結 209
動手練練 209
第8章 嵌入式Linux C語言基礎——ARM Linux核心常見數據結構 210
8.1 鍊表 210
8.1.1 鍊表概述 210
8.1.2 單向鍊表 211
8.1.3 雙向鍊表 217
8.1.4 循環鍊表 219
8.1.5 ARM Linux中鍊表使用實例 219
8.2 樹、二叉樹、平衡樹 221
8.2.1 樹 221
8.2.2 二叉樹 222
8.2.3 平衡樹 229
8.2.4 ARM Linux中紅黑樹使用實例 230
8.3 哈希表 232
8.3.1 哈希表的概念及作用 232
8.3.2 哈希表的構造方法 234
8.3.3 哈希表的處理衝突方法 235
8.3.4 ARM Linux中哈希表使用實例 236
本章小結 238
動手練練 239
第9章 檔案I/O相關實例 240
9.1 Linux系統調用及用戶編程接口(API) 240
9.1.1 系統調用 241
9.1.2 用戶編程接口(API) 241
9.1.3 系統命令 241
9.2 ARM Linux檔案I/O系統概述 242
9.2.1 虛擬檔案系統(VFS) 242
9.2.2 通用檔案模型 243
9.2.3 ARM Linux的設備檔案 248
9.3 檔案I/O操作 248
9.3.1 不帶快取的檔案I/O操作 248
9.3.2 標準I/O開發 258
9.4 嵌入式Linux串口套用開發 261
9.4.1 串口概述 261
9.4.2 串口設定詳解 262
9.4.3 串口使用詳解 266
本章小結 269
動手練練 269
第 10章 ARM Linux進程執行緒開發實例 270
10.1 ARM Linux進程執行緒管理 270
10.1.1 進程描述符及任務結構 270
10.1.2 進程的調度 273
10.1.3 Linux中的執行緒 274
10.1.4 Linux中進程間通信 275
10.2 ARM Linux進程控制相關API 276
10.3 ARM Linux進程間通信API 282
10.3.1 管道通信 282
10.3.2 信號通信 284
10.3.3 共享記憶體 289
10.3.4 訊息佇列 290
10.4 ARM Linux執行緒相關API 293
10.5 Linux守護進程 298
10.5.1 守護進程概述 298
10.5.2 編寫規則 298
10.5.3 守護進程實例 300
本章小結 301
動手練練 302
第 11章 ARM Linux網路開發實例 303
11.1 TCP/IP協定簡介 303
11.1.1 TCP/IP的分層模型 303
11.1.2 TCP/IP分層模型特點 304
11.1.3 TCP/IP核心協定 305
11.2 網路基礎編程 308
11.2.1 socket概述 308
11.2.2 地址及順序處理 309
11.2.3 socket基礎編程 313
11.3 Web伺服器 319
11.3.1 Web伺服器功能 319
11.3.2 Web伺服器協定 320
11.3.3 Web伺服器協定 321
11.3.4 運行Web伺服器 326
11.4 traceroute程式實例 326
11.4.1 traceroute原理簡介 326
11.4.2 traceroute實例與分析 327
11.4.3 traceroute實例運行結果 332
本章小結 332
動手練練 333
第 12章 嵌入式Linux設備驅動開發 334
12.1 設備驅動概述 334
12.1.1 設備驅動簡介 334
12.1.2 設備驅動程式的特點 335
12.2 模組編程 336
12.2.1 模組編程簡介 336
12.2.2 模組相關命令 336
12.2.3 模組編程流程 337
12.3 字元設備驅動編寫 338
12.4 塊設備驅動編寫 347
12.4.1 塊設備驅動程式描述符 347
12.4.2 塊設備驅動編寫流程 348
12.5 簡單的skull驅動實例 354
12.5.1 驅動簡介 354
12.5.2 驅動編寫流程 354
12.5.3 結果分析 357
12.6 LCD驅動編寫實例 358
12.6.1 LCD工作原理 358
12.6.2 LCD驅動實例 360
本章小結 367
動手練練 367
第 13章 視頻監控系統 368
13.1 視頻監控系統概述 368
13.1.1 系統組成 368
13.1.2 音視頻伺服器 369
13.1.3 音視頻客戶端 370
13.1.4 通信傳輸控制協定 370
13.2 基本數據結構 373
13.3 功能實現 375
13.3.1 傳輸控制 375
13.3.2 用戶檢驗 379
13.3.3 控制命令處理 380
13.3.4 雲台轉動控制 381
13.3.5 執行緒相關 385
本章小結 386
動手練練 386