|
-- 會員 / 註冊 --
|
|
|
|
嵌入式Linux開發教程 ( 簡體 字) |
作者:宋娟、馬華杰 | 類別:1. -> 作業系統 -> Linux |
譯者: |
出版社:人民郵電出版社 | 3dWoo書號: 47204 詢問書籍請說出此書號!【缺書】 NT售價: 300 元 |
出版日:6/1/2017 |
頁數:330 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787115447012 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介: 第1篇為嵌入式基礎,介紹了嵌入式系統入門、嵌入式軟硬件系統、嵌入式Linux、軟件開發環境建立和嵌入式開發的C語言基礎;第2篇是嵌入式系統基礎,介紹了ARM的內部資源、ARM處理器、ADS集成開發環境等;第3篇是嵌入式設備驅動與移植,介紹了Linux設備驅動、各類驅動設計和引導程序、內核移植等相關知識點;最后一篇通過一個真正的嵌入式B超程序案例詳解嵌入式開發的完整過程,以此提高讀者的實戰水平。
|
目錄:第1篇 嵌入式開發基礎
第1章 嵌入式系統基礎 1 1.1 嵌入式處理器簡介 1 1.1.1 嵌入式微處理器 2 1.1.2 嵌入式微控制器 2 1.1.3 嵌入式數字信號處理器 2 1.1.4 嵌入式片上系統 3 1.2 ARM微處理器簡介 3 1.3 嵌入式操作系統概述 4 1.4 搭建嵌入式開發環境 5 1.4.1 Ubuntu16.04的安裝 5 1.4.2 Minicom的安裝配置 8 1.4.3 Tftp服務的安裝配置 9 1.4.4 NFS的安裝配置 10 1.4.5 建立交叉工具鏈 12 1.5 啟動目標板系統 16 1.5.1 Boot Loader和Kernel 16 1.5.2 根文件系統 18 1.6 小結 19 1.7 習題 19 第2章 嵌入式C語言開發流程 20 2.1 命令行下的開發流程 20 2.1.1 編寫代碼 20 2.1.2 編譯程序 21 2.1.3 運行程序 22 2.1.4 交叉編譯 22 2.1.5 編寫Makefile 23 2.2 基于Eclipse的開發流程 24 2.2.1 下載和安裝Eclipse 24 2.2.2 新建工程 25 2.2.3 編寫代碼 26 2.2.4 編譯工程 26 2.2.5 運行程序 28 2.3 小結 28 2.4 習題 28 第3章 Linux操作基礎 29 3.1 Linux的基本概念 29 3.1.1 文件 29 3.1.2 目錄 29 3.1.3 分區 31 3.1.4 掛載 31 3.1.5 用戶系統 31 3.1.6 用戶權限 32 3.1.7 shell 32 3.1.8 環境變量 33 3.2 Linux的命令行 33 3.2.1 執行命令 34 3.2.2 參數 34 3.2.3 重定向符號 34 3.2.4 獲取幫助 35 3.3 Linux的常用命令 36 3.3.1 文件管理 36 3.3.2 內容管理 39 3.3.3 權限管理 40 3.3.4 備份壓縮 41 3.3.5 系統設置 43 3.3.6 進程控制 45 3.3.7 網絡設置 47 3.4 小結 48 3.5 習題 49 第4章 嵌入式C編程基礎 50 4.1 C語言概述 50 4.1.1 C語言程序的結構 50 4.1.2 C語言的語句 51 4.1.3 C語言的關鍵字 51 4.1.4 C語言程序設計步驟 51 4.2 數據類型 52 4.2.1 常量與變量 52 4.2.2 整型數據、實型數據 52 4.2.3 字符型數據 53 4.3 運算符和表達式 53 4.3.1 算術運算符 53 4.3.2 關系和邏輯運算符 53 4.3.3 位操作符 54 4.3.4 ?操作符 55 4.3.5 表達式的優先級 55 4.4 流程控制 55 4.4.1 順序程序設計 55 4.4.2 選擇結構設計 56 4.4.3 循環結構設計 57 4.5 函數 58 4.5.1 函數定義的一般形式 58 4.5.2 函數的參數和函數的值 59 4.5.3 函數的調用 59 4.5.4 局部變量和全局變量 60 4.6 數組、指針 61 4.6.1 數組 61 4.6.2 指針的基本概念 62 4.6.3 指針與數組 64 4.6.4 指針與字符串 66 4.6.5 指針與函數 67 4.6.6 指針其他用法 68 4.6.7 動態內存管理 68 4.7 小結 69 4.8 習題 69
第2篇 嵌入式系統基礎
第5章 S3C2440的內部資源 70 5.1 S3C2440微處理器 70 5.1.1 主要結構 70 5.1.2 片內資源 70 5.1.3 體系結構 71 5.2 S3C2440存儲器映射 71 5.2.1 bank0總線寬度 72 5.2.2 nWAIT引腳的作用 73 5.2.3 nXBREQ/nXBACK引腳操作 73 5.3 S3C2440內部資源詳解 73 5.3.1 Cache高速緩存 74 5.3.2 時鐘和電源管理 74 5.3.3 中斷控制器 75 5.3.4 脈沖帶寬調制(PWM)定時器 76 5.3.5 實時時鐘(RTC) 77 5.3.6 通用I/O端口 77 5.3.7 LCD控制器 77 5.3.8 UART控制器 78 5.3.9 A/D轉換和觸摸屏接口 79 5.3.10 看門狗定時器 79 5.3.11 IIC總線接口 79 5.3.12 AC97音頻解碼器接口 80 5.3.13 USB設備控制器 80 5.3.14 SD接口 81 5.3.15 SPI接口 81 5.3.16 相機接口 82 5.3.17 工作電壓 82 5.4 小結 82 5.5 習題 82 第6章 ARM微處理器 84 6.1 ARM微處理器的結構 84 6.1.1 體系結構 84 6.1.2 寄存器結構 85 6.1.3 指令結構 85 6.2 ARM微處理器的選擇 85 6.2.1 內核的選擇 85 6.2.2 工作頻率的選擇 85 6.2.3 芯片內存儲器的選擇 86 6.2.4 片內外圍電路的選擇 86 6.3 ARM微處理器的指令集 86 6.3.1 ARM微處理器的指令分類和 格式 86 6.3.2 指令的條件域 87 6.3.3 跳轉指令 88 6.3.4 數據處理指令 88 6.3.5 乘法指令與乘加指令 92 6.3.6 程序狀態寄存器訪問指令 94 6.3.7 加載/存儲指令 95 6.3.8 批量數據加載/存儲指令 97 6.3.9 數據交換指令 97 6.3.10 移位指令 98 6.3.11 協處理器指令 99 6.3.12 異常產生指令 100 6.4 ARM微處理器指令的尋址方式 101 6.4.1 立即尋址 101 6.4.2 寄存器尋址 101 6.4.3 寄存器間接尋址 101 6.4.4 基址變址尋址 102 6.4.5 多寄存器尋址 102 6.4.6 相對尋址 102 6.4.7 堆棧尋址 102 6.5 小結 103 6.6 習題 103 第7章 ADS集成開發環境 104 7.1 命令行開發工具 104 7.1.1 使用armcc 104 7.1.2 使用armlink 106 7.1.3 ARM運行時庫 106 7.1.4 CodeWarrior集成開發環境 107 7.1.5 ADS調試器 109 7.2 使用ADS創建工程 109 7.2.1 創建新工程 109 7.2.2 編譯和鏈接工程 112 7.2.3 ARM fromELF工具 114 7.2.4 在命令行下編譯工程 115 7.3 使用AXD調試代碼 116 7.3.1 打開調試文件 116 7.3.2 查看存儲器內容 117 7.3.3 設置斷點 118 7.3.4 查看變量值 118 7.4 小結 119 7.5 習題 119 第8章 S3C2440的外部電路 120 8.1 核心板電路 120 8.1.1 晶振電路 120 8.1.2 復位電路 120 8.1.3 啟動配置電路 120 8.1.4 FLASH存儲器(內存) 121 8.1.5 SDRAM存儲器(閃存) 123 8.2 底板電路 124 8.2.1 電源電路 125 8.2.2 串口電路 125 8.2.3 USB接口 126 8.2.4 以太網接口 127 8.2.5 JTAG調試接口 127 8.2.6 音頻接口 128 8.2.7 LCD接口 129 8.2.8 SD卡接口 129 8.3 小結 130 8.4 習題 130 第9章 嵌入式Linux文件系統 131 9.1 嵌入式文件系統基礎 131 9.1.1 NOR FLASH存儲器 131 9.1.2 NAND FLASH存儲器 132 9.1.3 MTD簡介 132 9.1.4 日志型文件系統 133 9.1.5 BusyBox 134 9.2 CramFS文件系統 136 9.2.1 CramFS文件系統的特性 136 9.2.2 CramFS文件系統映像文件的 結構 137 9.2.3 CramFS文件系統的工作原理 137 9.2.4 CramFS文件系統的初始化 過程 138 9.2.5 CramFS文件系統的制作 139 9.2.6 CramFS文件系統的掛載流程 141 9.3 基于RAM的文件系統 142 9.3.1 Ramdisk文件系統 142 9.3.2 RamFS/TmpFS文件系統 143 9.4 嵌入式文件系統的設計 145 9.4.1 文件系統格式選擇的基本策略 145 9.4.2 混合型文件系統格式設計方法 145 9.5 小結 146 9.6 習題 146 第10章 內存和信號量 148 10.1 共享內存 148 10.1.1 共享內存的定義 148 10.1.2 涉及的系統調用 148 10.1.3 共享內存舉例 150 10.2 System V共享內存 152 10.2.1 System V共享內存的定義 152 10.2.2 System V涉及的系統調用 152 10.2.3 System V共享內存舉例 153 10.3 消息隊列 154 10.3.1 消息隊列的定義 154 10.3.2 消息隊列涉及的系統調用 154 10.3.3 消息隊列舉例 156 10.4 System V信號量 158 10.4.1 System V信號量的定義 158 10.4.2 System V信號量涉及的系統 調用 159 10.4.3 System V信號量舉例 160 10.5 POSIX信號量 163 10.5.1 POSIX信號量的定義 163 10.5.2 POSIX信號量涉及的系統 調用 163 10.5.3 POSIX信號量舉例 164 10.6 小結 165 10.7 習題 166 第3篇 嵌入式設備驅動與移植
第11章 設備驅動開發基礎 167 11.1 Linux設備管理和驅動概述 167 11.1.1 Linux設備的分類 167 11.1.2 設備驅動程序的作用 167 11.1.3 訪問設備的實現 168 11.1.4 Linux設備控制方式 168 11.2 Linux設備驅動開發流程 169 11.2.1 構造和運行模塊 170 11.2.2 字符設備驅動編寫 171 11.2.3 字符設備驅動示例 172 11.2.4 并發控制 174 11.2.5 阻塞與非阻塞 180 11.2.6 select和poll 183 11.2.7 中斷處理 185 11.2.8 內存與I/O操作 187 11.3 塊設備驅動編寫 191 11.3.1 塊設備的I/O操作特點 191 11.3.2 block_device_operations 結構體 191 11.3.3 gendisk結構體 192 11.3.4 request結構體 193 11.3.5 request操作函數 196 11.3.6 bio結構體 197 11.3.7 注冊與注銷 199 11.3.8 加載與卸載 199 11.3.9 打開與釋放 201 11.3.10 ioctl函數 202 11.3.11 I/O請求處理 202 11.4 小結 206 11.5 習題 206 第12章 MiniGUI圖形界面設計 207 12.1 MiniGUI概述 207 12.1.1 MiniGUI的特點 207 12.1.2 MiniGUI運行模式 208 12.2 MiniGUI的安裝和使用 208 12.2.1 安裝MiniGUI庫 208 12.2.2 安裝MiniGUI的資源 209 12.2.3 配置MiniGUI 210 12.2.4 編譯應用程序例子 210 12.2.5 交叉編譯MiniGUI庫 210 12.2.6 交叉編譯例程 211 12.2.7 QVFB圖形引擎 211 12.2.8 FrameBuffer圖形引擎 212 12.3 利用Eclipse編寫MiniGUI程序 213 12.3.1 建立vacs工程 213 12.3.2 配置編譯選項 214 12.3.3 配置外部工具QVFB 214 12.3.4 運行vacs 215 12.3.5 調試vacs 215 12.4 MiniGUI的編程基礎 215 12.4.1 頭文件 217 12.4.2 程序入口 217 12.4.3 創建和顯示主窗口 217 12.4.4 進入消息循環 218 12.4.5 窗口過程函數 219 12.4.6 屏幕輸出 219 12.4.7 程序的退出 219 12.5 消息循環和窗口過程 220 12.5.1 消息處理函數 220 12.5.2 重要的消息 221 12.5.3 窗口及窗口過程 221 12.6 對話框和控件編程 223 12.6.1 控件的概念 223 12.6.2 預定義控件 223 12.6.3 自定義控件 225 12.6.4 控件子類化 226 12.6.5 對話框和對話框模板 227 12.6.6 模態和非模態對話框 230 12.7 圖形設備接口 230 12.7.1 圖形設備上下文 230 12.7.2 矩形操作和區域操作 231 12.7.3 像素值和調色板 233 12.7.4 位圖操作函數 233 12.7.5 字體和文本輸出 234 12.7.6 繪制圖形 236 12.8 實例——MiniQQ界面設計 238 12.8.1 登錄窗口 239 12.8.2 好友列表窗口 242 12.8.3 聊天窗口 246 12.8.4 其他 248 12.9 小結 248 12.10 習題 249 第13章 各類驅動設計和 引導程序 250 13.1 CAN總線和SJA1000介紹 250 13.1.1 SJA1000寄存器介紹 250 13.1.2 SJA1000與S3C2440連接 254 13.1.3 SJA1000的驅動程序 256 13.2 SD卡驅動 266 13.2.1 塊設備驅動設計 266 13.2.2 SD卡驅動程序分析 266 13.2.3 SD卡驅動程序設計 266 13.3 網絡驅動 269 13.3.1 DM9000芯片介紹 269 13.3.2 重要數據結構 269 13.3.3 網絡設備初始化 271 13.3.4 激活和關閉網絡設備 274 13.3.5 中斷控制的實現 274 13.3.6 發送過程的實現 276 13.3.7 接收過程的實現 278 13.4 引導程序 280 13.4.1 Boot Loader 281 13.4.2 vivi簡介 281 13.4.3 U-Boot簡介 290 13.5 小結 295 13.6 習題 295 第14章 內核移植 296 14.1 Linux內核結構 296 14.2 Linux源碼結構 298 14.2.1 arch目錄 298 14.2.2 drivers目錄 298 14.2.3 fs目錄 299 14.2.4 其他目錄 300 14.3 內核編譯 302 14.3.1 編譯準備 302 14.3.2 設置Flash分區 302 14.3.3 配置內核 305 14.4 內核配置選項 307 14.4.1 常規設置 307 14.4.2 模塊和塊設備層 309 14.5 下載內核 309 14.6 內核調試 310 14.6.1 內核調試步驟 310 14.6.2 常見內核問題 311 14.7 小結 312 14.8 習題 312 第4篇 嵌入式開發實戰
第15章 綜合案例— 嵌入式B超 313 15.1 系統終端的結構設計 313 15.1.1 總體結構 313 15.1.2 顯示控制芯片選型 314 15.2 系統終端的軟件設計 314 15.2.1 U-Boot 314 15.2.2 嵌入式Linux移植 315 15.2.3 MiniGUI移植 315 15.3 FPGA與ARM接口設計 318 15.3.1 硬件連接 318 15.3.2 FPGA驅動程序設計 318 15.4 顯示芯片的連接與控制 319 15.4.1 選擇SM501的原因 320 15.4.2 SM501驅動程序設計 320 15.5 超聲動態圖像的實時顯示 321 15.5.1 圖像動態顯示 322 15.5.2 坐標轉換和灰度插值 322 15.6 圖形界面的結構 323 15.6.1 需求分析 323 15.6.2 總體結構 324 15.6.3 網絡通信 324 15.6.4 多線程編程 325 15.7 操作界面設計 326 15.7.1 區域分配 326 15.7.2 鍵盤響應 326 15.7.3 控件設計 327 15.8 測量模塊設計 328 15.8.1 橢圓的畫法 328 15.8.2 橢圓測量周長和面積 329 15.8.3 軌跡法測量面積 329 15.9 小結 330 15.10 習題 330
|
序: |
|