嵌入式 Linux 系統開發 — 基於 ARM 處理器通用平臺, 2/e
馮新宇、蔣洪波、程坤
買這商品的人也買了...
-
$539$512 -
$690$538 -
$680$537 -
$356自己動手寫編譯器、鏈接器
-
$719$683 -
$414$393 -
$354$336 -
$780$616 -
$414$393 -
$534$507 -
$599$569 -
$750$585 -
$450$351 -
$1,280$845 -
$774$735 -
$517高性能 Linux 網絡編程核心技術揭秘
-
$680$510 -
$454CPU 眼裡的 C/C++
-
$505穿越作業系統迷霧:從零實現作業系統
-
$300$285 -
$1,080$713 -
$680$530 -
$880$695 -
$774$735 -
$490$387
相關主題
商品描述
本書系統論述了基於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
視 頻 名 稱 時長/分 視頻二維碼位置 第1集 VMware安裝步驟 4 1.2.2節節首 第2集 Ubuntu操作系統安裝 9 1.2.2節節尾 第3集 Linux指令操作1 52 1.3.1節節首 第4集 Linux指令操作2 70 1.3.3節節首 第5集 vi和gcc講解 71 2.2.1節節首 第6集 gdb調試 22 2.2.3節節首 第7集 samba配置 34 2.4.1節節首 第8集 nfs服務器 14 2.4.2節節首 第9集 TFTP服務器 6 2.4.3節節首 第10集 samba多機實驗操作擴展 5 2.5節習題5 第11集 nfs多機實驗操作擴展 5 2.5節習題6 第12集 腳本開篇介紹 6 3.1節節首 第13集 腳本編程1 25 3.1節節末 第14集 腳本編程2 28 3.3節節首 第15集 數據類型 54 4.2.1節節首 第16集 輸入輸出函數 32 4.2.7節節首 第17集 控制語句 54 4.3.1節節首 第18集 數組與字符串 33 4.4.1節節首 第19集 函數 24 4.5.1節節首 第20集 指針概述 35 4.6.1節節首 第21集 指針數組 44 4.6.4節節首 第22集 函數指針 43 4.6.5節節首 第23集 目錄操作 16 5.2.1節節首 第24集 文件操作 20 5.3.1節節首 第25集 設備控制 15 5.4.1節節首 第26集 Linux時間編程 23 5.5.1節節首 第27集 進程控制概述 20 6.1.1節節首 第28集 進程控制編程 33 6.2.1節節首 第29集 管道通信 25 7.2.1節節首 第30集 消息隊列 10 7.3.1節節首 續表
視 頻 名 稱 時長/分 視頻二維碼位置 第31集 信號 20 7.4.1節節首 第32集 信號量 12 7.5.1節節首 第33集 共享內存 10 7.6.1節節首 第34集 Linux線程實現 15 8.2.1節節首 第35集 線程函數傳遞 15 8.3.1節節首 第36集 網絡編程基本概念 30 9.1.1節節首 第37集 TCP/IP 15 9.2.1節節首 第38集 基本網絡函數介紹 15 9.3.1節節首 第39集 服務器和客戶端 9 9.4.1節節首 第40集 高級套接字函數 11 9.5.1節節首 第41集 服務器模型 22 9.8.1節節首