嵌入式Linux開發教程

嵌入式Linux開發教程

《嵌入式Linux開發教程》是2017年6月人民郵電出版社出版的圖書,作者是宋娟、馬華傑。

基本介紹

  • 中文名:嵌入式Linux開發教程
  • 作者:宋娟、馬華傑
  • 出版時間:2017年6月
  • 出版社:人民郵電出版社
  • 頁數:330 頁
  • ISBN:9787115447012
  • 定價:59.8 元
  • 開本:16 開
  • 裝幀:平裝
內容簡介,圖書目錄,

內容簡介

第 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

相關詞條

熱門詞條

聯絡我們