嵌入式Linux應用開發完全手冊( 簡體 字) | |
作者:韋東山 | 類別:1. -> 作業系統 -> Linux |
出版社:人民郵電出版社 | 3dWoo書號: 54107 詢問書籍請說出此書號! 有庫存 NT售價: 395 元 |
出版日:1/1/2021 | |
頁數:579 | |
光碟數:1 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787115182623 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第 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 本書全面介紹了嵌入式Linux系統開發過程中,從底層系統支持到上層GUI應用的方方面面,內容涵蓋Linux操作系統的安裝及相關工具的使用、配置,嵌入式編程所需要的基礎知識(交叉編譯工具的選項設置、Makefile語法、ARM匯編指令等),硬件部件的使用及編程(囊括了常見硬件,?熱鏤ART、I*IC、LCD等),U-Boot、Linux內核的分析、配置和移植,根文件系統的構造(包括移植busybox、glibc、制作映象文件等),內核調試技術(比如添加kgdb補丁、棧回溯等),驅動程序編寫及移植(LED、按鍵、擴展串口、網卡、硬盤、SD卡、LCD和USB等),GUI系統的移植(包含兩個G
UI系統:基于Qtopia和基于X),應用程序調試技術。 本書從**簡單的點亮一個LED開始,由淺入深地講解,使讀者**終可以配置、移植、裁剪內核,編寫驅動程序,移植GUI系統,掌握整個嵌入式Linux系統的開發方法。 本書由淺入深,循序漸進,適合剛接觸嵌入式Linux的初學者學習,也可作為大、中專院校嵌入式相關專業本科生、研究生的教材。 |