內容提要
《ARM嵌入式系統原理與開發》從實際套用的角度出發,全面介紹嵌入式系統相關的概念、基於ARM系統的嵌入式開發模式及編程、ARM體系結構、ARM彙編及C語言編程、基於S3C2410的硬體結構與接口編程、嵌入式Linux原理及編程、基於嵌入式系統的套用開發方法及套用實例,最後結合具體實驗箱給出了嵌入式系統實驗指導等方面的知識。
作者簡介
王誠,南京郵電大學通信學院副教授,2004年開始嵌入式系統方面的教學工作,先後開設《單片機原理》、《DSP與嵌入式系統》、《嵌入式系統》、《嵌入式系統實驗》等課程。指導學生實踐性環境如軟體設計、課程設計、學生創新實踐、畢業設計,內容都和嵌入式系統相關。涉及的項目有智慧型家居系統、智慧社區、智慧型電力控制、開放式實驗室系統等。具有豐富的嵌入式系統方面的教學和實踐能力。在2009年01月,採用嵌入式系統獲得南郵教學成果獎《適應形勢大膽變革——新環境下學生綜合實踐能力培養方法的研究和探索》,並作為南郵通信學院嵌入式系統的教學負責人,主持嵌入式系統課程的教學大綱、實驗大綱的編寫。
目錄
第1章 嵌入式系統概述 1
1.1 嵌入式系統的概念 1
1.2 嵌入式系統的歷史 2
1.3 嵌入式系統的組成 4
1.3.1 嵌入式系統的組成結構 4
1.3.2 嵌入式處理器 8
1.3.3 典型的嵌入式作業系統 9
1.4 嵌入式系統的特點 12
1.5 嵌入式系統的套用 12
1.6 嵌入式系統的發展趨勢 16
思考題與習題 18
第2章 ARM體系結構與指令集 19
2.1 ARM處理器基礎 19
2.1.1 ARM體系架構發展 19
2.1.2 ARM處理器核心系列 20
2.1.3 ARM體系架構分析 24
2.1.4 ARM處理器模式 27
2.1.5 ARM內部暫存器 27
2.1.6 ARM體系的異常處理 31
2.1.7 ARM體系的存儲系統 33
2.2 ARM指令系統 34
2.2.1 ARM指令格式 34
2.2.2 ARM指令定址方式 35
2.2.3 ARM指令集 38
2.3 Thumb指令系統 48
2.3.1 Thumb狀態暫存器組織 49
2.3.2 Thumb指令集 50
思考題與習題 59
第3章 ARM彙編語言程式設計 60
3.1 ARM彙編的語句格式 60
3.1.1 符號命名規則 60
3.1.2 ARM彙編語言偽操作 60
3.1.3 ARM彙編語言偽指令 61
3.2 ARM彙編的程式結構 62
3.3 ARM彙編語言程式設計舉例 64
3.4 ARM C語言基礎及混合編程 65
3.4.1 ATPCS概述 66
3.4.2 基本ATPCS 66
3.4.3 支持ARM程式和Thumb程式混合使用的ATPCS 68
3.4.4 C語言及彙編語言混合編程 68
思考題與習題 74
第4章 基於S3C2410的硬體結構與接口編程 75
4.1 S3C2410簡介 75
4.1.1 S3C2410X集成的主要片上功能 76
4.1.2 S3C2410X的特點 77
4.2 S3C2410X的存儲器及其控制 81
4.2.1 S3C2410X的存儲器控制器 81
4.2.2 NAND Flash控制器 82
4.3 時鐘和電源管理 85
4.4 DMA 85
4.4.1 DMA請求源 86
4.4.2 DMA工作過程 86
4.4.3 基本的DMA時序 87
4.4.4 DMA傳輸尺寸 87
4.4.5 DMA專用暫存器 88
4.4.6 DMA編程實例 94
4.5 I/O連線埠 97
4.5.1 S3C2410X I/O連線埠的工作機制 97
4.5.2 S3C2410X連線埠的編程實例 106
4.6 定時器 106
4.6.1 S3C2410X定時器概述 106
4.6.2 S3C2410X定時器的工作原理 107
4.6.3 PWM輸出控制直流電動機編程實例 116
4.7 異步串口通信 119
4.7.1 異步串口通信概述 119
4.7.2 S3C2410X的異步串列口簡介 121
4.7.3 S3C2410X UART工作原理 123
4.7.4 S3C2410X UART編程實例 130
4.8 A/D轉換器 133
4.8.1 A/D轉換器簡介 133
4.8.2 A/D轉換的重要指標 135
4.8.3 ARM自帶的10位A/D轉換器 136
4.8.4 A/D轉換器在擴展版的接法 138
4.8.5 A/D編程實例 138
4.9 ARM中斷 139
4.10 LCD 149
4.10.1 LCD原理 149
4.10.2 LCD的驅動控制 150
4.10.3 與ARM自帶LCD驅動器有關的暫存器 152
4.10.4 LCD編程實例 160
4.11 觸控螢幕 164
4.11.1 觸控螢幕的工作原理 164
4.11.2 觸控螢幕的控制 165
4.11.3 編程要點 167
4.11.4 S3C2410X中觸控螢幕接口的相關暫存器 167
4.11.5 觸控螢幕編程實例 168
4.12 鍵盤及LED控制 172
4.12.1 鍵盤及LED的接口原理 172
4.12.2 I2C匯流排 179
4.12.3 鍵盤及LED控制編程實例 187
第5章 嵌入式Linux作業系統 197
5.1 作業系統簡介 197
5.1.1 作業系統 197
5.1.2 嵌入式作業系統 198
5.2 嵌入式Linux作業系統 199
5.2.1 Linux介紹 200
5.2.2 Linux作為嵌入式作業系統的優勢 202
5.2.3 進程管理 203
5.2.4 存儲管理 219
5.2.5 檔案系統 227
5.2.6 設備管理 245
5.2.7 嵌入式Linux引導過程 261
5.3 基於嵌入式Linux開發套用實例 266
5.3.1 Linux啟動流程 266
5.3.2 從“零”到一套精簡的Linux平台 267
5.3.3 從x86平台到嵌入式平台 272
5.3.4 Linux平台上用戶空間程式與核心互動方式 273
5.3.5 Linux平台上網路工具工作框架 277
思考題與習題 282
第6章 嵌入式系統套用開發及實例 283
6.1 引言 283
6.2 軟體工程及嵌入式軟體工程 285
6.2.1 概述 285
6.2.2 軟體需求 287
6.2.3 軟體設計 288
6.2.4 統一建模語言 289
6.2.5 嵌入式軟體編程 293
6.3 基於ECX嵌入式平台的旅遊系統套用實例 294
6.3.1 套用實例背景 294
6.3.2 設計目標 295
6.3.3 系統總體設計 295
6.4 基於Android作業系統平台的點餐系統套用實例 312
6.4.1 Android簡介 312
6.4.2 Android架構 313
6.4.3 Android未來及前景 314
6.4.4 Android應用程式基礎 315
6.4.5 Android開發環境搭建 317
6.4.6 Android工程目錄結構 318
6.4.7 點餐系統實現 319
思考題與習題 328
第7章 嵌入式系統開發的實驗基礎 329
7.1 引言 329
7.2 ADS集成開發環境簡介 329
7.2.1 ADS軟體組成 329
7.2.2 使用CodeWarrior IDE 333
7.2.3 使用AXD IDE 340
7.3 基於嵌入式Linux系統的軟體開發基礎 344
7.3.1 嵌入式Linux系統介紹 344
7.3.2 Linux常用命令介紹 344
7.3.3 Linux系統下的vi編輯器 347
7.4 嵌入式Linux下交叉開發環境的建立與軟體開發過程 348
7.4.1 嵌入式教學實驗系統簡介 349
7.4.2 嵌入式交叉開發環境的建立 352
7.4.3 基於Linux的應用程式的開發步驟 359
思考題與習題 361
參考文獻 362