內容簡介
本書是作者在綜合了相關課程講義和教學大綱的基礎上編寫的,也是作者多年從事嵌入式系統開發經驗的總結。全書並不針對某種特定體系結構的處理器或作業系統,而是力圖概括嵌入式系統所涉及的最基礎的知識。硬體上,以嵌入式處理器、嵌入式系統匯流排和嵌入式存儲器為主體,輔之以嵌入式系統的常見電路,由此建立起嵌入式系統的硬體知識體系;軟體上,重點分析嵌入式系統引導程式和作業系統;系統設計上,重點分析低功耗設計技術和電磁兼容設計技術。本書結構清晰,語言簡潔,採用大量的圖表來說明技術問題,因而通俗易懂,適合用作高等院校嵌入式系統課程的原理性教材,也可作為嵌入式系統愛好者的入門參考書。
前言
在信息化的社會裡,需要能夠隨時隨地對信息進行採集、處理、存儲和傳輸,這樣就需要使用到嵌入式系統。可以說,嵌入式系統是信息社會的技術基礎之一。嵌入式系統幾乎無處不在,從日常生活中的手機、遊戲機、電視機、洗衣機,到汽車電子、工業控制、飛機大炮、飛船火箭等。正是嵌入式系統的廣泛套用,才使得計算機走出實驗室,走向社會,走進各行各業。過去PC機上的套用,如文檔編輯與查看、網路瀏覽、多媒體播放、信息處理、自動控制等,現在大多可以由嵌入式系統來實現,這正是所謂後PC時代的特點之一。嵌入式系統是IT領域的研究熱點,各院校開設了很多相關課程。作者在課程教學中,感覺到嵌入式系統的原理性教材比較缺乏,已有的教材大多針對某種特定的硬體或軟體平台,不具有普遍性。為此,作者在近年嵌入式系統原理課程講義的基礎上,結合自己對嵌入式系統的理解,編寫完成該教材,力圖系統地概括嵌入式系統的基礎知識,使讀者在掌握該教材知識的基礎上,能夠更好地開展下一步的學習和研究工作。本書包括三部分:硬體、軟體和設計,共9章。其中:第1章為嵌入式系統綜述;第2~5章為硬體部分;第6章和第7章為軟體部分;第8章和第9章為系統設計部分。第1章介紹嵌入式系統的基本概念,分析其與通用計算機的區別,目的是幫助讀者建立起對嵌入式系統的基本認識。第2章介紹嵌入式處理器的基本概念,如嵌入式處理器的特點、與通用處理器的比較、嵌入式處理器的類型等;並分別介紹8051單片機、ARM處理器、嵌入式x86處理器、DSP處理器及SOC處理器。通過對不同處理器實例的比較與學習,加深對嵌入式處理器特點與套用方法的理解。第3章介紹嵌入式系統匯流排技術。首先分析了ISA匯流排、PCI匯流排的原理;隨後介紹這些匯流排的工業化版本,包括PC/104、PC/104Plus、PCI104、PCI/104Express、PCIe/104、CompactPCI等。匯流排是將計算機各模組聯繫在一起的紐帶,理解匯流排技術有利於讀者建立起系統的概念。第4章介紹在嵌入式系統中經常套用的電路,包括復位與電源管理、I2C匯流排、實時時鐘、RS232接口等。這些都是非常基礎的電路,是嵌入式系統工程師必須掌握的知識。第5章介紹嵌入式系統中常用的存儲器,包括SRAM、DPRAM、SDRAM、NORFlash、NANDFlash、SEEPROM等。存儲器是嵌入式系統的基本組成部分,掌握這些存儲器的特點與套用方法是嵌入式系統工程師的基本功。第6章介紹嵌入式系統引導程式。介紹了引導程式的基本概念,重點分析了UBoot引導程式的功能、原理、代碼結構、編譯與移植方法等。第7章介紹嵌入式作業系統。首先介紹嵌入式作業系統的基本概念、結構特點、實時性要求等;隨後介紹幾種常見的嵌入式作業系統,包括嵌入式Linux、μC/OSⅡ、VxWorks、WindowsXPEmbedded、WindowsCE等。通過對實例的學習有利於加深對嵌入式作業系統的理解。第8章介紹嵌入式系統的低功耗設計技術。低功耗設計對嵌入式系統有重要意義,本章分析了計算機功耗類型與功耗產生的原因;根據功耗的產生機制,分析了硬體低功耗設計方法和軟體低功耗設計方法。第9章介紹電磁兼容的原理與設計。首先介紹電磁兼容的一些基本概念,分析電磁干擾產生的機制及防止電磁干擾的原則性方法;隨後具體分析了不同的電磁干擾傳播途徑,重點分析干擾信號的傳導耦合,如直接傳導耦合、公共阻抗傳導耦合、電容耦合、電感耦合等;在理解前面電磁兼容基礎知識的基礎上,對計算機硬體設計中的信號完整性問題進行了分析。本書是嵌入式系統的原理性教材,適合已完成微機原理類基礎課程的大學高年級學生使用,也可用作嵌入式系統愛好者的入門參考書。在本書的編寫過程中,黃瑞光教授提供了重要指導;肖看同志提供了部分參考資料,並對內容提出良好的建議;童丹同志協助完成部分圖表的製作;李耀棟、徐超、程瑞、楊威同志協助整理資料;寵寶川、王欣同志參與了第6章的編寫工作,這裡一併致以謝意。嵌入式系統是一門綜合性很強的技術,涉及知識面廣。由於作者才疏學淺,書中難免有疏漏之處,懇請讀者批評指正。有興趣的讀者,可以傳送電子郵件到[email protected],與作者進一步交流;也可傳送電子郵件到[email protected],與本書策劃編輯進行交流。
徐端全
2009年7月
目錄
第1章嵌入式系統概述
1.1什麼是嵌入式系統1
1.2嵌入式系統與通用計算機系統2
1.3嵌入式系統的發展與套用5
1.4嵌入式系統的組成7
1.5嵌入式系統的分類8
1.5.1按處理器位寬分類8
1.5.2按有無作業系統分類8
1.5.3按實時性分類8
1.5.4按套用分類9
1.6小結10
1.7習題10
第2章嵌入式處理器
2.1嵌入式處理器的原理11
2.1.1嵌入式處理器的指令系統11
2.1.2嵌入式處理器的類型12
2.1.3嵌入式處理器的結構14
2.1.4大端方式和小端方式15
2.1.5影響嵌入式處理器性能的因素15
2.2嵌入式處理器的分類16
2.3嵌入式處理器的特點18
2.48051單片機18
2.4.18051單片機結構19
2.4.2MCS51指令系統20
2.5ARM處理器及實例21
2.5.1ARM技術發展21
2.5.2ARM體系結構21
2.5.3ARM擴展指令集23
2.5.4ARM/Thumb體系結構版本的命名24
2.5.5ARM處理器核24
2.5.6ARM處理器片內匯流排26
2.5.7S3C2410處理器28
2.6嵌入式x86處理器及實例30
2.6.1嵌入式x86處理器的發展30
2.6.2geodex86處理器30
2.6.3CS5535原理33
2.6.4基於GeodeGX處理器的嵌入式系統結構35
2.7DSP處理器及實例35
2.7.1DSP與普通處理器的區別36
2.7.2DSP的套用形式37
2.7.3tms320dm642處理器38
2.8SOC處理器及實例40
2.8.1SOC處理器類型及優點41
2.8.2視頻編碼SOC處理器41
2.9嵌入式處理器的選擇44
2.10嵌入式處理器的JTAG調試接口47
2.11小結48
2.12習題49
第3章嵌入式系統匯流排
3.1計算機匯流排基本概念50
3.2嵌入式系統匯流排的特點51
3.3ISA匯流排原理52
3.3.1ISA匯流排結構52
3.3.2ISA匯流排信號53
3.3.3ISA匯流排時序58
3.4PCI匯流排原理59
3.4.1PCI匯流排概述60
3.4.2PCI匯流排系統結構60
3.4.3PCI匯流排信號62
3.4.4PCI設備的配置空間67
3.4.5PCI匯流排操作命令73
3.4.6PCI匯流排傳輸操作75
3.5PC/104系列匯流排標準76
3.5.1PC/104匯流排77
3.5.2PC/104Plus匯流排79
3.5.3PCI104、PCI/104Express及PCIe/10481
3.6CompactPCI匯流排82
3.6.1CompactPCI概述82
3.6.2CompactPCI機械結構83
3.6.3CompactPCI連線器84
3.6.4CompactPCI熱插拔技術87
3.7小結89
3.8習題89
第4章嵌入式系統常見電路
4.1系統復位與電源監控90
4.1.1RC復位電路91
4.1.2復位與電源管理控制器92
4.2I2C匯流排原理95
4.2.1概述95
4.2.2I2C匯流排拓撲結構96
4.2.3I2C匯流排工作原理98
4.3實時時鐘102
4.3.1實時時鐘基本概念102
4.3.2S35390A實時時鐘103
4.4RS232接口109
4.4.1RS232原理109
4.4.2RS232接口110
4.4.3起止式異步串列通信協定112
4.4.4RS232接口驅動器實例113
4.5小結113
4.6習題114
第5章嵌入式系統存儲器
5.1概述115
5.2靜態隨機存儲器116
5.2.1SRAM原理116
5.2.2IDT7164靜態RAM存儲器117
5.3雙連線埠存儲器119
5.3.1雙連線埠RAM及其套用120
5.3.2IDT7007雙連線埠RAM120
5.3.3IDT7007中斷邏輯122
5.3.4IDT7007信號燈邏輯123
5.3.5IDT7007的擴展123
5.4同步動態隨機存儲器124
5.4.1動態隨機存儲器124
5.4.2SDRAM概述126
5.4.3SDRAM命令129
5.5NORFlash134
5.5.1Flash概述134
5.5.2W39L040V簡介134
5.5.3W39L040V操作模式136
5.5.4W39L040A模式命令138
5.5.5W39L040A擦寫狀態查詢141
5.6NANDFlash141
5.6.1K9F1208X0C簡介141
5.6.2K9F1208X0C輸入/輸出接口145
5.6.3K9F1208X0C操作命令147
5.6.4K9F1208X0C備用區數據分配155
5.7串列EEPROM156
5.7.124C01結構156
5.7.224C01寫操作157
5.7.324C01讀操作158
5.8小結159
5.9習題160
第6章嵌入式系統引導程式
6.1PC機中的引導程式161
6.2嵌入式系統中的引導程式163
6.3嵌入式系統引導程式的啟動過程165
6.4UniversalBootLoader168
6.4.1UBoot簡介168
6.4.2UBoot用戶命令及使用168
6.4.3UBoot原始碼結構170
6.4.4UBoot啟動過程172
6.4.5UBoot用戶命令解釋代碼173
6.4.6UBoot中的Flash燒寫代碼175
6.4.7UBoot編譯177
6.4.8UBoot的移植180
6.4.9UBoot的燒寫182
6.5小結183
6.6習題183
第7章嵌入式作業系統
7.1概述184
7.2嵌入式作業系統硬體抽象層185
7.3嵌入式作業系統實時性187
7.3.1實時系統概述187
7.3.2嵌入式系統實時性189
7.3.3裸機中的實時軟體設計190
7.3.4嵌入式實時作業系統191
7.4嵌入式Linux195
7.4.1Linux簡介195
7.4.2嵌入式Linux特點197
7.4.3常見嵌入式Linux作業系統198
7.5μC/OSⅡ作業系統200
7.5.1μC/OSⅡ作業系統概述200
7.5.2μC/OSⅡ任務管理202
7.5.3μC/OSⅡ移植203
7.6VxWorks作業系統205
7.6.1VxWorks系統結構205
7.6.2VxWorks作業系統特點206
7.6.3VxWorks任務管理208
7.6.4Tornado開發環境208
7.7WindowsXPEmbedded作業系統210
7.7.1WindowsEmbedded210
7.7.2WindowsXPEmbedded211
7.7.3WindowsXPEmbedded開發工具與開發過程213
7.8WindowsCE作業系統215
7.8.1WindowsCE概述215
7.8.2WindowsCE系統結構216
7.8.3WindowsCE檔案系統219
7.8.4WindowsCE記憶體管理220
7.8.5WindowsCE系統調度221
7.8.6PlatformBuilder系統定製工具223
7.8.7EmbeddedVisualC++套用軟體開發環境225
7.9嵌入式作業系統選型226
7.10小結228
7.11習題229
第8章嵌入式系統低功耗設計
8.1嵌入式系統低功耗設計的重要性230
8.2功耗類型與產生的原因232
8.3硬體功耗控制方法234
8.3.1選擇低功耗器件234
8.3.2採用低功耗電路形式235
8.3.3充分利用器件的低功耗工作模式237
8.3.4選擇低功耗電源電路239
8.3.5分區分時供電242
8.3.6動態電壓與頻率調節243
8.3.7其他硬體功耗控制方法246
8.4軟體功耗控制方法247
8.5小結250
8.6習題250
第9章嵌入式系統電磁兼容設計
9.1電磁兼容的發展251
9.2電磁兼容的基本概念252
9.3常見電磁兼容問題253
9.4電磁兼容設計的重要性256
9.5電磁兼容測試的單位257
9.6PCB元件的高頻特性258
9.6.1導線259
9.6.2電阻259
9.6.3電容260
9.6.4電感260
9.7電磁能量的耦合途徑與抑制方法261
9.7.1直接傳導耦合261
9.7.2公共阻抗傳導耦合262
9.7.3電容耦合264
9.7.4電感耦合264
9.8PCB中的信號完整性分析265
9.8.1傳輸線原理266
9.8.2信號完整性問題267
9.8.3信號完整性問題的解決方法269
9.9PCB中的去耦電容272
9.10小結273
9.11習題273
參考文獻274