嵌入式 Linux 系統開發 — 基於 ARM 處理器通用平臺, 2/e

馮新宇、蔣洪波、程坤

  • 出版商: 清華大學
  • 出版日期: 2023-09-01
  • 售價: $480
  • 貴賓價: 9.5$456
  • 語言: 簡體中文
  • 頁數: 423
  • 裝訂: 平裝
  • ISBN: 7302626707
  • ISBN-13: 9787302626701
  • 相關分類: 嵌入式系統Linux
  • 立即出貨 (庫存 < 4)

  • 嵌入式 Linux 系統開發  — 基於 ARM 處理器通用平臺, 2/e-preview-1
  • 嵌入式 Linux 系統開發  — 基於 ARM 處理器通用平臺, 2/e-preview-2
  • 嵌入式 Linux 系統開發  — 基於 ARM 處理器通用平臺, 2/e-preview-3
嵌入式 Linux 系統開發  — 基於 ARM 處理器通用平臺, 2/e-preview-1

買這商品的人也買了...

商品描述

本書系統論述了基於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節節首