嵌入式 Linux 應用開發完全手冊

韋東山

  • 出版商: 人民郵電
  • 出版日期: 2021-01-01
  • 定價: $539
  • 售價: 8.5$458
  • 語言: 簡體中文
  • 頁數: 579
  • 裝訂: 平裝
  • ISBN: 7115182620
  • ISBN-13: 9787115182623
  • 相關分類: 嵌入式系統Linux
  • 立即出貨 (庫存 < 4)

  • 嵌入式 Linux 應用開發完全手冊-preview-1
嵌入式 Linux 應用開發完全手冊-preview-1

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

商品描述

<本書簡介>

本書以S3C2410S3C2440開發板為例,從分析硬件上電執行的第一條指令開始,到構造出一個類似PDA、基於Linux的桌面GUI系統,帶領讀者學習、掌握從最底層到最高層的軟件編寫方法。 本書由淺入深,循序漸進,適合剛接觸嵌入式Linux的初學者學習,也可作為大、中專院校嵌入式相關專業本科生、研究生的教材。

 

<內容特色>

 

 

 

本書全面介紹了嵌入式Linux系統開發過程中,從底層系統支援到上層GUI應用的方方面面,內容涵蓋Linux作業系統的安裝及相關工具的使用、配置,嵌入式編程所需要的基礎知識(交叉編譯工具的選項設置、Makefile語法、ARM彙編指令等),硬件部件的使用及編程(囊括了常見硬件,比如UARTI*ICLCD)U-BootLinux內核的分析、配置和移植,根檔系統的構造(包括移植busyboxglibc、製作映象檔等),內核調試技術(比如添加kgdb補丁、棧回溯等),驅動程式編寫及移植(LED、按鍵、擴展串口、網卡、硬盤、SD卡、LCDUSB)GUI系統的移植(包含兩個GUI系統:基於Qtopia和基於X),應用程式調試技術。
本書從最簡單的點亮一個LED開始,由淺入深地講解,使讀者最終可以配置、移植、裁剪內核,編寫驅動程式,移植GUI系統,掌握整個嵌入式Linux系統的開發方法。
本書由淺入深,循序漸進,適合剛接觸嵌入式Linux的初學者學習,也可作為大、中專院校嵌入式相關專業本科生、研究生的教材。

 

<章節目錄>

 

1篇 嵌入式Linux開發環境構建篇
  1章 嵌入式Linux開發概述
  2章 嵌入式Linux開發環境構建
  3章 嵌入式編程基礎知識
  4章 WindowsLinux環境下相關工具、命令的使用
2篇 ARM9嵌入式系統基礎實例篇
  5章 GPIO接口
  6章 內存控制
  7章 內存管理單元MMU
  8章 NAND Flash控制器
  9章 中斷體系結構
  10章 系統時鐘和計時器
  11章 通用異步收發器UART
  12章 I*IC接口
  13章 LCD控制器
  14章 ADC和觸摸屏接口
3篇 嵌入式Linux系統移植篇
  15章 移植U-Boot
  16章 移植Linux內核
  17章 構建Linux根檔系統
  18章 Linux內核調試技術
4篇 嵌入式Linux設備驅動開發篇
  19章 字符設備驅動程式
  20章 Linux異常處理體系結構
  21章 擴展串口驅動程式移植
  22章 網卡驅動程式移植
  23章 IDE接口和SD卡驅動程式移植
  24章 LCDUSB驅動程式移植
5篇 嵌入式Linux系統應用開發篇
  25章 嵌入式GUI開發
  26章 基於XGUI開發
  27章 Linux應用程式調試技術
參考文獻

 

 

目錄大綱

目 錄

 

第 1篇 嵌入式Linux開發環境構建篇

 

第 1章 嵌入式Linux開發概述 2

1.1 嵌入式系統介紹 2

1.1.1 嵌入式系統的定義和特點 2

1.1.2 嵌入式技術的發展歷史 3

1.2 基於ARM處理器的嵌入式Linux系統 5

1.2.1 ARM處理器介紹 5

1.2.2 在嵌入式系統中選擇嵌入式Linux的理由 8

 

第 2章 嵌入式Linux開發環境構建 10

2.1 硬件環境構建 10

2.1.1 主機與目標板結合的交叉開發模式 10

2.1.2 硬件要求 11

2.2 軟件環境構建 12

2.2.1 主機Linux操作系統的安裝 12

2.2.2 主機Linux操作系統上網絡服務的配置與啟動 18

2.2.3 在主機Linux操作系統中安裝基本的開發環境 23

2.2.4 光盤的內容結構及安裝 23

2.2.5 安裝交叉編譯工具鏈 25

2.2.6 書中寫作風格的約定 28

 

第3章 嵌入式編程基礎知識 29

3.1 交叉編譯工具選項說明 29

3.1.1 arm-linux-gcc選項 29

3.1.2 arm-linux-ld選項 38

3.1.3 arm-linux-objcopy選項 41

3.1.4 arm-linux-objdump選項 43

3.1.5 匯編代碼、機器碼和存儲器的關系以及數據的表示 44

3.2 Makefile介紹 45

3.2.1 Makefile規則 45

3.2.2 Makefile文件里的賦值方法 46

3.2.3 Makefile常用函數 46

3.3 常用ARM匯編指令及ATPCS規則 52

3.3.1 本書使用的所有匯編指令 52

3.3.2 ARM-THUMB子程序調用規則ATPCS 55

 

第4章 Windows、Linux環境下相關工具、命令的使用 58

4.1 Windows環境下的工具介紹 58

4.1.1 代碼閱讀、編輯工具Source Insight 58

4.1.2 文件傳輸工具Cuteftp 63

4.1.3 遠程登錄工具SecureCRT 63

4.1.4 TFTP服務器軟件Tftpd32 64

4.2 Linux環境下的工具、命令介紹 65

4.2.1 代碼閱讀、編輯工具KScope 65

4.2.2 遠程登錄工具C-kermit 69

4.2.3 編輯命令vi 69

4.2.4 查找命令grep、find命令 71

4.2.5 在線手冊查看命令man 72

4.2.6 其他命令:tar、diff、patch 73

 

第 2篇 ARM9嵌入式系統基礎實例篇

 

第5章 GPIO接口 76

5.1 GPIO硬件介紹 76

5.1.1 通過寄存器來操作GPIO引腳 76

5.1.2 怎樣使用軟件來訪問硬件 77

5.2 GPIO操作實例:LED和按鍵 80

5.2.1 硬件設計 80

5.2.2 程序設計及代碼詳解 80

5.2.3 實例測試 86

 

第6章 存儲器控制 87

6.1 使用存儲控制器訪問外設的原理 87

6.1.1 S3C2410/S3C2440的地址空間 87

6.1.2 存儲控制器與外設的關系 89

6.1.3 存儲控制器的寄存器使用方法 91

6.2 存儲控制器操作實例:使用SDRAM 94

6.2.1 代碼詳解及程序的復制、跳轉過程 94

6.2.2 實例測試 97

 

第7章 內存管理單元MMU 98

7.1 內存管理單元MMU介紹 98

7.1.1 S3C2410/S3C2440 MMU特性 98

7.1.2 S3C2410/S3C2440 MMU地址變換過程 99

7.1.3 內存的訪問權限檢查 107

7.1.4 TLB的作用 109

7.1.5 Cache的作用 110

7.1.6 S3C2410/S3C2440 MMU、TLB、Cache的控制指令 113

7.2 MMU使用實例:地址映射 113

7.2.1 程序設計 113

7.2.2 代碼詳解 114

7.2.3 實例測試 124

 

第8章 NAND Flash控制器 125

8.1 NAND Flash介紹和NAND Flash控制器使用 125

8.1.1 Flash介紹 125

8.1.2 NAND Flash的物理結構 127

8.1.3 NAND Flash訪問方法 128

8.1.4 S3C2410/S3C2440 NAND Flash控制器介紹 134

8.2 NAND Flash控制器操作實例:讀Flash 135

8.2.1 讀NAND Flash的步驟 135

8.2.2 代碼詳解 137

 

第9章 中斷體系結構 143

9.1 S3C2410/S3C2440中斷體系結構 143

9.1.1 ARM體系CPU的7種工作模式 143

9.1.2 S3C2410/S3C2440中斷控制器 146

9.1.3 中斷控制器寄存器 149

9.2 中斷控制器操作實例:外部中斷 151

9.2.1 按鍵中斷代碼詳解 151

9.2.2 實例測試 158

 

第 10章 系統時鐘和定時器 159

10.1 時鐘體系及各類時鐘部件 159

10.1.1 S3C2410/S3C2440時鐘體系 159

10.1.2 PWM定時器 161

10.1.3 WATCHDOG定時器 164

10.2 MPLL和定時器操作實例 166

10.2.1 程序設計 166

10.2.2 代碼詳解  166

10.2.3 實例測試 170

 

第 11章 通用異步收發器UART 171

11.1 UART原理及UART部件使用方法 171

11.1.1 UART原理說明 171

11.1.2 S3C2410/S3C2440 UART的特性 172

11.1.3 S3C2410/S3C2440 UART的使用 173

11.2 UART操作實例 177

11.2.1 代碼詳解 177

11.2.2 實例測試 180

 

第 12章 I*IC接口 181

12.1 I*IC總線協議及硬件介紹 181

12.1.1 I*IC總線協議 181

12.1.2 S3C2410/S3C2440 I*IC總線控制器 184

12.2 I*IC總線操作實例 187

12.2.1 I*IC接口RTC芯片M41t11的操作方法 187

12.2.2 程序設計 188

12.2.3 設置/讀取M41t11的源碼詳解 188

12.2.4 I*IC實例的連接腳本 195

12.2.5 實例測試 196

 

第 13章 LCD控制器 197

13.1 LCD和LCD控制器 197

13.1.1 LCD顯示器 197

13.1.2 S3C2410/S3C2440 LCD控制器介紹 199

13.2 TFT LCD顯示實例 210

13.2.1 程序設計 210

13.2.2 代碼詳解 210

13.2.3 實例測試 221

 

第 14章 ADC和觸摸屏接口 222

14.1 ADC和觸摸屏硬件介紹及使用 222

14.1.1 S3C2410/S3C2440 ADC和觸摸屏接口概述 222

14.1.2 S3C3410/S3C2440 ADC接口的使用方法 224

14.1.3 觸摸屏原理及接口 226

14.2 ADC和觸摸屏操作實例 230

14.2.1 硬件設計 230

14.2.2 程序設計 230

14.2.3 測試ADC的代碼詳解 230

14.2.4 測試觸摸屏的代碼詳解 232

14.2.5 實例測試 237

 

第3篇 嵌入式Linux系統移植篇

 

第 15章 移植U-Boot 240

15.1 Bootloader簡介 240

15.1.1 Bootloader的概念 240

15.1.2 Bootloader的結構和啟動過程 241

15.1.3 常用Bootloader介紹 246

15.2 U-Boot分析與移植 246

15.2.1 U-Boot工程簡介 246

15.2.2 U-Boot源碼結構 247

15.2.3 U-Boot的配置、編譯、連接過程 249

15.2.4 U-Boot的啟動過程源碼分析 257

15.2.5 U-Boot的移植 264

15.2.6 U-Boot的常用命令 288

15.2.7 使用U-Boot來執行程序 292

 

第 16章 移植Linux內核 293

16.1 Linux版本及特點 293

16.2 Linux移植準備 294

16.2.1 獲取內核源碼 294

16.2.2 內核源碼結構及Makefile分析 295

16.2.3 內核的Kconfig分析 304

16.2.4 Linux內核配置選項 309

16.3 Linux內核移植 313

16.3.1 Linux內核啟動過程概述 313

16.3.2 修改內核以支持S3C2410/S3C2440開發板 314

16.3.3 修改MTD分區 327

16.3.4 移植YAFFS文件系統 330

16.3.5 編譯、燒寫、啟動內核 333

 

第 17章 構建Linux根文件系統 335

17.1 Linux文件系統概述 335

17.1.1 Linux文件系統的特點 335

17.1.2 Linux根文件系統目錄結構 336

17.1.3 Linux文件屬性介紹 340

17.2 移植Busybox 341

17.2.1 Busybox概述 341

17.2.2 init進程介紹及用戶程序啟動過程 342

17.2.3 編譯/安裝Busybox 346

17.3 使用glibc庫 350

17.3.1 glibc庫的組成 350

17.3.2 安裝glibc庫 351

17.4 構建根文件系統 352

17.4.1 構建etc目錄 352

17.4.2 構建dev目錄 354

17.4.3 構建其他目錄 356

17.4.4 製作/使用yaffs文件系統映象文件 356

17.4.5 製作/使用jffs2文件系統映象文件 360

 

第 18章 Linux內核調試技術 362

18.1 內核打印函數printk 362

18.1.1 printk的使用 362

18.1.2 串口控制台 364

18.2 內核源碼級別的調試方法 366

18.2.1 內核調試工具KGDB的作用與原理 366

18.2.2 給內核添加KGDB功能支持S3C2410/S3C2440 367

18.2.3 結合可視化圖形前端DDD和gdb來調試內核 372

18.3 Oops信息及棧回溯 375

18.3.1 Oops信息來源及格式 375

18.3.2 配置內核使Oops信息的棧回溯信息更直觀 376

18.3.3 使用Oops信息調試內核的實例 376

18.3.4 使用Oops的棧信息手工進行棧回溯 380

 

第4篇 嵌入式Linux設備驅動開發篇

 

第 19章 字符設備驅動程序 384

19.1 Linux驅動程序開發概述 384

19.1.1 應用程序、庫、內核、驅動程序的關系 384

19.1.2 Linux驅動程序的分類和開發步驟 385

19.1.3 驅動程序的加載和卸載 387

19.2 字符設備驅動程序開發 387

19.2.1 字符設備驅動程序中重要的數據結構和函數 387

19.2.2 LED驅動程序源碼分析 389

 

第 20章 Linux異常處理體系結構 396

20.1 Linux異常處理體系結構概述 396

20.1.1 Linux異常處理的層次結構 396

20.1.2 常見的異常 400

20.2 Linux中斷處理體系結構 401

20.2.1 中斷處理體系結構的初始化 401

20.2.2 用戶註冊中斷處理函數的過程 404

20.2.3 中斷的處理過程 406

20.2.4 卸載中斷處理函數 409

20.3 使用中斷的驅動程序示例 410

20.3.1 按鍵驅動程序源碼分析 410

20.3.2 測試程序情景分析 415

 

第 21章 擴展串口驅動程序移植 419

21.1 串口驅動程序框架概述 419

21.1.1 串口驅動程序術語介紹 419

21.1.2 串口驅動程序的4層結構 420

21.2 擴展串口驅動程序移植 423

21.2.1 串口驅動程序低層代碼分析 423

21.2.2 修改代碼以支持擴展串口 425

21.2.3 測試擴展串口 429

 

第 22章 網卡驅動程序移植 431

22.1 CS8900A網卡驅動程序移植 431

22.1.1 CS8900A網卡特性 431

22.1.2 CS8900A網卡驅動程序修改 432

22.2 DM9000網卡驅動程序移植 441

22.2.1 DM9000網卡特性 441

22.2.2 DM9000網卡驅動程序修改 442

 

第 23章 IDE接口和SD卡驅動程序移植 450

23.1 IDE接口驅動程序移植 450

23.1.1 IDE接口相關概念介紹 450

23.1.2 IDE接口驅動程序移植 452

23.1.3 IDE接口驅動程序測試 461

23.2 SD卡驅動程序移植 464

23.2.1 SD卡相關概念介紹 464

23.2.2 SD卡驅動程序移植 465

23.2.3 SD卡驅動程序測試 472

23.2.4 磁盤分區表 473

 

第 24章 LCD和USB驅動程序移植 475

24.1 LCD驅動程序移植 475

24.1.1 LCD和USB鍵盤驅動程序框架 475

24.1.2 S3C2410/S3C2440 LCD控制器驅動程序移植 479

24.2 USB驅動程序移植 489

24.2.1 USB驅動程序概述 489

24.2.2 配置內核支持USB鍵盤、USB鼠標和USB硬盤  491

24.2.3 USB設備的使用 492

 

第5篇 嵌入式Linux系統應用開發篇

 

第 25章 嵌入式GUI開發 496

25.1 嵌入式GUI介紹 496

25.1.1 Linux桌面GUI系統的發展 496

25.1.2 嵌入式Linux中的幾種GUI 499

25.2 Qtopia移植 501

25.2.1 主機開發環境的搭建 501

25.2.2 交叉編譯、安裝Qtopia 2.2.0 502

25.2.3 開發自己的Qt GUI程序 514

25.2.4 在主機上使用模擬軟件開發、調試嵌入式Qt GUI程序 518

 

第 26章 基於X的GUI開發 524

26.1 X Window概述 524

26.1.1 X協議介紹 524

26.1.2 窗口管理器(Window manager) 526

26.1.3 桌面環境(Desktop environment) 526

26.2 交叉編譯工具包Scratchbox 526

26.2.1 Scratchbox介紹 527

26.2.2 安裝Scratchbox及編譯工具 528

26.2.3 在Scratchbox里安裝交叉編譯工具鏈 529

26.2.4 安裝其他開發工具 535

26.3 移植X 536

26.3.1 編譯軟件的基本知識 536

26.3.2 編譯X的依賴軟件 539

26.3.3 編譯Xorg 542

26.4 移植Matchbox 547

26.4.1 下載源代碼 548

26.4.2 編譯Matchbox 548

26.4.3 運行、試驗Matchbox 550

26.5 移植GTK+ 553

26.5.1 GTK+介紹 553

26.5.2 GTK+移植 553

26.6 移植基於GTK+/X的GUI程序 555

26.6.1 xterm移植 556

26.6.2 gtkboard移植 557

26.6.3 裁剪文件系統 560

 

第 27章 Linux應用程序調試技術 564

27.1 使用strace工具跟蹤系統調用和信號 564

27.1.1 strace介紹及移植 564

27.1.2 使用strace來調試程序 565

27.2 內存調試工具 568

27.2.1 使用memwatch進行內存調試 568

27.2.2 其他內存工具介紹:mtrace、dmalloc、yamd 571

27.3 段錯誤的調試方法 573

27.3.1 使用庫函數backtrace和backtrace_symbols定位段錯誤 573

27.3.2 段錯誤調試實例 574

 

參考文獻 578