嵌入式Linux C編程入門(第2版)

嵌入式Linux C編程入門(第2版)

《嵌入式Linux C編程入門(第2版)》是2009年10月人民郵電出版社出版的圖書,作者是華清遠見嵌入式培訓中心。

基本介紹

  • 書名:嵌入式Linux C編程入門(第2版)
  • 作者:華清遠見嵌入式培訓中心
  • ISBN:9787115212818
  • 頁數:408頁
  • 定價:49元
  • 出版社:人民郵電出版社
  • 出版時間:2009年10月
  • 裝幀:平裝
  • 開本:16開
內容簡介,圖書目錄,

內容簡介

嵌入式系統是目前**熱門的計算機套用領域之一,嵌入式Linux是套用**廣泛的嵌入式作業系統之一,嵌入式C語言在其中起著到關重要的作用。
本書共13章,全面講解了嵌入式系統基礎,嵌入式Linux C語言開發工具、語言基礎,檔案I/O相關實例,ARM Linux進程執行緒開發實例,ARM Linux網路開發實例,嵌入式Linux設備驅動開發以及視頻監控系統。
本書可作為大中專院校嵌入式相關專業本科生、研究生的教材,也可供廣大希望轉入嵌入式領域的科研和工程技術人員使用。

圖書目錄

第 1章 嵌入式系統基礎知識 1
1.1 嵌入式系統概述 1
1.1.1 嵌入式系統的發展史 2
1.1.2 嵌入式系統的定義與特點 3
1.1.3 嵌入式系統的特點 4
1.2 嵌道洪迎牛入式系統的組成 5
1.2.1 嵌入式系統的硬體架構 6
1.2.2 嵌入式作業系統 9
1.2.3 嵌入式套用軟體 11
1.3 ARM處理器平台介紹 12
1.3.1 ARM處理器簡介 12
1.3.2 ARM處理器系列 13
1.3.3 ARM體系結構簡介 17
1.3.4 S3C2410處理詢遙歡器簡介 18
1.4 嵌入式系統硬體平台選型 22
1.4.1 硬體平台的選擇 22
1.4.2 ARM處理器選型 23
1.5 嵌入式系統開發概述 25
1.5.1 嵌入式系統開發流程 25
1.5.2 嵌入式軟體開發流程 26
本章小結 31
動手練練 31
第 2章 嵌入式Linux C語言開發工具 32
2.1 嵌入式Linux下C語言概述 32
2.1.1 C語言簡史 33
2.1.2 C語言特點 33
2.1.3 嵌入式Linux C語言編程環境 34
2.2 嵌入式Linux編輯器vi的使用 35
2.2.1 vi的基本模式 35
2.2.2 vi的基本操作 36
2.2.3 vi的使用實例分析 40
2.3 嵌入式Linux編譯器GCC的使用 41
2.3.1 GCC概述 41
2.3.2 GCC編譯流程分析 42
2.3.3 GCC警告提示 45
2.3.4 GCC使用庫函式 47
2.3.5 GCC代碼立簽譽最佳化 49
2.4 嵌入式促試元Linux調試器GDB的使用 49
2.4.1 GDB使用實例 50
2.4.2 設定/刪除斷點 53
2.4.3 數據相關命令 54
2.4.4 調試運行環境相關命令 55
2.4.5 堆疊相關命令 55
2.5 make工程管理器 55
2.5.1 Makefile基本結構 56
2.5.2 Makefile變數 58
2.5.3 Makefile規則 61
2.5.4 make使用 62
2.6 蒸芝Emacs綜合編輯器 63
2.6.1 Emacs的啟動與退出 63
2.6.2 Emacs的基本編輯 64
2.6.3 Emacs的C模式 66
2.6.4 Emacs的Shell模式 69
本章小結 70
動手練練 70
第3章 構建嵌入式Linux系統 71
3.1 嵌入式系統開發環境的構建 71
3.1.1 嵌入式交叉編譯環境搭建 71
3.1.2 minicom和超級終端配置及使您禁付用 76
3.1.3 宿主機服務配置 83
3.2 Bootloader 87
3.2.1 Bootloader的概念 88
3.2.2 Bootloader啟動流程分析 89
3.2.3 U-Boot概述 89
3.2.4 U-Boot源碼導讀 90
3.3 編譯嵌入式Linux核心 91
3.4 Linux核心結構 95
3.5 製作檔案系統 95
本章小結 97
動手練練 97
第4章 嵌入式Linux C語言基礎——數據、表達式 98
4.1 嵌入式Linux C語言概述 98
4.2 基本數據類型 100
4.2.1 整型家族 100
4.2.2 實型家族 102
4.2.3 字元型家族 103
4.2.4 枚舉家族 104
4.2.5 指針家族 105
4.3 變協狼遷講量與常量 107
4.3.1 變數的定義 107
4.3.2 typedef 113
4.3.3 常量定義 114
4.3.4 ARM-Linux基本數據類型綜合套用實例 115
4.4 運算符與表達式 118
4.4.1 算術運算符和表達式 119
4.4.2 賦值運算符和表達式 121
4.4.3 逗號運算符和表達式 123
4.4.4 位運算符和表達式 124
4.4.5 關係運算符和表達式 126
4.4.6 邏輯運算符和表達式 127
4.4.7 sizeof操作符 129
4.4.8 條件(?)運算符 130
4.4.9 運算符優先權總結 131
4.4.10 ARM-Linux運算符
綜合實例 133
本章小結 137
動手練練 137
第5章 嵌入式Linux C語言基礎——控制語句及函式 138
5.1 嵌入式Linux C語言程式結構概述 138
5.1.1 嵌入式Linux C語言3種程式結構 138
5.1.2 嵌入式Linux C語言基本語句 139
5.2 選擇語句 142
5.2.1 if語句 142
5.2.2 switch語句 145
5.2.3 ARM-Linux選擇語句套用實例 147
5.3 循環語句 148
5.3.1 while和do-while語句 148
5.3.2 for循環語句 149
5.3.3 break和continue語句 151
5.3.4 ARM-Linux循環語句套用實例 152
5.4 goto語句 154
5.4.1 goto語句語法 154
5.4.2 ARM-Linux中goto語句套用實例 154
5.5 函式的定義與聲明 155
5.5.1 C語言函式概述 155
5.5.2 函式定義 157
5.5.3 函式聲明 157
5.5.4 ARM-Linux函式定義與聲明實例 158
5.6 函式的參數、值和基本調用 160
5.6.1 函式的參數 160
5.6.2 函式的值 161
5.6.3 函式的基本調用 161
5.7 函式的嵌套、遞歸調用 162
5.7.1 函式的嵌套調用 162
5.7.2 函式的遞歸調用 162
5.7.3 ARM-Linux函式調用套用實例 165
本章小結 167
動手練練 167
第6章 嵌入式Linux C語言基礎——數組、指針與結構 168
6.1 數組 169
6.1.1 一維數組 169
6.1.2 字元串 172
6.1.3 二維數組 174
6.2 指針 175
6.2.1 指針的概念 175
6.2.2 指針變數的操作 177
6.2.3 指針和數組 184
6.2.4 指針高級議題 191
6.3 結構體與聯合 196
6.3.1 結構體 196
6.3.2 聯合 200
6.3.3 ARM-Linux指針、結構體使用實例 201
本章小結 203
動手練練 203
第7章 嵌入式Linux C語言基礎——高級議題 204
7.1 預處理 204
7.1.1 預處理的概念 204
7.1.2 預定義 205
7.1.3 檔案包含 211
7.1.4 條件編譯 212
7.2 C語言中的記憶體分配 214
7.2.1 C語言程式所占記憶體分類 214
7.2.2 堆和棧的區別 215
7.3 嵌入式Linux可移植性考慮 216
7.3.1 字長和數據類型 216
7.3.2 數據對齊 218
7.3.3 位元組順序 218
7.4 C和彙編的接口 219
7.4.1 內嵌彙編的語法 219
7.4.2 編譯器最佳化介紹 221
7.4.3 C語言關鍵字volatile 222
7.4.4 memory描述符 222
7.4.5 gcc對內嵌彙編語言的處理方式 223
本章小結 224
動手練練 224
第8章 嵌入式Linux C語言基礎——ARM Linux核心常見數據結構 225
8.1 鍊表 226
8.1.1 鍊表概述 226
8.1.2 單向鍊表 226
8.1.3 雙向鍊表 233
8.1.4 循環鍊表 234
8.1.5 ARM Linux中鍊表使用實例 235
8.2 樹、二叉樹、平衡樹 237
8.2.1 樹 237
8.2.2 二叉樹 238
8.2.3 平衡樹 245
8.2.4 ARM Linux中紅黑樹使用實例 247
8.3 哈希表 249
8.3.1 哈希表的概念及作用 249
8.3.2 哈希表的構造方法 250
8.3.3 哈希表的處理衝突方法 252
8.3.4 ARM Linux中哈希表使用實例 253
本章小結 255
動手練練 255
第9章 檔案I/O相關實例 256
9.1 Linux系統調用及用戶編程接口(API) 257
9.1.1 系統調用 257
9.1.2 用戶編程接口(API) 257
9.1.3 系統命令 258
9.2 ARM Linux檔案I/O系統概述 258
9.2.1 虛擬檔案系統(VFS) 258
9.2.2 通用檔案模型 259
9.2.3 ARM Linux的設備檔案 264
9.3 檔案I/O操作 265
9.3.1 不帶快取的檔案I/O操作 265
9.3.2 標準I/O開發 276
9.4 嵌入式Linux串口套用開發 279
9.4.1 串口概述 279
9.4.2 串口設定詳解 280
9.4.3 串口使用詳解 284
本章小結 287
動手練練 287
第 10章 ARM Linux進程執行緒開發實例 288
10.1 ARM Linux進程執行緒管理 289
10.1.1 進程描述符及任務結構 289
10.1.2 進程的調度 291
10.1.3 Linux中的執行緒 293
10.1.4 Linux中進程間通信 293
10.2 ARM Linux進程控制相關API 294
10.3 ARM Linux進程間通信API 301
10.3.1 管道通信 301
10.3.2 信號通信 303
10.3.3 共享記憶體 308
10.3.4 訊息佇列 309
10.4 ARM Linux執行緒相關API 312
10.5 Linux守護進程 317
10.5.1 守護進程概述 317
10.5.2 編寫規則 318
10.5.3 守護進程實例 319
本章小結 321
動手練練 321
第 11章 ARM Linux網路開發實例 322
11.1 TCP/IP協定簡介 322
11.1.1 TCP/IP的分層模型 322
11.1.2 TCP/IP分層模型特點 324
11.1.3 TCP/IP核心協定 325
11.2 網路基礎編程 328
11.2.1 socket概述 328
11.2.2 地址及順序處理 328
11.2.3 socket基礎編程 333
11.3 Web伺服器 339
11.3.1 Web伺服器功能 339
11.3.2 Web伺服器協定 341
11.3.3 Web伺服器協定 342
11.3.4 運行Web伺服器 347
11.4 Traceroute程式實例 347
11.4.1 Traceroute原理簡介 347
11.4.2 traceroute實例與分析 348
11.4.3 traceroute實例運行結果 354
本章小結 354
動手練練 354
第 12章 嵌入式Linux設備驅動開發 355
12.1 設備驅動概述 355
12.1.1 設備驅動簡介 355
12.1.2 設備驅動程式的特點 356
12.2 模組編程 357
12.2.1 模組編程簡介 357
12.2.2 模組相關命令 357
12.2.3 模組編程流程 358
12.3 字元設備驅動編寫 360
12.4 塊設備驅動編寫 369
12.4.1 塊設備驅動程式描述符 369
12.4.2 塊設備驅動編寫流程 369
12.5 簡單的skull驅動實例 375
12.5.1 驅動簡介 375
12.5.2 驅動編寫流程 376
12.5.3 結果分析 379
12.6 LCD驅動編寫實例 379
12.6.1 LCD工作原理 379
12.6.2 LCD驅動實例 382
本章小結 389
動手練練 389
第 13章 視頻監控系統 390
13.1 視頻監控系統概述 390
13.1.1 系統組成 390
13.1.2 音視頻伺服器 391
13.1.3 音視頻客戶端 392
13.1.4 通信傳輸控制協定 393
13.2 基本數據結構 395
13.3 功能實現 398
13.3.1 傳輸控制 398
13.3.2 用戶檢驗 401
13.3.3 控制命令處理 403
13.3.4 雲台轉動控制 404
13.3.5 執行緒相關 407
本章小結 408
動手練練 408
2.5.4 make使用 62
2.6 Emacs綜合編輯器 63
2.6.1 Emacs的啟動與退出 63
2.6.2 Emacs的基本編輯 64
2.6.3 Emacs的C模式 66
2.6.4 Emacs的Shell模式 69
本章小結 70
動手練練 70
第3章 構建嵌入式Linux系統 71
3.1 嵌入式系統開發環境的構建 71
3.1.1 嵌入式交叉編譯環境搭建 71
3.1.2 minicom和超級終端配置及使用 76
3.1.3 宿主機服務配置 83
3.2 Bootloader 87
3.2.1 Bootloader的概念 88
3.2.2 Bootloader啟動流程分析 89
3.2.3 U-Boot概述 89
3.2.4 U-Boot源碼導讀 90
3.3 編譯嵌入式Linux核心 91
3.4 Linux核心結構 95
3.5 製作檔案系統 95
本章小結 97
動手練練 97
第4章 嵌入式Linux C語言基礎——數據、表達式 98
4.1 嵌入式Linux C語言概述 98
4.2 基本數據類型 100
4.2.1 整型家族 100
4.2.2 實型家族 102
4.2.3 字元型家族 103
4.2.4 枚舉家族 104
4.2.5 指針家族 105
4.3 變數與常量 107
4.3.1 變數的定義 107
4.3.2 typedef 113
4.3.3 常量定義 114
4.3.4 ARM-Linux基本數據類型綜合套用實例 115
4.4 運算符與表達式 118
4.4.1 算術運算符和表達式 119
4.4.2 賦值運算符和表達式 121
4.4.3 逗號運算符和表達式 123
4.4.4 位運算符和表達式 124
4.4.5 關係運算符和表達式 126
4.4.6 邏輯運算符和表達式 127
4.4.7 sizeof操作符 129
4.4.8 條件(?)運算符 130
4.4.9 運算符優先權總結 131
4.4.10 ARM-Linux運算符
綜合實例 133
本章小結 137
動手練練 137
第5章 嵌入式Linux C語言基礎——控制語句及函式 138
5.1 嵌入式Linux C語言程式結構概述 138
5.1.1 嵌入式Linux C語言3種程式結構 138
5.1.2 嵌入式Linux C語言基本語句 139
5.2 選擇語句 142
5.2.1 if語句 142
5.2.2 switch語句 145
5.2.3 ARM-Linux選擇語句套用實例 147
5.3 循環語句 148
5.3.1 while和do-while語句 148
5.3.2 for循環語句 149
5.3.3 break和continue語句 151
5.3.4 ARM-Linux循環語句套用實例 152
5.4 goto語句 154
5.4.1 goto語句語法 154
5.4.2 ARM-Linux中goto語句套用實例 154
5.5 函式的定義與聲明 155
5.5.1 C語言函式概述 155
5.5.2 函式定義 157
5.5.3 函式聲明 157
5.5.4 ARM-Linux函式定義與聲明實例 158
5.6 函式的參數、值和基本調用 160
5.6.1 函式的參數 160
5.6.2 函式的值 161
5.6.3 函式的基本調用 161
5.7 函式的嵌套、遞歸調用 162
5.7.1 函式的嵌套調用 162
5.7.2 函式的遞歸調用 162
5.7.3 ARM-Linux函式調用套用實例 165
本章小結 167
動手練練 167
第6章 嵌入式Linux C語言基礎——數組、指針與結構 168
6.1 數組 169
6.1.1 一維數組 169
6.1.2 字元串 172
6.1.3 二維數組 174
6.2 指針 175
6.2.1 指針的概念 175
6.2.2 指針變數的操作 177
6.2.3 指針和數組 184
6.2.4 指針高級議題 191
6.3 結構體與聯合 196
6.3.1 結構體 196
6.3.2 聯合 200
6.3.3 ARM-Linux指針、結構體使用實例 201
本章小結 203
動手練練 203
第7章 嵌入式Linux C語言基礎——高級議題 204
7.1 預處理 204
7.1.1 預處理的概念 204
7.1.2 預定義 205
7.1.3 檔案包含 211
7.1.4 條件編譯 212
7.2 C語言中的記憶體分配 214
7.2.1 C語言程式所占記憶體分類 214
7.2.2 堆和棧的區別 215
7.3 嵌入式Linux可移植性考慮 216
7.3.1 字長和數據類型 216
7.3.2 數據對齊 218
7.3.3 位元組順序 218
7.4 C和彙編的接口 219
7.4.1 內嵌彙編的語法 219
7.4.2 編譯器最佳化介紹 221
7.4.3 C語言關鍵字volatile 222
7.4.4 memory描述符 222
7.4.5 gcc對內嵌彙編語言的處理方式 223
本章小結 224
動手練練 224
第8章 嵌入式Linux C語言基礎——ARM Linux核心常見數據結構 225
8.1 鍊表 226
8.1.1 鍊表概述 226
8.1.2 單向鍊表 226
8.1.3 雙向鍊表 233
8.1.4 循環鍊表 234
8.1.5 ARM Linux中鍊表使用實例 235
8.2 樹、二叉樹、平衡樹 237
8.2.1 樹 237
8.2.2 二叉樹 238
8.2.3 平衡樹 245
8.2.4 ARM Linux中紅黑樹使用實例 247
8.3 哈希表 249
8.3.1 哈希表的概念及作用 249
8.3.2 哈希表的構造方法 250
8.3.3 哈希表的處理衝突方法 252
8.3.4 ARM Linux中哈希表使用實例 253
本章小結 255
動手練練 255
第9章 檔案I/O相關實例 256
9.1 Linux系統調用及用戶編程接口(API) 257
9.1.1 系統調用 257
9.1.2 用戶編程接口(API) 257
9.1.3 系統命令 258
9.2 ARM Linux檔案I/O系統概述 258
9.2.1 虛擬檔案系統(VFS) 258
9.2.2 通用檔案模型 259
9.2.3 ARM Linux的設備檔案 264
9.3 檔案I/O操作 265
9.3.1 不帶快取的檔案I/O操作 265
9.3.2 標準I/O開發 276
9.4 嵌入式Linux串口套用開發 279
9.4.1 串口概述 279
9.4.2 串口設定詳解 280
9.4.3 串口使用詳解 284
本章小結 287
動手練練 287
第 10章 ARM Linux進程執行緒開發實例 288
10.1 ARM Linux進程執行緒管理 289
10.1.1 進程描述符及任務結構 289
10.1.2 進程的調度 291
10.1.3 Linux中的執行緒 293
10.1.4 Linux中進程間通信 293
10.2 ARM Linux進程控制相關API 294
10.3 ARM Linux進程間通信API 301
10.3.1 管道通信 301
10.3.2 信號通信 303
10.3.3 共享記憶體 308
10.3.4 訊息佇列 309
10.4 ARM Linux執行緒相關API 312
10.5 Linux守護進程 317
10.5.1 守護進程概述 317
10.5.2 編寫規則 318
10.5.3 守護進程實例 319
本章小結 321
動手練練 321
第 11章 ARM Linux網路開發實例 322
11.1 TCP/IP協定簡介 322
11.1.1 TCP/IP的分層模型 322
11.1.2 TCP/IP分層模型特點 324
11.1.3 TCP/IP核心協定 325
11.2 網路基礎編程 328
11.2.1 socket概述 328
11.2.2 地址及順序處理 328
11.2.3 socket基礎編程 333
11.3 Web伺服器 339
11.3.1 Web伺服器功能 339
11.3.2 Web伺服器協定 341
11.3.3 Web伺服器協定 342
11.3.4 運行Web伺服器 347
11.4 Traceroute程式實例 347
11.4.1 Traceroute原理簡介 347
11.4.2 traceroute實例與分析 348
11.4.3 traceroute實例運行結果 354
本章小結 354
動手練練 354
第 12章 嵌入式Linux設備驅動開發 355
12.1 設備驅動概述 355
12.1.1 設備驅動簡介 355
12.1.2 設備驅動程式的特點 356
12.2 模組編程 357
12.2.1 模組編程簡介 357
12.2.2 模組相關命令 357
12.2.3 模組編程流程 358
12.3 字元設備驅動編寫 360
12.4 塊設備驅動編寫 369
12.4.1 塊設備驅動程式描述符 369
12.4.2 塊設備驅動編寫流程 369
12.5 簡單的skull驅動實例 375
12.5.1 驅動簡介 375
12.5.2 驅動編寫流程 376
12.5.3 結果分析 379
12.6 LCD驅動編寫實例 379
12.6.1 LCD工作原理 379
12.6.2 LCD驅動實例 382
本章小結 389
動手練練 389
第 13章 視頻監控系統 390
13.1 視頻監控系統概述 390
13.1.1 系統組成 390
13.1.2 音視頻伺服器 391
13.1.3 音視頻客戶端 392
13.1.4 通信傳輸控制協定 393
13.2 基本數據結構 395
13.3 功能實現 398
13.3.1 傳輸控制 398
13.3.2 用戶檢驗 401
13.3.3 控制命令處理 403
13.3.4 雲台轉動控制 404
13.3.5 執行緒相關 407
本章小結 408
動手練練 408

相關詞條

熱門詞條

聯絡我們