本書是《嵌入式系統設計與實例開發》一書的第3版,其特點是體系結構完整、基本概念清晰,易讀易學。本書主要以ARM9嵌入式微處理器與and#61549;C/OS-II實時操作系統作為教學對象,分別介紹了嵌入式系統的概念及應用領域,嵌入式系統軟硬件及設計方法基本知識,ARM微處理器體系結構與匯編語言程序設計,and#61549;C/OS-II實時操作系統分析,嵌入式系統硬件接口設計,嵌入式系統軟件設計與編程以及嵌入式系統的應用開發案例等知識體系。
本書定位為教材,適合作為計算機、軟件、電子信息工程和自動化等專業本科生或研究生《嵌入式系統》、《嵌入式系統設計》、《嵌入式系統設計導論》等課程的教材使用。
本書配套較完整的課程大綱、PPT講稿,這部分內容可以從清華大學出版社網站(www.tup.tsinghua
.edu.cn)下載。
前 言
時間如白駒過隙,距2003年本書第2版的出版已有4年多時間了。期間,第2版已第10次印刷,而我們卻一直未能對第2版進行系統性的修訂和完善,實在有愧于各位讀者的厚愛。這4年中我們收到了許多讀者的郵件和電話,他們對本書第2版提出了很多好的建議和意見。此外,我們自己在研究生《嵌入式系統概論》和本科生《嵌入式系統設計導論》的教學實踐中,也積累了較豐富的實踐教學經驗,這些都為本書第3版的修訂工作奠定了基礎。
近幾年,嵌入式系統技術得到了廣泛的應用和爆發性的增長,普適計算、無線傳感器網絡、可重構計算等新興技術的出現又為嵌入式系統技術的研究與應用注入了新的活力。智能手機、信息家電、汽車電子、家用機器人……嵌入式系統已“無處不在”。產業繁榮的背后帶來的是隱藏的危機,作為“世界制造中心”的中國,在全球產業鏈中的地位舉足輕重,但中國企業缺乏核心技術,勞動密集型產業過多也是不爭的事實。如何從“制造大國”向“制造強國”轉變已成為中國企業界共同面對的挑戰。在這個轉變過程中,加快發展制造業“心臟”的嵌入式芯片和軟件技術已成為眾多企業家的共識,而普及嵌入式技術、加快嵌入式技術人才的培養則是原動力。
2004年,ACM和IEEE聯合制定了新版的計算機學科的課程體系(2004版),其中一個主要的改革就是把“Embedded System”課程列為本科生的專業基礎課程,并且給出了基本的課程體系。同時,美國卡內基?梅隆大學、伯克利大學等國外高校也不斷地在完善他們的嵌入式教育體系,歐盟也推出了面向歐盟高校和企業的嵌入式研究計劃,這些信息為本書第3版的內容體系結構提供了指導和參考。
本書第3版定位為教材,適合作為本科生或研究生《嵌入式系統概論》、《嵌入式系統設計》、《嵌入式系統設計導論》等課程的教材使用,其特點是體系結構完整、基本概念清晰,易讀易學。與第2版相比,本書第3版做了較大的修改和完善,主要包括以下 方面:
?在體系結構上,以ARM9嵌入式微處理器與?C/OS-II實時操作系統作為教學內容,新增加了第3章ARM微處理器體系結構與指令集和第4章?C/OS-II嵌入式實時操作系統內核分析兩部分內容,使本書的體系結構更加完整。
?為了兼顧不同專業的學生學習使用,增加了第2章嵌入式系統的基礎知識,主要介紹嵌入式系統硬件體系結構、嵌入式軟件與實時操作系統、嵌入式系統內核設計與開發方法等基礎知識,擴大了本書的適用范圍。
?在第5章嵌入式系統硬件平臺與接口設計部分,以ARM9微處理器為設計平臺,在內容上做了較大的修訂和完善,更加符合目前國內嵌入式系統教學的主流情況。
?在第8章嵌入式系統的應用開發案例部分,介紹了嵌入式數控系統的設計,這是一個較完整的嵌入式產品設計案例,具有較大的參考價值。
?第1章、第6章、第7章保留了原書的特色,也進行了內容的更新和修訂。
參加本書第3版修訂工作的有王田苗、魏洪興、陳友東、陶永、劉淼等,其中王田苗、魏洪興負責統稿。在修訂過程中,得到了山東大學賈智平教授、北京航空航天大學康一梅教授、清華大學湛衛軍博士和北京航空航天大學ITM實驗室全體老師及研究生的大力支持和幫助,大連理工大學金建設教授提供了第8章嵌入式智能家居的開發案例,北京博創科技提供了實驗用的UP-NETARM系列教學平臺和附錄B的部分實驗體系,在此向他們表示誠摯的感謝。
由于作者知識所限,書中不足之處在所難免,懇請各位專家和讀者賜正。
王田苗 魏洪興
于北京航空航天大學新主樓
ITM實驗室(http://itm.buaa.edu.cn)
2007年10月15日
目 錄
第1章 嵌入式系統概述1
1.1 嵌入式系統簡介1
1.1.1 什么是嵌入式系統1
1.1.2 嵌入式系統的特點6
1.1.3 嵌入式系統的組成7
1.1.4 嵌入式系統的分類13
1.2 嵌入式系統的應用領域17
1.3 嵌入式系統在機電控制方面的應用19
1.4 嵌入式系統的現狀和發展趨勢21
1.4.1 嵌入式系統的現狀21
1.4.2 未來嵌入式系統的發展趨勢22
練習題24
第2章 嵌入式系統的基本知識25
2.1 嵌入式系統硬件知識25
2.1.1 嵌入式微處理器簡介25
2.1.2 嵌入式微處理器體系結構26
2.1.3 嵌入式微處理器的分類32
2.2 嵌入式系統軟件知識36
2.2.1 嵌入式軟件概述36
2.2.2 嵌入式軟件體系結構37
2.2.3 嵌入式操作系統的分類39
2.2.4 嵌入式操作系統的幾個重要概念42
2.2.5 常見的實時嵌入式操作系統介紹44
2.3 嵌入式系統中的選型原則和設計工具48
2.3.1 嵌入式系統的選型原則48
2.3.2 嵌入式系統的設計工具51
2.3.3 嵌入式系統開發模式53
2.3.4 嵌入式軟件開發工具55
練習題61
第3章 ARM微處理器體系結構與指令集62
3.1 ARM嵌入式微處理器概述62
3.1.1 嵌入式微處理器簡介62
3.1.2 ARM微處理器概述63
3.1.3 ARM架構版本與產品系列64
3.2 ARM微處理器體系結構67
3.2.1 ARM微處理器體系結構概述67
3.2.2 流水線73
3.2.3 ARM的寄存器組織76
3.2.4 ARM處理器模式81
3.2.5 異常81
3.3 ARM處理器的指令系統86
3.3.1 ARM指令系統概述86
3.3.2 ARM指令的條件域88
3.3.3 ARM指令的尋址方式88
3.3.4 ARM指令集90
3.3.5 Thumb指令集98
3.4 ARM處理器編程簡介99
3.4.1 ARM匯編語言的文件格式99
3.4.2 ARM匯編語言的語句格式99
3.4.3 C語言與匯編語言的混合編程101
3.5 ARM處理器初始化分析107
3.5.1 嵌入式系統初始化流程107
3.5.2 ARM嵌入式處理器的初始化分析110
練習題114
第4章 ?C/OS-Ⅱ嵌入式實時操作系統內核分析115
4.1 ?C/OS-II實時操作系統簡介115
4.2 ?C/OS-II的內核結構分析116
4.2.1 多任務116
4.2.2 任務調度120
4.2.3 中斷與時間管理123
4.2.4 ?C/OS-II的初始化125
4.3 ?C/OS-II的任務通信和同步126
4.3.1 任務互斥和同步126
4.3.2 任務間的通信129
4.3.3 μC/OS-II的任務通信機制130
4.4 ?C/OS-II在S3C2410微處理器上的移植分析134
4.4.1 移植μC/OS-II的基本要求134
4.4.2 設置與處理器和編譯器相關的代碼136
4.4.3 用C語言編寫6個操作系統相關的函數137
4.4.4 用匯編語言編寫4個與處理器相關的函數140
4.4.5 移植測試143
練習題144
第5章 嵌入式系統硬件平臺與接口設計145
5.1 基于S3C2410A微處理器的硬件平臺體系結構145
5.1.1 S3C2410A微處理器簡介145
5.1.2 基于S3C2410A微處理器的硬件平臺結構146
5.2 存儲器系統設計148
5.2.1 存儲器系統概述148
5.2.2 S3C2410A的存儲系統設計151
5.3 串行接口設計154
5.3.1 串行通信的基本概念154
5.3.2 通用異步收發器(UART)159
5.4 I/O接口設計162
5.4.1 GPIO接口設計162
5.4.2 A/D轉換器164
5.5 人機交互接口169
5.5.1 LCD和觸摸屏接口設計169
5.5.2 觸摸屏接口設計172
5.5.3 鍵盤接口設計173
5.6 嵌入式系統的網絡接口設計178
5.6.1 以太網接口的基本知識178
5.6.2 嵌入式以太網接口的實現182
5.6.3 基于ARM的RTL8019AS網絡接口芯片的設計183
5.7 嵌入式系統的調試接口ARM JTAG的設計188
5.7.1 ARM的JTAG調試接口189
5.7.2 JTAG的基本知識190
練習題194
第6章 基于?C/OS-II的軟件體系結構設計195
6.1 基于?C/OS-II擴展RTOS的體系結構195
6.2 建立文件系統197
6.2.1 文件系統簡介197
6.2.2 文件系統的實現過程205
6.2.3 文件系統相關的API函數功能詳解208
6.3 外設及驅動程序210
6.3.1 串行口210
6.3.2 液晶顯示驅動程序211
6.3.3 鍵盤驅動程序212
6.4 網絡通信協議213
6.4.1 基于ARM和?C/OS-II的TCP/IP協議213
6.4.2 網絡編程接口214
6.5 圖形用戶接口(GUI)函數217
6.5.1 基于Unicode的漢字字庫217
6.5.2 Unicode字庫的顯示及相關函數222
6.5.3 基本繪圖函數223
6.5.4 典型的控件231
6.6 系統的消息隊列241
6.6.1 系統消息241
6.6.2 消息相關函數242
6.7 其他實用的應用程序接口(API)函數243
練習題248
第7章 嵌入式軟件應用程序實例249
7.1 建立基于?C/OS-II的應用程序249
7.1.1 在?C/OS-II系統上運行的應用程序的結構249
7.1.2 系統的消息循環252
7.1.3 創建新任務以及任務之間的同步252
7.2 繪圖API函數254
7.2.1 繪圖的API函數應用舉例254
7.2.2 繪圖的API函數應用舉例的源代碼256
7.3 系統的消息循環261
7.3.1 使用系統的消息循環261
7.3.2 系統消息循環使用的源代碼264
7.4 文件的使用268
7.4.1 文件的讀取應用舉例269
7.4.2 文件的讀取實現的源代碼270
7.5 列表框控件的使用271
7.5.1 列表框控件的使用舉例272
7.5.2 列表框控件舉例的源代碼274
7.6 文本框控件的使用276
7.6.1 文本框控件的使用舉例276
7.6.2 文本框控件的舉例源代碼278
7.7 系統的多任務和系統時鐘281
7.7.1 系統的多任務和系統時鐘應用舉例281
7.7.2 系統的多任務和系統時鐘舉例源代碼283
7.8 UDP通信實驗287
7.8.1 UDP協議簡介287
7.8.2 socket簡介289
7.8.3 實驗步驟293
7.9 綜合舉例296
7.9.1 綜合舉例的設計思路296
7.9.2 綜合舉例的源代碼297
練習題309
第8章 嵌入式系統的應用開發案例310
8.1 嵌入式系統的設計方法310
8.1.1 嵌入式系統的設計流程310
8.1.2 嵌入式系統的軟硬件劃分312
8.1.3 嵌入式系統軟硬件協同設計313
8.1.4 系統集成和測試315
8.2 嵌入式數控系統設計開發實例315
8.2.1 數控系統簡介315
8.2.2 需求分析316
8.2.3 系統體系結構設計317
8.2.4 軟件設計320
8.2.5 系統集成與測試322
8.3 智能家居遠程監控系統設計實例323
8.3.1 智能家居遠程監控系統簡介323
8.3.2 系統功能分析324
8.3.3 系統方案設計325
8.3.4 系統硬件結構設計327
8.3.5 系統軟件結構設計329
附錄A ADS1.2嵌入式開發環境配置簡介334
附錄B 《嵌入式系統設計與實例開發》 配套實驗體系介紹342
B.1 UP-NETARM2410-S實驗教學平臺介紹342
B.2 實驗教學內容及其基本要求343
B.3 北京航空航天大學《嵌入式系統概論》實驗課程大綱349
參考文獻353