嵌入式ARM系統工程師實訓教程

嵌入式ARM系統工程師實訓教程

《嵌入式ARM系統工程師實訓教程》是2014年由清華大學出版社出版的圖書,該書作者是莊嚴、周建明、廖煒。

圖書詳細信息

ISBN:9787302380788

定價:68元

印次:1-1

裝幀:

印刷日期:2014-10-17

作者:莊嚴、周建明、廖煒

圖書簡介

基於ARM處理器的嵌入式系統是當前最流行的嵌入式系統。本書最大的特色是實踐性強,所有的案例都是完整的、可以得到驗證的。本書分為6篇:嵌入式ARM基礎、硬體系統設計、ARM體系結構與編程、硬體接口及驅動程式設計、嵌入式系統啟動套用分析與設計、綜合項目。

本書是作者長期從事嵌入式領域實踐及培訓積累的結果。讀者可以根據需要,對各章節按順序或者有選擇地進行閱讀和實踐。

本書結構清晰,內容深入淺出、循序漸進,逐步引領讀者進入嵌入式編程領域。本書可作為高校嵌入式系統的教材和嵌入式系統培訓的實踐教材或課程設計輔導讀物,也可以作為廣大嵌入式系統愛好者、在校大學生及單片機愛好者的自學用書。

目錄

第一篇嵌入式ARM基礎

第1章基礎知識 3

1.1嵌入式系統 4

1.1.1概念 4

1.1.2構成 5

1.1.3特點 5

1.2知識結構 7

1.2.1嵌入式基礎 7

1.2.2微處理器與接口 8

1.2.3嵌入式作業系統 8

1.2.4嵌入式程式設計 9

1.2.5開發與維護 9

1.2.6嵌入式系統設計 9

1.3項目流程 10

1.4本章小結 10

1.5本章習題 11

第2章開發環境 13

2.1硬體實驗環境 14

2.1.1ARM參考板 14

2.1.2硬體仿真器 14

2.2ADS集成開發環境 16

2.2.1ADS介紹 16

2.2.2命令行開發工具 17

2.2.3armcc用法詳解 18

2.2.4armlink用法詳解 20

2.2.5ARM運行時庫 26

2.2.6庫路徑的結構 27

2.2.7CodeWarrior 27

2.2.8ADS調試器 29

2.2.9實用程式 30

2.2.10支持的軟體 30

2.3ADS開發流程 30

2.3.1創建工程 30

2.3.2編譯與連線 34

2.3.3代碼調試 39

2.4RealView集成開發環境 42

2.4.1使用介紹 42

2.4.2實例分析 46

2.5嵌入式HelloARM實例入門 50

2.5.1實驗目的 50

2.5.2實驗設備 50

2.5.3實驗原理 50

2.5.4實驗步驟 55

2.6本章小結 59

2.7本章習題 59

第二篇硬體系統設計

第3章硬體設計基礎 63

3.1常用ARM處理器概述 64

3.1.1ARM套用系統設計概述 64

3.1.2S3C2410A功能簡介 65

3.1.3S3C2410ACPU核心概述 69

3.1.4S3C2410A特殊功能暫存器 70

3.1.5S3C2440概述 70

3.1.6S3C6410概述 71

3.1.7S5PV210概述 71

3.1.8Exynos4212概述 72

3.1.9性能對比 73

3.2硬體電路設計基礎 73

3.2.1需求分析 73

3.2.2方案確定 75

3.2.3原理圖繪製 76

3.2.4PCB板圖繪製 82

3.2.5制板與調試 83

3.3本章小結 84

3.4本章習題 84

第三篇ARM體系結構與編程

第4章微處理器概述 87

4.1常用微處理器概述 88

4.1.1ARM 88

4.1.2PowerPC 88

4.1.3MIPS 89

4.1.4DSP 89

4.1.5x86 89

4.1.6FPGA/CPLD 89

4.2ARM概述 90

4.2.1ARM微處理器的特點 91

4.2.2ARM微處理器的套用領域 91

4.3ARM版本與命名方法 92

4.3.1ARM版本介紹 92

4.3.2ARM體系的變種 93

4.3.3ARM體系版本的命名格式 94

4.4常用的ARM微處理器系列介紹 95

4.4.1經典系列ARM處理器 96

4.4.2Cortex-A系列 97

4.4.3Cortex-R系列 97

4.4.4Cortex-M系列 98

4.4.5ARM-SecurCore系列 98

4.4.6ARM-FPGACores系列 99

4.5ARM微處理器的結構 99

4.6ARM微處理器的套用選型 100

4.6.1ARM微處理器核心的選擇 101

4.6.2系統的工作頻率 101

4.6.3晶片記憶體儲器的容量 101

4.6.4內外圍電路的選擇 101

4.7新技術擴展 102

4.7.1ARMv8 102

4.7.2Thumb-2 102

4.7.3Thumb執行環境(ThumbEE) 102

4.7.4高級SIMD(NEON) 102

4.7.5VFP 103

4.7.6安全性擴充(TrustZone) 103

4.7.7Cortex-A50系列 103

4.8本章小結 104

4.9本章習題 104

第5章編程模型 105

5.1ARM微處理器的工作狀態 106

5.2ARM微處理器的工作模式 106

5.3暫存器組織 107

5.3.1ARM狀態下的暫存器組織 108

5.3.2Thumb狀態下的暫存器組織 110

5.3.3程式狀態暫存器 111

5.4ARM數據存儲格式 113

5.5指令長度及數據類型 114

5.6AMBA規範 115

5.6.1AMBA片上匯流排 115

5.6.2基於AMBA的片上系統 116

5.6.3AHB簡介 116

5.6.4APB簡介 116

5.7AAPCS規範 116

5.8異常(Exceptions) 117

5.8.1異常 117

5.8.2對異常的回響 118

5.8.3從異常返回 118

5.9本章小結 119

5.10本章習題 119

第6章指令系統 121

6.1ARM微處理器的指令集概述 122

6.1.1指令的分類與格式 122

6.1.2指令的條件域 122

6.2ARM指令的定址方式 123

6.2.1立即定址 123

6.2.2暫存器定址 124

6.2.3暫存器間接定址 124

6.2.4基址變址定址 124

6.2.5多暫存器定址 125

6.2.6相對定址 125

6.2.7堆疊定址 125

6.3ARM指令實驗指導 126

6.3.1彙編基本框架 126

6.3.2編譯連結調試 127

6.3.3編譯工程 129

6.3.4調試程式 130

6.4ARM指令集 131

6.4.1跳轉指令 132

6.4.2數據處理指令 134

6.4.3乘法指令與乘加指令 139

6.4.4程式狀態暫存器訪問指令 142

6.4.5載入/存儲指令 143

6.4.6批量數據載入/存儲指令 145

6.4.7數據交換指令 146

6.4.8移位指令 146

6.4.9協處理器指令 148

6.4.10異常產生指令 150

6.5Thumb指令及套用 151

6.6本章小結 152

6.7本章習題 152

第7章程式設計基礎 155

7.1程式設計概述 156

7.1.1符號定義(SymbolDefinition)偽指令 156

7.1.2數據定義(DataDefinition)偽指令 158

7.1.3彙編控制(AssemblyControl)偽指令 161

7.2彙編語言的程式結構 167

7.2.1彙編語言程式的基本結構 167

7.2.2彙編語言的子程式調用 168

7.2.3彙編語言程式示例 169

7.3本章小結 172

7.4本章習題 172

第8章混合編程 175

8.1ATPCS介紹 176

8.1.1暫存器的使用規則 176

8.1.2數據棧的使用規則 177

8.1.3參數的傳遞規則 178

8.1.4子程式結果返回規則 179

8.1.5其他特定規則 179

8.1.6AAPCS擴展 181

8.2內嵌彙編器的使用 182

8.2.1內嵌的彙編指令用法 182

8.2.2內嵌的彙編器和armasm的區別 183

8.2.3在C/C++程式中使用內嵌的彙編指令 184

8.2.4內嵌彙編指令的套用舉例 186

8.2.5從彙編程式中訪問C變數 188

8.3在彙編程式中調用C/C++程式 189

8.3.1在彙編程式中調用C程式 189

8.3.2在彙編程式中調用C++程式 189

8.3.3彙編程式完成初始化功能 190

8.3.4在C/C++程式中調用彙編程式 191

8.4本章小結 192

8.5本章習題 192

第9章異常處理 193

9.1ARM異常處理概述 194

9.1.1ARM體系中的異常種類 194

9.1.2中斷向量與異常優先權 195

9.1.3各種異常狀態下使用的暫存器 195

9.2進入和退出異常的過程 196

9.2.1ARM處理器對異常的回響過程 196

9.2.2在應用程式中安裝異常處理程式 197

9.2.3在系統復位時安裝異常處理程式 197

9.2.4在C程式中安裝異常處理程式 198

9.3各類異常的具體描述 200

9.3.1FIQ和IRQ中斷 200

9.3.2復位異常 205

9.3.3未定義指令異常 205

9.3.4指令預取中止異常 205

9.3.5數據訪問中止異常 206

9.3.6SWI異常 206

9.4本章小結 206

9.5本章習題 207

第10章基本的ATPCS規則及其實踐 209

10.1暫存器的使用規則 210

10.2數據棧的使用規則 210

10.3參數傳遞的規則 211

10.4子程式結果返回規則 211

10.5ARM彙編指令編程實驗 211

10.5.1實驗目的 211

10.5.2實驗設備 212

10.5.3實驗原理 212

10.5.4實驗步驟 214

10.6C語言調用彙編語言編程 217

10.6.1實驗目的 217

10.6.2實驗設備 217

10.6.3實驗原理 217

10.6.4實驗步驟 218

10.6.5實驗思考 221

10.7彙編語言調用C語言編程 221

10.7.1實驗目的 221

10.7.2實驗設備 221

10.7.3實驗原理 221

10.7.4實驗步驟 221

10.7.5實驗思考 224

第四篇硬體接口及驅動系統設計

第11章嵌入式軟體編程基礎 227

11.1學習目標 228

11.2本章要點 228

11.3整體設計 228

11.3.1開發背景 228

11.3.2整體設計 228

11.3.3硬體平台 228

11.3.4交叉環境 229

11.3.5硬體驅動 229

11.3.6任務管理 229

11.3.7面向對象 230

11.4記憶體管理 230

11.4.1數據指針 230

11.4.2函式指針 231

11.4.3記憶體申請 231

11.4.4關鍵字const 231

11.4.5關鍵字volatile 233

11.4.6字長與位寬 233

11.4.7位元組對齊 233

11.4.8位元組順序 236

11.5人機界面 238

11.5.1LED 238

11.5.2按鍵 238

11.5.3LCD 238

11.5.4通信接口 238

11.6性能最佳化 238

11.6.1死循環 238

11.6.2延時 239

11.6.3使用宏 239

11.6.4關鍵字register 240

11.6.5內嵌彙編 240

11.6.6位操作 240

11.6.7define/typedef 241

11.7實踐:LED驅動系統 242

11.7.1需求分析 242

11.7.2詳細設計 242

11.7.3編碼設計 244

11.7.4調試與測試 245

11.7.5部署 245

11.8本章小結 245

11.9本章習題 245

第12章嵌入式系統的常用接口 247

12.1學習目標 248

12.2本章要點 248

12.3嵌入式系統常用接口概述 248

12.3.1嵌入式系統的程式設計方法 248

12.3.2嵌入式測試測量 249

12.3.3通用I/O口的工作原理與編程示例 250

12.4串口工作原理與編程示例 256

12.4.1異步串列通信及其協定 256

12.4.2串列通信的物理層標準 257

12.4.3S3C2410內置的UART控制器 258

12.4.4UART編程舉例 260

12.5中斷控制器工作原理與編程示例 267

12.5.1中斷源狀態暫存器 267

12.5.2中斷模式暫存器 267

12.5.3中斷禁止暫存器 268

12.5.4優先權暫存器 268

12.5.5中斷狀態暫存器 268

12.5.6中斷偏移暫存器 268

12.6DMA的工作原理與編程示例 272

12.6.1DMA的工作原理 272

12.6.2I/O接口到存儲器 274

12.6.3存儲器到I/O接口 274

12.6.4存儲器到存儲器 274

12.6.5S3C2410A的DMA控制器 274

12.6.6編程舉例 276

12.7實時時鐘的工作原理與編程示例 282

12.7.1實時時鐘的工作原理 282

12.7.2S3C2410A實時時鐘暫存器介紹 283

12.7.3實時時鐘計數器 283

12.7.4告警控制暫存器 284

12.7.5告警時間暫存器 285

12.8RTC循環復位暫存器 285

12.8.1實時時鐘暫存器 285

12.8.2S3C2410A實時時鐘編程舉例 286

12.9看門狗的工作原理與編程示例 288

12.9.1看門狗的工作原理 288

12.9.2S3C2410A的看門狗定時器暫存器 289

12.9.3看門狗編程舉例 290

12.10I2C工作原理與編程示例 292

12.10.1I2C工作原理 292

12.10.2I2C匯流排的基本結構 292

12.10.3雙向傳輸的接口特性 292

12.10.4I2C匯流排上的時鐘信號 293

12.10.5數據的傳送 293

12.10.6匯流排競爭的仲裁 294

12.10.7I2C匯流排的一次典型工作流程 295

12.10.8S3C2410A的I2C暫存器 295

12.10.9I2C匯流排控制暫存器 296

12.10.10I2C匯流排控制/狀態暫存器 296

12.10.11I2C匯流排地址暫存器 297

12.10.12移位數據暫存器 297

12.10.13I2C編程舉例 298

12.11本章小結 302

12.12本章習題 302

第13章通用I/O口的套用:跑馬燈實驗 303

13.1實驗目的 304

13.2實驗設備 304

13.3實驗原理 304

13.3.1S3C2440A的多功能I/O口 304

13.3.2連線埠選擇 309

13.3.3連線埠控制暫存器 309

13.4實驗步驟 311

13.4.1設定暫存器 311

13.4.2跑馬燈的實現 311

13.4.3編譯工程 312

13.4.4建立實驗環境 312

13.4.5下載程式運行 312

13.5實驗思考 313

第14章中斷處理程式設計 315

14.1實驗目的 316

14.2實驗設備 316

14.3實驗原理 316

14.3.1概述 316

14.3.2中斷模式 316

14.3.3PSR的F位和I位 316

14.3.4Pending暫存器 317

14.3.5INTMSK中斷禁止暫存器 317

14.3.6中斷源 317

14.3.7中斷優先權產生模組 319

14.3.8控制中斷的暫存器 319

14.4實驗步驟 320

14.4.1設定I/O口 320

14.4.2中斷暫存器設定 321

14.4.3中斷服務程式的編寫 321

14.4.4編譯工程 322

14.4.5建立實驗環境 323

14.4.6下載程式運行 323

14.5實驗思考 323

第15章定時器的套用 325

15.1實驗目的 326

15.2實驗設備 326

15.3實驗原理 326

15.3.1概述 326

15.3.2定時器操作 327

15.3.3定時器暫存器 331

15.4實驗步驟 331

15.4.1打開定時器中斷 331

15.4.2設定定時器中斷服務程式的入口地址 332

15.4.3設定定時器暫存器並啟動定時器 332

15.4.4 定時器中斷服務子程式 332

15.4.5判斷定時器中斷情況 333

15.4.6編譯工程 334

15.4.7建立實驗環境 334

15.4.8下載程式並運行 334

15.5實驗思考 335

第16章ADC接口的套用 337

16.1實驗目的 338

16.2實驗設備 338

16.3實驗原理 338

16.3.1概述 338

16.3.2S3C2440A具備的ADC 338

16.3.3ADC轉換時間的計算 339

16.3.4ADC解析度的計算 339

16.3.5採樣保持器 339

16.3.6ADC的相關暫存器 340

16.4實驗步驟 340

16.4.1硬體連線 340

16.4.2得到預分頻值 340

16.4.3讀取A/D轉換數值子程式 340

16.4.4編譯工程 341

16.4.5建立實驗環境 341

16.4.6下載程式並運行 342

16.5實驗思考 342

第17章LCD接口的編程 343

17.1實驗目的 344

17.2實驗設備 344

17.3實驗原理 344

17.3.1概述 344

17.3.2S3C2440A的內部LCD控制器介紹 344

17.3.3LCD控制器的外部接口信號 345

17.3.4LCD控制器的操作 346

17.3.5LCD控制器專用暫存器 348

17.4實驗步驟 352

17.4.1I/O口LCD功能設定 352

17.4.2LCD初始化程式 352

17.4.3LCD測試程式 353

17.4.4編譯工程 354

17.4.5建立實驗環境 355

17.4.6下載程式並運行 355

17.5實驗思考 355

第18章觸控螢幕的套用 357

18.1實驗目的 358

18.2實驗設備 358

18.3實驗原理 358

18.3.1概述 358

18.3.2觸控螢幕的基本原理 358

18.3.3觸控螢幕的相關暫存器 359

18.4實驗步驟 361

18.4.1硬體連線 361

18.4.2暫存器的設定 362

18.4.3觸控螢幕中斷服務程式 362

18.4.4編譯工程 363

18.4.5建立實驗環境 363

18.4.6下載程式並運行 364

18.5實驗思考 364

第19章I2C接口的編程 365

19.1實驗目的 366

19.2實驗設備 366

19.3實驗原理 366

19.3.1概述 366

19.3.2I2C匯流排通用傳輸格式 366

19.3.3S3C2440A的I2C接口 368

19.4實驗步驟 371

19.4.1硬體連線 371

19.4.2I/O連線埠I2C功能設定 372

19.4.3中斷使能 372

19.4.4初始化I2C接口 372

19.4.5寫入數據子程式 372

19.4.6讀出數據子程式 373

19.4.7中斷處理子程式 374

19.4.8編譯工程 375

19.4.9建立實驗環境 375

19.4.10下載程式運行 375

19.5實驗思考 376

第20章UART異步串列接口的套用 377

20.1實驗目的 378

20.2實驗設備 378

20.3實驗原理 378

20.3.1概述 378

20.3.2UART操作 379

20.3.3UART暫存器 382

20.4實驗步驟 383

20.4.1電路連線和I/O口設定 383

20.4.2UART的初始化 384

20.4.3串口0傳送中斷測試 385

20.4.4串口0接收中斷測試 385

20.4.5編譯工程 386

20.4.6建立實驗環境 386

20.4.7下載程式運行 386

20.5實驗思考 387

第21章CAN匯流排通信實驗 389

21.1實驗目的 390

21.2實驗設備 390

21.3實驗原理 390

21.3.1概述 390

21.3.2CAN匯流排的技術特點 390

21.3.3CAN的分層結構 391

21.4實驗步驟 392

21.4.1電路連線 392

21.4.2初始化函式 392

21.4.3MCP2510寫函式 393

21.4.4MCP2510讀函式 393

21.4.5指定地址暫存器修改函式 394

21.4.6CAN通信主體函式 394

21.4.7編譯工程 395

21.4.8建立實驗環境 395

21.4.9下載程式並運行 395

21.5實驗思考 396

第五篇嵌入式系統啟動套用分析與設計

第22章ARM系統啟動套用分析與設計 399

22.1Cortex-M3-STM32啟動代碼分析 400

22.1.1STM32概述 400

22.1.2啟動代碼分析 400

22.2ARM9-S3C2440-U-Boot移植開發 408

22.2.1U-Boot工程簡介 408

22.2.2目錄結構 409

22.2.3Makefile分析 410

22.2.4流程分析 410

22.2.5配置編譯 411

22.2.6移植開發 414

22.2.7調試測試 418

22.2.8常用命令 418

22.2.9環境變數 420

22.3ARM-Cortex-A8-S5PV210-uboot分析 421

22.3.1源碼目錄結構 421

22.3.2啟動代碼start.s分析 423

22.3.3啟動代碼lowlevel.s分析 439

22.3.4啟動代碼彙編部分總結 453

22.3.5硬體啟動過程 454

22.3.6記憶體分配 455

22.4ARM-Cortex-A9-多核介紹 456

22.4.1SamsungExynos4412 456

22.4.2NvidiaTegra2介紹 457

22.4.3ARM-Cortex-A9多核啟動流程 457

22.4.4LinuxKernel對多核心的支持 457

22.4.5軟體識別目前所在的處理器 458

22.4.6多核心的開機 458

22.4.7BootRom 458

22.4.8多核U-Boot 459

22.5本章小結 471

22.6本章習題 471

第六篇綜合項目篇

第23章基於ARM的嵌入式工業控制系統設計 475

23.1總體需求 476

23.1.1部署結構 476

23.1.2主機業務需求 477

23.1.3終端業務需求 478

23.2主機設計 479

23.2.1主機工作流程 480

23.2.2設定終端模組 480

23.2.3打開連線埠模組 481

23.2.4相關業務模組 482

23.2.5主機相關任務描述 483

23.2.6相關定時器舉例 486

23.3通信協定分層 486

23.3.1物理層 486

23.3.2數據鏈路層 486

23.3.3套用層 488

23.4PDU集 490

23.4.1主機召喚終端狀態 491

23.4.2終端返回本機狀態 491

23.4.3主機設定終端狀態 492

23.4.4終端返回設定後的結果 492

23.4.5終端傳送自身狀態 492

23.4.6主機確認收到終端返回 493

23.4.7主機獲得終端的設定值 493

23.4.8終端返回設定後的結果 494

23.4.9確認網路狀態 494

23.4.10確認網路狀態返回 495

23.5套用層異常控制 495

23.6大小端控制 495

23.7數據字典 496

23.8項目總結 496

23.9本章小結 497

23.10本章習題 497

相關詞條

相關搜尋

熱門詞條

聯絡我們