《嵌入式Linux系統開發 ——基於ARM處理器通用平台(第2版)》是2023年9月1日清華大學出版社出版的圖書,作者:馮新宇、蔣洪波、程坤。
基本介紹
- 中文名:嵌入式Linux系統開發 ——基於ARM處理器通用平台(第2版)
- 作者:馮新宇、蔣洪波、程坤
- 出版時間:2023年9月1日
- 出版社:清華大學出版社
- ISBN:9787302626701
- 定價:80 元
- 印次:2-1
- 印刷日期:2023.09.08
內容簡介,圖書目錄,
內容簡介
本書系統論述了基於ARM 處理器的嵌入式Linux 系統開發的原理、方法與實踐。全書共14 章,包括 Linux 概述與系統管理、Linux 編程工具及網路配置、Linux 腳本編程、Linux 核心開發基礎和Linux 驅動開 發基礎與調試等內容。 本書融匯作者在Linux 系統教學、科研和實際項目研發中的經驗,實踐性強。在內容編排上,按照讀者 學習的一般規律,結合大量實例講述,使讀者能高效地掌握嵌入式Linux 系統的基本原理和套用方法。本書 既可作為高等院校相關專業的教材,也可作為從事嵌入式系統開發人員的參考用書。
圖書目錄
第一部分 Linux系統及基本操作
第1章 Linux概述與系統管理 3
微課視頻:135分鐘
1.1 嵌入式系統概述 3
1.1.1 嵌入式系統的發展趨勢 3
1.1.2 嵌入式系統的特點 4
1.1.3 嵌入式系統的組成 4
1.1.4 典型嵌入式作業系統 5
1.2 嵌入式Linux基礎 6
1.2.1 Linux發行版本 7
1.2.2 Linux定製安裝 8
1.3 Linux常用命令 13
1.3.1 系統管理相關命令 14
1.3.2 檔案管理相關命令 15
1.3.3 備份壓縮相關命令 24
1.3.4 網路通信相關命令 26
1.3.5 其他常用命令 30
1.4 系統升級與配置 34
1.5 習題 35
第2章 Linux編程工具及網路配置 36
微課視頻:157分鐘
2.1 編輯器 36
2.1.1 vi編輯器介紹 36
2.1.2 vi編輯器的各模式功能鍵 37
2.2 程式編譯與調試 41
2.2.1 gcc編譯流程 41
2.2.2 gcc編譯選項分析 42
2.2.3 gdb程式調試 46
2.3 Makefile 54
2.3.1 Makefile的書寫規則 54
2.3.2 Makefile中變數的使用 54
2.4 伺服器配置 55
2.4.1 samba伺服器 55
2.4.2 NFS伺服器 59
2.4.3 TFTP伺服器 61
2.5 習題 64
第3章 Linux腳本編程 65
微課視頻:59分鐘
3.1 常用shell命令 65
3.2 腳本編寫基礎 66
3.2.1 特殊字元 66
3.2.2 變數和參數 68
3.2.3 退出和退出狀態 70
3.3 流程控制 71
3.3.1 條件測試 71
3.3.2 操作符相關主題 73
3.3.3 循環控制 74
3.3.4 測試與分支 77
3.4 習題 80
第二部分 Linux系統高級編程
第4章 C語言進階 83
微課視頻:344分鐘
4.1 C語言的基礎知識 83
4.2 數據類型 84
4.2.1 數據類型的分類 84
4.2.2 常量和變數 86
4.2.3 進制 87
4.2.4 字元 88
4.2.5 轉義字元與字元集 88
4.2.6 類型轉換 88
4.2.7 輸入/輸出 92
4.2.8 運算符 95
4.3 控制語句 98
4.3.1 分支語句 98
4.3.2 循環語句 101
4.4 數組與字元串 109
4.4.1 數組的定義 109
4.4.2 數組本質探討 110
4.4.3 一維數組和二維數組 111
4.4.4 字元串 113
4.5 函式 115
4.5.1 函式的定義 115
4.5.2 函式的深度剖析 116
4.5.3 函式的作用剖析 116
4.6 指針 120
4.6.1 指針本質概述 120
4.6.2 連續空間的記憶體地址 121
4.6.3 指針變數 121
4.6.4 指針數組和指針的指針 123
4.6.5 函式和指針 125
4.7 預處理指令 130
4.7.1 宏定義 130
4.7.2 #include 131
4.7.3 條件編譯 132
4.8 習題 133
第5章 檔案I/O編程 135
微課視頻:74分鐘
5.1 檔案和目錄 135
5.2 目錄操作 137
5.3 檔案操作 143
5.3.1 基本概念 143
5.3.2 檢查檔案及確定檔案的許可權 145
5.3.3 創建檔案 146
5.3.4 打開檔案 147
5.3.5 關閉檔案 149
5.3.6 刪除檔案 150
5.3.7 檔案指針移動 153
5.3.8 其他常用函式 156
5.4 設備控制 159
5.5 Linux時間編程 168
5.5.1 取得目前的時間 168
5.5.2 取得目前時間和日期 168
5.5.3 取得當地目前時間和日期 170
5.5.4 將時間結構數據轉換成經過的秒數 170
5.5.5 設定目前時間 171
5.5.6 取得當前時間 171
5.5.7 將時間和日期以ASCII碼格式表示 173
5.5.8 將時間和日期以字元串格式表示 173
5.6 習題 177
第6章 進程控制 179
微課視頻:53分鐘
6.1 進程控制概述 179
6.1.1 進程的定義 179
6.1.2 進程控制模組 180
6.1.3 分配進程描述符 181
6.1.4 進程的創建 181
6.1.5 進程狀態 182
6.1.6 進程調度 184
6.1.7 虛擬記憶體 185
6.1.8 檔案鎖 186
6.2 進程控制編程 186
6.2.1 啟動進程 186
6.2.2 等待進程 193
6.2.3 終止進程 195
6.2.4 守護進程 201
6.3 習題 203
第7章 進程間通信 204
微課視頻:77分鐘
7.1 進程間通信概述 204
7.2 管道通信 206
7.2.1 無名管道 206
7.2.2 命名管道 209
7.3 訊息佇列 212
7.3.1 鍵值 212
7.3.2 創建訊息佇列 213
7.3.3 傳送訊息佇列 214
7.3.4 接收訊息佇列 214
7.3.5 控制訊息佇列 214
7.4 信號 217
7.4.1 信號處理的方式 218
7.4.2 信號操作指令 218
7.5 信號量 226
7.5.1 信號量創建 226
7.5.2 信號量操作 227
7.6 共享記憶體 233
7.6.1 共享記憶體創建 233
7.6.2 共享記憶體的操作 235
7.6.3 共享記憶體段連線到本進程空間 235
7.6.4 共享記憶體解除 236
7.7 習題 240
第8章 多執行緒技術 241
微課視頻:30分鐘
8.1 Linux多執行緒概念 241
8.2 Linux執行緒實現 242
8.2.1 執行緒創建 242
8.2.2 執行緒退出 244
8.2.3 執行緒等待 247
8.2.4 執行緒標識獲取 249
8.2.5 執行緒清除 250
8.3 執行緒函式傳遞及修改執行緒的屬性 254
8.3.1 執行緒函式傳遞 254
8.3.2 綁定屬性 256
8.3.3 分離屬性 257
8.3.4 優先權屬性 258
8.3.5 執行緒棧屬性 260
8.3.6 執行緒的互斥 263
8.3.7 執行緒的同步 266
8.3.8 信號量 269
8.4 習題 272
第9章 網路編程 273
微課視頻:102分鐘
9.1 基本概念 273
9.1.1 協定與體系結構 273
9.1.2 數據傳輸流程 274
9.1.3 常用的命令 275
9.1.4 網路地址 279
9.1.5 IP設定項 280
9.1.6 連線埠 281
9.2 TCP/IP 281
9.2.1 整體構架概述 281
9.2.2 IP 283
9.2.3 ICMP 285
9.2.4 UDP 285
9.2.5 TCP 286
9.2.6 TCP連線的建立 288
9.3 Socket編程接口介紹 288
9.3.1 建立一個Socket通信 288
9.3.2 對Socket綁定 289
9.3.3 等待連線 290
9.3.4 建立Socket連線 291
9.3.5 傳送和接收函式 292
9.3.6 關閉套接字 293
9.4 伺服器和客戶端的信息函式 294
9.4.1 位元組轉換函式 294
9.4.2 IP和域名的轉換 295
9.4.3 IP位址轉換函式 297
9.4.4 服務信息函式 299
9.5 用戶數據報傳送 299
9.5.1 recvfrom 299
9.5.2 sendto 300
9.6 高級套接字函式 303
9.6.1 recvmsg 303
9.6.2 sendmsg 304
9.7 套接字選項 304
9.7.1 getsockopt() 305
9.7.2 setsockopt() 305
9.7.3 ioctl 306
9.8 伺服器模型 306
9.8.1 循環伺服器:UDP伺服器 306
9.8.2 循環伺服器:TCP伺服器 307
9.8.3 並發伺服器:TCP伺服器 311
9.8.4 並發伺服器:多路復用I/O 312
9.8.5 並發伺服器:UDP伺服器 313
9.9 Socket編程套用 316
9.9.1 編寫伺服器程式 316
9.9.2 編寫客戶端程式 318
9.9.3 編譯測試 319
9.10 習題 320
第三部分 嵌入式系統驅動開發
第10章 核心開發基礎 323
10.1 嵌入式開發環境的搭建 323
10.1.1 交叉編譯工具鏈 324
10.1.2 超級終端軟體 326
10.2 Linux核心簡介 327
10.2.1 Linux核心 328
10.2.2 Linux核心原始碼 330
10.2.3 Linux核心配置及裁剪 332
10.2.4 設備樹介紹 335
10.2.5 核心啟動簡單流程分析 344
10.3 檔案系統 347
10.3.1 檔案系統分類 347
10.3.2 檔案系統主要目錄 347
10.3.3 檔案啟動流程 348
10.4 習題 357
第11章 BootLoader 358
11.1 BootLoader介紹 358
11.1.1 BootLoader的安裝和啟動 359
11.1.2 BootLoader的操作模式 359
11.1.3 BootLoader與主機之間的通信方式 359
11.1.4 常用BootLoader介紹 360
11.2 u-boot介紹 360
11.2.1 目錄結構 361
11.2.2 u-boot的主要功能 365
11.2.3 u-boot的工具 365
11.3 u-boot工作流程 366
11.3.1 _start()函式 366
11.3.2 _main()函式 369
11.3.3 board_init_f()函式 370
11.3.4 relocate_code()函式 370
11.3.5 board_init_r()函式 372
11.4 u-boot編譯 376
11.5 習題 377
第12章 Linux驅動開發基礎與調試 378
12.1 設備驅動簡介 378
12.1.1 設備類型分類 378
12.1.2 核心空間和用戶空間 379
12.1.3 驅動程式層次結構 380
12.1.4 驅動程式與外界接口 380
12.2 列印調試 381
12.3 綜合案例——驅動程式載入 383
12.3.1 靜態載入 383
12.3.2 動態載入 389
12.4 習題 392
第13章 字元設備驅動 393
13.1 字元設備驅動基礎 393
13.1.1 關鍵數據結構 393
13.1.2 設備驅動開發的基本函式 395
13.1.3 設備檔案和設備號 400
13.1.4 載入和卸載驅動程式 401
13.2 LED設備驅動程式 402
13.2.1 硬體電路 402
13.2.2 驅動程式分析 403
13.2.3 測試驗證 409
13.3 按鍵設備驅動程式 410
13.3.1 按鍵模組硬體電路 410
13.3.2 Linux input子系統 411
13.3.3 驅動程式分析 413
13.3.4 測試驗證 422
13.4 習題 423
第四部分 硬 件 平 台
第14章 硬體平台介紹 427
14.1 硬體參數 427
14.2 軟體參數 428
14.3 可完成實驗 428
參考文獻 430