人民郵電出版社教材
書 名 嵌入式系統技術與設計(第2版)叢 書 名 21世紀高等教育計算機規劃教材
標準書號 ISBN 978-7-115-29370-1
作 者 華清遠見教育集團 劉洪濤 苗德行 編著
責任編輯 李海濤
開 本 16 開
印 張 18.25
字 數 492 千字
頁 數 282 頁
裝 幀 平裝
版 次 第2版第1次
二版時間 2012年11月
本 印 次 2012年11月
首 印 數 -- 冊
定 價 36.00 元
內容提要
本書在全面介紹ARM處理器的體系結構、編程模型、指令系統和最新的RealView MDK開發環境的同時,以英蓓特公司的EduKit-Ⅲ實驗教學系統為平台,以ARM9處理器S3C2410為核心,詳細介紹了系統的設計及相關接口的操作,並提供了大量的實驗例程。本書最後詳細講解了嵌入式Linux系統各個組成部分在教學系統上的移植過程。本書可作為高等院校計算機、電子信息、通信工程、自動化等專業嵌入式系統教程的教材,也可作為相關嵌入式系統開發人員的參考書。
目錄
第1章 嵌入式系統概述 11.1 嵌入式系統簡介 1
1.2 嵌入式系統發展趨勢 1
1.3 嵌入式系統的硬體和軟體特徵 2
1.4 ARM系列處理器簡介 4
1.4.1 ARM7處理器系列 5
1.4.2 ARM9處理器系列 5
1.4.3 ARM9E處理器系列 6
1.4.4 ARM10處理器系列 6
1.4.5 ARM10E處理器系列 6
1.4.6 ARM11處理器系列 7
1.4.7 SecureCore處理器系列 7
1.4.8 StrongARM和Xscale處理器系列 7
1.4.9 Cortex和MPCore處理器系列 7
1.4.10 各種處理器系列之間的比較 7
本章小結 8
思考題 8
第2章 ARM體系結構與指令集 9
2.1 ARM體系結構的特點 9
2.2 ARM處理器工作模式 9
2.3 暫存器組織 10
2.3.1 通用暫存器 11
2.3.2 狀態暫存器 12
2.3.3 程式計數器 14
2.4 流水線 15
2.4.1 流水線的概念與原理 15
2.4.2 流水線的分類 15
2.4.3 影響流水線性能的因素 16
2.5 ARM存儲系統 17
2.5.1 協處理器 18
2.5.2 存儲管理單元 18
2.5.3 高速緩衝存儲器 19
2.6 異常 19
2.6.1 異常的種類 19
2.6.2 異常的優先權 20
2.6.3 構建異常向量表 20
2.6.4 異常回響流程 22
2.6.5 從異常處理程式中返回 23
2.7 ARM處理器的定址方式 24
2.7.1 數據處理指令定址方式 24
2.7.2 記憶體訪問指令定址方式 25
2.8 ARM處理器的指令集 28
2.8.1 數據操作指令 28
2.8.2 乘法指令 33
2.8.3 Load/Store指令 35
2.8.4 單數據交換指令 40
2.8.5 跳轉指令 41
2.8.6 狀態操作指令 43
2.8.7 協處理器指令 45
2.8.8 異常產生指令 46
本章小結 48
思考題 48
第3章 ARM彙編語言程式設計 49
3.1 ARM/Thumb混合編程 49
3.1.1 Thumb指令的特點及實現 49
3.1.2 ARM/Thumb互動工作基礎 50
3.1.3 ARM/Thumb互動子程式 52
3.2 ARM彙編器支持的偽操作 57
3.2.1 偽操作概述 57
3.2.2 符號定義偽操作 57
3.2.3 數據定義偽操作 60
3.2.4 彙編控制偽操作 64
3.2.5 雜項偽操作 68
3.3 ARM彙編器支持的偽指令 75
3.3.1 ADR偽指令 75
3.3.2 ADRL偽指令 75
3.3.3 LDR偽指令 76
3.4 彙編語言與C/C++的混合編程 77
3.4.1 內聯彙編 77
3.4.2 嵌入型彙編 79
3.4.3 彙編代碼訪問C全局變數 82
3.4.4 C++中使用C頭檔案 82
3.4.5 混合編程調用舉例 83
本章小結 87
思考題 87
第4章 嵌入式軟體基礎實驗 88
4.1 Realview MDK簡介 88
4.2 ULINK2仿真器簡介 89
4.3 使用Realview MDK創建一個工程 89
4.3.1 選擇工具集 89
4.3.2 創建工程並選擇處理器 90
4.3.3 建立一個新的源檔案 91
4.3.4 工程中檔案的加入 91
4.3.5 工程基本配置 91
4.3.6 工程的編譯連結 96
4.4 嵌入式軟體開發基礎實驗 96
4.4.1 ARM彙編指令實驗一 96
4.4.2 ARM彙編指令實驗二 101
4.4.3 Thumb彙編指令實驗 102
4.4.4 ARM處理器工作模式實驗 103
4.4.5 C語言實驗程式一 106
4.4.6 C語言實驗程式二 108
4.4.7 彙編語言與C語言相互調用
實例 111
本章小結 113
第5章 ARM套用系統設計 114
5.1 SoC系統概述 114
5.2 S3C2410概述 114
5.3 S3C2410系統功能電路設計 115
5.3.1 概述 115
5.3.2 電源電路 117
5.3.3 時鐘電路 117
5.3.4 復位電路 118
5.3.5 JTAG接口電路 118
5.3.6 Nor Flash電路 119
5.3.7 Nand Flash電路 121
5.3.8 SDRAM電路 123
5.3.9 串列接口電路 125
5.3.10 乙太網接口電路 126
5.3.11 蜂鳴器電路及其PWM電路 126
5.3.12 按鍵電路 126
5.3.13 實時時鐘 126
5.3.14 A/D轉換器電路 128
5.3.15 IIS音頻接口電路 128
5.3.16 SD卡接口電路 129
5.3.17 LCD電路 129
5.3.18 USB接口電路 130
5.3.19 印製電路板設計的注意事項 130
本章小結 131
思考題 131
第6章 S3C2410系統接口操作原理及實驗 132
6.1 I/O接口實驗 132
6.1.1 實驗目的 132
6.1.2 實驗設備 132
6.1.3 實驗內容 132
6.1.4 實驗原理 133
6.1.5 實驗操作步驟 134
6.1.6 實驗參考程式 135
6.2 串口通信實驗 136
6.2.1 實驗目的 136
6.2.2 實驗設備 136
6.2.3 實驗內容 136
6.2.4 實驗原理 136
6.2.5 實驗操作步驟 141
6.2.6 實驗參考程式 142
6.3 中斷實驗 142
6.3.1 實驗目的 142
6.3.2 實驗設備 143
6.3.3 實驗內容 143
6.3.4 實驗原理 143
6.3.5 實驗操作步驟 147
6.3.6 實驗參考程式 149
6.4 鍵盤控制實驗 151
6.4.1 實驗目的 151
6.4.2 實驗設備 151
6.4.3 實驗內容 151
6.4.4 實驗原理 151
6.4.5 實驗設計 153
6.4.6 實驗操作步驟 154
6.4.7 實驗參考程式 154
6.5 實時時鐘實驗 155
6.5.1 實驗目的 155
6.5.2 實驗設備 155
6.5.3 實驗內容 156
6.5.4 實驗原理 156
6.5.5 實驗設計 157
6.5.6 實驗操作步驟 158
6.5.7 實驗參考程式 159
6.6 看門狗實驗 160
6.6.1 實驗目的 160
6.6.2 實驗設備 160
6.6.3 實驗內容 160
6.6.4 實驗原理 161
6.6.5 實驗設計 162
6.6.6 實驗操作步驟 163
6.6.7 實驗參考程式 164
6.7 IIC串列通信實驗 165
6.7.1 實驗目的 165
6.7.2 實驗設備 165
6.7.3 實驗內容 165
6.7.4 實驗原理 165
6.7.5 實驗設計 170
6.7.6 實驗操作步驟 171
6.7.7 實驗參考程式 171
6.8 A/D轉換實驗 173
6.8.1 實驗目的 173
6.8.2 實驗設備 173
6.8.3 實驗內容 173
6.8.4 實驗原理 174
6.8.5 實驗設計 176
6.8.6 實驗操作步驟 176
6.8.7 實驗參考程式 177
6.9 Nand Flash讀寫實驗 178
6.9.1 實驗目的 178
6.9.2 實驗設備 178
6.9.3 實驗內容 178
6.9.4 實驗原理 178
6.9.5 實驗設計 182
6.9.6 實驗操作步驟 182
6.9.7 實驗參考程式 182
本章小結 184
第7章 嵌入式作業系統及開發簡述 185
7.1 嵌入式Linux簡介 185
7.2 構建嵌入式Linux開發環境 185
7.2.1 交叉開發環境介紹 186
7.2.2 安裝交叉開發工具 186
7.2.3 主機交叉開發環境配置 188
7.3 Bootloader 190
7.3.1 Bootloader的種類 191
7.3.2 U-Boot工程簡介 192
7.3.3 U-Boot編譯 192
7.3.4 U-Boot的移植思路 195
7.3.5 U-Boot的燒寫 196
7.3.6 U-Boot的常用命令 197
7.4 Linux核心與移植 202
7.4.1 Linux核心結構 203
7.4.2 Linux核心配置系統 204
7.4.3 Linux核心編譯選項 209
7.5 移植Linux 2.6核心到S3C2410平台簡述 213
7.5.1 移植的概念 213
7.5.2 設備驅動移植 217
7.5.3 Nand Flash移植 218
7.6 嵌入式檔案系統構建 220
7.6.1 檔案系統簡介 220
7.6.2 嵌入式檔案系統的特點和種類 220
7.6.3 檔案系統的組成 226
7.6.4 利用BusyBox構建檔案系統 229
7.6.5 利用NFS調試新建的檔案系統 232
本章小結 234
思考題 234
第8章 嵌入式Linux實驗 235
8.1 搭建嵌入式Linux開發環境 235
8.1.1 實驗目的 235
8.1.2 實驗環境 235
8.1.3 實驗步驟 236
8.2 移植U-Boot實驗 238
8.2.1 實驗目的 238
8.2.2 實驗環境 238
8.2.3 實驗步驟 238
8.3 燒寫U-Boot實驗 247
8.3.1 實驗目的 247
8.3.2 實驗環境 248
8.3.3 實驗步驟 248
8.4 添加U-Boot命令實驗 250
8.4.1 實驗目的 250
8.4.2 實驗環境 250
8.4.3 實驗步驟 250
8.5 Linux核心編譯與下載實驗 250
8.5.1 實驗目的 250
8.5.2 實驗環境 250
8.5.3 實驗步驟 251
8.6 Linux核心移植實驗 252
8.6.1 CS8900A網卡驅動移植 252
8.6.2 Nand Flash驅動移植 254
8.6.3 Yaffs2檔案系統移植 256
8.6.4 LCD驅動移植 257
8.6.5 USB驅動移植 258
8.7 檔案系統製作實驗 259
8.7.1 實驗目的 259
8.7.2 實驗環境 259
8.7.3 實驗步驟 259
8.8 編寫Linux核心模組實驗 264
8.8.1 實驗目的 264
8.8.2 實驗環境 264
8.8.3 實驗步驟 264
8.9 編寫帶參數的Linux核心模組實驗 265
8.9.1 實驗目的 265
8.9.2 實驗環境 265
8.9.3 實驗步驟 265
8.10 編寫Linux字元驅動程式之LED實驗 265
8.10.1 實驗目的 265
8.10.2 實驗環境 266
8.10.3 實驗步驟 266
8.11 編寫Linux字元驅動程式之PWM實驗 269
8.11.1 實驗目的 269
8.11.2 實驗環境 269
8.11.3 實驗步驟 270
8.12 編寫Linux字元驅動程式之鍵盤掃描實驗 272
8.12.1 實驗目的 272
8.12.2 實驗環境 273
8.12.3 實驗步驟 273
本章小結 281
參考文獻 282