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

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

作者: 韋東山
出版社: 人民郵電
出版在: 2021-01-01
ISBN-13: 9787115182623
ISBN-10: 7115182620
裝訂格式: 平裝
總頁數: 579 頁





內容描述


<本書簡介>

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

<內容特色>

   

 

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

 

<章節目錄>

 

第1篇 嵌入式Linux開發環境構建篇
  第1章 嵌入式Linux開發概述
  第2章 嵌入式Linux開發環境構建
  第3章 嵌入式編程基礎知識
  第4章 Windows、Linux環境下相關工具、命令的使用
第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章 LCD和USB驅動程式移植
第5篇 嵌入式Linux系統應用開發篇
  第25章 嵌入式GUI開發
  第26章 基於X的GUI開發
  第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章 IIC接口 181
12.1 I
IC總線協議及硬件介紹 181
12.1.1 IIC總線協議 181
12.1.2 S3C2410/S3C2440 I
IC總線控制器 184
12.2 IIC總線操作實例 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




相關書籍

Generic Programming and the STL: Using and Extending the C++ Standard Template Library (Paperback)

作者 Matthew H. Austern

2021-01-01

Wireless Optical Telecommunications (Hardcover)

作者 Olivier Bouchet

2021-01-01

Linux 集群之美

作者 余洪春

2021-01-01