圖書信息
書 名: 嵌入式系統:體系結構、編程與設計
作 者:卡莫爾(RajKamal)
出版時間: 2010年3月1日
開本: 16開
定價: 98.00元
內容簡介
《嵌入式系統:體系結構、編程與設計》第1版獲得了讀者的一致好評和熱銷,第2版在此基礎上進行了修訂,並且結合新技術給予了補充,採用軟硬體相結合的方式介紹嵌入式系統開發。全書從基礎知識開始入手,逐步介紹嵌入式處理器體系結構、網路設備、驅動程式、進程間通信以及程式建模與編程方面的相關知識。《嵌入式系統:體系結構、編程與設計》是嵌入式系統初學人員的理想學習資料,也可以作為嵌入式系統設計人員非常好的參考資枓。
《嵌入式系統:體系結構、編程與設計》特色:
自底向上的方法——結合案例研究討論了硬體和軟體問題
詳細討論了兩種流行的新實時作業系統(RTOS)——Windows CE和RTLinux
嵌入式系統設計過程中的新主題、系統設計的形式化方法、無線通信設備、支持Internet的系統、無線和移動系統協定
全新的案例研究:數位相機、機器人管弦樂隊以及行動電話SMS創建和傳送
貫穿全書的設計過程和示例
面向實踐:兩章專門介紹案例研究。
作者簡介
Raj Kamal,在無線電子、微處理器、微控制器、計算機組成和體系結構以及嵌入式系統和計算機網路等領域有40年的研究和教學經驗。他已經著作了10本教科書,涉及計算機、電子學及通信和信息技木等領域,如《嵌入式系統》、《計算機體系結構》等書,並在印度、美國、新加坡、韓國及中國出版。由於其做研究的堅持不懈及對最新知識的渴求,Raj被一些大學親切地冠以“學習機器”和“人類發電機”的美譽。
圖書目錄
第1章 嵌入式系統簡介1
1.1 嵌入式系統2
1.1.1 系統2
1.1.2 嵌入式系統3
1.2 嵌入系統中的處理器5
1.2.1 系統中的處理器5
1.2.2 微處理器6
1.2.3 微控制器7
1.2.4 專用處理器9
1.3 系統中的嵌入式硬體單元和設備10
1.3.1 電源10
1.3.2 時鐘振盪電路和時鐘單元11
1.3.3 系統定時器和實時時鐘11
1.3.4 復位電路、加電復位和Watchdog定時器復位11
1.3.5 存儲器12
1.3.6 輸入、輸出和I/O連線埠,IO匯流排和IO接口14
1.3.7 DAC(使用PWM)和ADC15
1.3.8 LCD、LED和觸控螢幕顯示17
1.3.9 小鍵盤或鍵盤18
1.3.10 脈衝撥號電路、數據機和收發器18
1.3.11 中斷處理器18
1.4 嵌入式系統中的軟體19
1.4.1 系統的最終機器可實現軟體19
1.4.2 用機器碼編寫軟體20
1.4.3 用特定於處理器的彙編語言編寫軟體21
1.4.4 用高級語言編寫軟體22
1.4.5 軟體設計的程式模型24
1.4.6 並行處理、多任務調度和使用RTOS的ISR的軟體24
1.4.7 使用作業系統的設備驅動程式和設備管理軟體25
1.4.8 設計嵌入式系統的軟體工具26
1.4.9 示例中需要的軟體工具27
1.5 示例嵌入式系統28
1.6 嵌入式片上系統(SoC)和VLSI電路30
1.6.1 專用IC(ASIC)31
1.6.2 IP核32
1.6.3 具有一個或者多個處理器的FPGA核32
1.7 複雜系統設計和處理器32
1.7.1 嵌入式系統中的微處理器32
1.7.2 嵌入式系統中的微控制器33
1.7.3 嵌入式系統中的DSP33
1.7.4 嵌入式系統中的RISC34
1.7.5 嵌入式系統中的ASIP34
1.7.6 嵌入式系統中的多處理器或者GPP雙核處理器34
1.7.7 嵌入式處理器和嵌入式微控制器35
1.7.8 嵌入式系統中的ARM處理器37
1.7.9 嵌入式系統中的ASSP37
1.8 嵌入式系統的設計過程38
1.8.1 設計指標39
1.8.2 設計過程中的抽象步驟39
1.8.3 嵌入式系統設計中的挑戰:最佳化設計指標42
1.9 系統設計的形式化方法43
1.10設計過程和設計案例44
1.10.1 系統設計過程案例44
1.10.2 朱古力自動售賣機(ACVM)44
1.10.3 智慧卡46
1.10.4 數位相機49
1.10.5 行動電話51
1.10.6 攜帶型計算機52
1.10.7 一組機器人52
1.11 嵌入式系統的分類54
1.12 嵌入式系統設計者需要具備的技能55
本章小結56
關鍵字及其定義57
問題回顧61
實踐練習62
第2章 8051和高級處理器體系結構、存儲器組織和現實中的接口65
2.1 8051的體系結構66
2.1.1 8051微控制器體系結構66
2.1.2 指令集67
2.1.3 IO連線埠、電路以及IO編程70
2.1.4 外部存儲器接口電路72
2.1.5 計數器和定時器73
2.1.6 串列數據通信輸入/輸出74
2.1.7 8051的中斷75
2.2 現實世界中的接口76
2.2.1 基於系統匯流排和基於IO匯流排的現實世界接口IO76
2.2.2 現實接口中的連線埠和設備的IO地址80
2.2.3 現實接口中的設備地址82
2.2.4 中斷和IO83
2.2.5 匯流排仲裁84
2.2.6 鍵盤、顯示器、A/D和D/A轉換設備接口示例86
2.3 高級體系結構介紹88
2.3.1 高級處理器體系結構90
2.3.2 80x86體系結構92
2.3.3 ARM93
2.3.4 SHARC99
2.3.5 DSP101
2.4 處理器和存儲器組織102
2.4.1 處理器的組織102
2.4.2 存儲器的組織105
2.5 指令級並行109
流水線和超標量單元109
2.6 性能指標111
2.7 存儲器類型、存儲器映射和地址111
2.7.1 系統中的存儲器111
2.7.2 存儲地址分配115
2.8 處理器選擇119
2.9 存儲器選擇123
本章小結126
關鍵字及其定義127
問題回顧132
實踐練習132
第3章 設備網路的設備和通信匯流排135
3.1 I/O的類型和示例136
3.1.1 同步串列輸入136
3.1.2 同步串列輸出138
3.1.3 同步串列輸入/輸出138
3.1.4 異步串列輸入138
3.1.5 異步串列輸出139
3.1.6 並行連線埠139
3.1.7 半雙工與全雙工139
3.1.8 串列和並行連線埠I/O示例140
3.2 串列通信設備140
3.2.1 串列設備的同步、準同步和異步通信140
3.2.2 RS232C/RS485通信143
3.2.3 UART144
3.2.4 HDLC協定145
3.2.5 使用SPI、SCI和SI連線埠的串列數據通信146
3.2.6 安全數字輸入輸出(SDIO)149
3.3 並行設備連線埠150
3.3.1 與開關和小鍵盤連線的並行連線埠153
3.3.2 與編碼器連線的並行連線埠154
3.3.3 與步進電機連線的並行連線埠154
3.3.4 與LCD控制器連線的並行連線埠155
3.3.5 與觸控螢幕連線的並行連線埠156
3.4 設備連線埠的複雜接口特性157
3.5 無線設備158
3.6 定時器和計數設備159
3.6.1 定時設備159
3.6.2 計數設備159
3.6.3 帶計數設備的定時器160
3.7 watchdog定時器164
3.8 實時時鐘165
3.9 網路中的嵌入式系統166
3.10 串列匯流排通信協定168
3.10.1 I2C匯流排168
3.10.2 CAN匯流排169
3.10.3 USB匯流排171
3.10.4 FireWire——IEEE1394匯流排標準172
3.10.5 先進的串列高速匯流排173
3.11 並行匯流排設備協定——使用ISA、PCI、PCI-X和高級匯流排的並行通信網路173
3.11.1 ISA匯流排175
3.11.2 PCI和PCI/X匯流排176
3.11.3 ARM匯流排177
3.11.4 高級並行高速匯流排178
3.12 支持Internet的系統——網路協定178
3.12.1 超文本傳輸協定(HTTP)179
3.12.2 傳輸控制協定(TCP)181
3.12.3 用戶數據報協定(UDP)181
3.12.4 Internet協定(IP)182
3.12.5 Ethernet(乙太網)183
3.13 無線和移動系統協定184
3.13.1 紅外數據協會(IrDA)184
3.13.2 藍牙185
3.13.3 802.1 1186
3.13.4 ZigBee187
本章小結187
關鍵字及其定義189
問題回顧192
實踐練習193
第4章 設備驅動程式和中斷服務機制195
4.1 不使用中斷服務機制的程式查詢式I/O忙/等待方法196
4.2 ISR的概念199
4.2.1 連線埠或設備中斷及ISR示例199
4.2.2 軟體中斷和ISR示例202
4.2.3 作為級中斷處理程式的中斷服務執行緒205
4.2.4 設備驅動程式205
4.3 中斷源206
4.4 中斷服務(處理)機制210
4.4.1 中斷向量210
4.4.2 根據可禁止和不可禁止的中斷分類213
4.4.3 可禁止中斷源的啟用(未禁止)和禁用(禁止)214
4.4.4 狀態暫存器或中斷掛起暫存器214
4.5 多中斷215
4.5.1 多中斷調用215
4.5.2 硬體分配的優先權216
4.6 上下文和上下文切換周期、中斷延遲和最終期限217
4.6.1 中斷延遲219
4.6.2 中斷服務的最終期限221
4.6.3 硬體優先權的軟體覆蓋以滿足服務的最終期限223
4.7 從上下文保存的角度對處理器中斷服務機制的分類223
4.8 直接存儲器訪問224
4.8.1 DMAC的使用225
4.8.2 同一中斷源產生多個快速連續中斷時的DMA通道使用226
4.9 設備驅動程式編程226
4.9.1 編寫系統中的物理設備驅動ISR227
4.9.2 虛擬設備驅動程式229
4.9.3 系統中的並行連線埠驅動程式230
4.9.4 系統中的串列連線埠驅動程式232
4.9.5 內部可程式定時設備的設備驅動程式234
4.9.6 作為設備驅動和網路函式的Linux內幕235
本章小結236
關鍵字及其定義237
問題回顧239
實踐練習240
第5章 編程概念及C、C++和Java的嵌入式編程241
5.1 用彙編語言(ALP)和高級語言C進行軟體編程242
5.1.1 彙編語言編程242
5.1.2 高級語言編程242
5.2 C程式中的元素:頭檔案、源檔案以及預處理指令244
5.2.1 用於包含檔案的include指令244
5.2.2 源檔案245
5.2.3 配置檔案246
5.2.4 預處理指令246
5.3 程式元素:宏與函式246
5.4 程式元素:數據類型、數據結構、修飾符、語句、循環和指針248
5.4.1 數據類型248
5.4.2 指針和NULL指針249
5.4.3 使用數據結構:佇列、堆疊、鍊表和樹250
5.4.4 修飾符的使用258
5.4.5 條件語句、循環語句以及無限循環語句259
5.4.6 函式調用264
5.4.7 按照循環順序進行的多函式調用266
5.4.8 函式指針、函式佇列和ISR佇列267
5.4.9 發生中斷時函式的排列268
5.5 面向對象編程271
5.6 C++嵌入式編程271
5.6.1 C++的優點271
5.6.2 C++的缺點272
5.6.3 嵌入式C++程式的代碼最佳化以消除缺點272
5.7 用Java進行嵌入式編程273
5.7.1 Java編程基礎273
5.7.2 使用Java編程的優點275
5.7.3 Java的缺點275
5.7.4 J2ME276
5.7.5 JavaCard和嵌入式Java277
本章小結277
關鍵字及其定義278
問題回顧281
實踐練習281
第6章 程式建模的概念283
6.1 程式模型284
6.2 DFG模型286
6.2.1 數據流圖286
6.2.2 控制數據流圖模型289
6.2.3 同步數據流圖(SDFG)模型290
6.3 用於事件控制程式流的狀態機編程模型291
6.3.1 有限狀態機(FSM)模型293
6.3.2 FSM狀態表294
6.4 多處理器系統的建模298
6.4.1 多處理器系統298
6.4.2 展開SDFG的同構SDFG模型301
6.4.3 展開HSDFG的APEG模型302
6.4.4 圖在多處理器系統中的套用:劃分和調度303
6.5 UML建模305
本章小結309
關鍵字及其定義310
問題回顧311
實踐練習311
第7章 進程間通信與進程、任務和執行緒的同步313
7.1 應用程式中的多個進程314
7.2 應用程式中的多執行緒316
7.3 任務317
7.4 任務的狀態318
7.5 任務和數據320
任務控制塊321
7.6 通過函式、ISR和任務的特徵進行區分321
7.6.1 無限事件等待循環的任務編碼321
7.6.2 函式、ISR和任務之間的區別322
7.7 信號量的概念325
7.7.1 作為事件信號變數或通報變數的信號量的使用325
7.7.2 作為資源鍵的信號量以及信號量在臨界段中的使用327
7.7.3 使用多個信號量同步任務329
7.7.4 計數信號量332
7.7.5 P和V信號量333
7.8 共享數據339
7.8.1 多任務和多例程的數據共享問題339
7.8.2 共享數據問題的解決方法340
7.8.3 信號量的套用與共享數據問題341
7.8.4 共享數據問題的消除341
7.8.5 優先權反轉問題和死鎖情況342
7.9 進程間通信343
7.1 0信號函式345
7.1 1信號量函式347
7.1 2訊息佇列函式348
7.1 3信箱函式350
7.1 4管道函式353
7.1 5套接字函式355
7.1 6遠程過程調用(RPC)函式359
本章小結359
關鍵字及其定義360
問題回顧362
實踐練習362
第8章 實時作業系統365
8.1 OS服務366
8.1.1 目標366
8.1.2 用戶和管態結構366
8.1.3 結構367
8.1.4 核心368
8.2 進程管理369
8.2.1 進程的創建369
8.2.2 已創建進程的管理370
8.3 定時器函式371
8.4 事件函式373
8.5 存儲器管理374
8.5.1 存儲器分配374
8.5.2 初始分配後的存儲管理374
8.6 設備、檔案及IO子系統管理376
8.6.1 設備管理376
8.6.2 檔案系統的組織和實現378
8.6.3 I/O子系統380
8.7 RTOS環境中的中斷例程和中斷源調用處理381
8.7.1 通過中斷源以及ISR傳送ISR輸入訊息直接調用ISR382
8.7.2 RTOS首先回響中斷,接著OS調用相應的ISR383
8.7.3 RTOS首先回響中斷,之後初始化ISR並運行ISR384
8.8 實時作業系統385
8.9 使用RTOS進行基本設計387
8.9.1 原則387
8.9.2 使用信號量和佇列進行封裝394
8.9.3 硬實時的考慮396
8.9.4 節約存儲器和功耗397
8.10 RTOS任務調度模型,作為性能指標的中斷延遲和任務回響時間400
8.10.1 協作調度模型401
8.10.2 循環和時間片輪轉調度模型404
8.10.3 搶占式調度模型408
8.10.4 搶占式調度程式提供的臨界段服務模型413
8.10.5 最早時限優先(EDF)優先權和速率單調調度(RMS)模型414
8.10.6 固定(靜態)實時調度模型415
8.10.7 周期、突發以及非周期任務的調度模型中延遲和最後期限的性能指標416
8.10.8 使用CPU負載作為性能指標416
8.10.9 突發任務模型作為性能指標417
8.1 1作業系統的安全問題417
本章小結418
關鍵字及其定義419
問題回顧420
實踐練習421
第9章 實時作業系統編程-I:MicroC/OS-II和VxWorks423
9.1 RTOS的基本函式和類型424
9.1.1 基於宿主機-目標機和基於自主主機的開發方法425
9.1.2 RTOS的類型426
9.2 RTOSμCOS-II427
9.2.1 系統級函式429
9.2.2 任務服務和時間函式及其使用範例433
9.2.3 時間延遲函式439
9.2.4 存儲器分配相關的函式442
9.2.5 信號量相關函式444
9.2.6 信箱相關函式456
9.2.7 佇列相關函式465
9.3 RTOSVxWorks474
9.3.1 基本特性475
9.3.2 系統庫頭檔案中的任務管理庫477
9.3.3 VxWorks系統函式和系統任務481
9.3.4 IPC函式483
本章小結496
關鍵字及其定義498
問題回顧499
實踐練習499
第10章 實時作業系統編程-II:WindowsCE、OSEK和實時Linux函式501
10.1 WindowsCE502
10.1.1 WindowsCE的特點502
10.1.2 WindowsCE編程504
10.1.3 視窗和視窗管理505
10.1.4 記憶體管理506
10.1.5 檔案和註冊表507
10.1.6 WindowsCE資料庫508
10.1.7 進程、執行緒和IPC509
10.1.8 按鍵、觸控螢幕、滑鼠的輸入512
10.1.9 通信和網路514
10.1.10 設備間套接字通信函式516
10.1.11 Win32API編程517
10.1.1 2創建視窗518
10.2 OSEK519
10.3 Linux2.6.x和RTLinux521
10.3.1 實時Linux函式521
10.3.2 RTLinux527
本章小結531
關鍵字及其定義533
問題回顧536
實踐練習537
第11章 RTOS編程和程式建模設計示例與案例研究-1539
11.1 嵌入式系統設計的案例研究以及使用MUCOSRTOS對朱古力自動售賣機(ACVM)編碼540
11.1.1 需求540
11.1.2 系統規範541
11.1.3 使用UML為系統規範建模543
11.1.4 ACVM的硬體體系結構546
11.1.5 軟體體系結構546
11.1.6 創建任務列表、函式和IPC550
11.1.7 編碼步驟示例551
11.2 數位相機硬體和軟體體系結構的案例研究559
11.2.1 需求560
11.2.2 類圖562
11.2.3 數位相機的硬體體系結構563
11.2.4 數位相機的軟體體系結構564
11.3 使用RTOSVxWorks將套用層位元組流傳送到TCP/IP網路的編碼案例研究566
11.3.1 需求567
11.3.2 類圖、類和對象567
11.3.3 TCP棧的硬體和軟體體系結構570
11.3.4 編碼步驟實例574
本章小結596
關鍵字及其定義597
問題回顧598
實踐練習599
第12章 RTOS編程和程式建模設計示例與案例研究-2601
12.1 管弦樂隊機器人之間通信的案例研究601
12.1.1 需求604
12.1.2 類和類圖605
12.1.3 狀態圖607
12.1.4 機器人管弦樂隊MIDI通信的硬體和軟體體系結構607
12.1.5 通信任務的同步模型608
12.2 汽車中的嵌入式系統609
12.3 汽車中自適應巡航控制(ACC)系統的嵌入式系統案例研究611
12.3.1 需求612
12.3.2 類圖616
12.3.3 ACC硬體體系結構617
12.3.4 ACC軟體體系結構618
12.3.5 ACC軟體任務的同步模型618
12.3.6 ACC軟體實現620
12.4 智慧卡中的嵌入式系統案例研究629
12.4.1 需求630
12.4.2 類圖631
12.4.3 硬體和軟體體系結構632
12.4.4 同步模型633
12.4.5 示例代碼634
12.5 行動電話鍵輸入軟體案例研究641
12.5.1 需求642
12.5.2 類和類圖646
12.5.3 狀態圖648
12.5.4 SMS按鍵硬體648
12.5.5 SMS創建和傳送應用程式的軟體體系結構649
12.5.6 軟體任務和同步模型651
本章小結652
關鍵字及其定義653
問題回顧655
實踐練習656
第13章 嵌入式軟體開發過程和工具657
13.1 嵌入式軟體開發過程和工具概述658
13.1.1 開發過程和軟硬體658
13.1.2 軟體工具659
13.1.3 原始碼工程管理工具660
13.1.4 集成開發環境(IDE)661
13.2 宿主機和目標機662
13.2.1 宿主系統662
13.2.2 目標系統664
13.3 連結和定位軟體665
13.3.1 檔案、定址和地址解決方法的區別666
13.3.2 MotorolaS-record和IntelHex二進制映像格式的定位器輸出檔案667
13.3.3 用於定位器編碼的存儲器映射669
13.4 將嵌入式軟體植入目標系統671
13.4.1 設備PROM或者快閃記憶體編程器671
13.4.2 設備編程器的編程方式672
13.5 硬體/軟體設計和協同設計中的問題674
13.5.1 選擇合適的平台674
13.5.2 存儲器敏感和處理器敏感軟體677
13.5.3 存儲器、程式段和設備地址分配678
13.5.4 嵌入式平台中OS的移植問題681
13.5.5 性能和性能加速器682
本章小結684
關鍵字及其定義685
問題回顧687
實踐練習687
第14章 測試、模擬和調試技術與工具689
14.1 在宿主機上進行測試689
14.2 模擬器691
14.2.1 模擬器的特性692
14.2.2 模擬器的局限性692
14.2.3 模擬工具軟體693
14.2.4 嵌入式系統的原型開發、測試和調試工具693
14.3 試驗工具694
14.3.1 簡單的伏特-歐姆表694
14.3.2 簡單的LED測試和邏輯探測器695
14.3.3 示波器695
14.3.4 位率測量儀696
14.3.5 邏輯分析儀696
14.3.6 電路內置仿真器(ICE)697
14.3.7 監視器699
本章小結700
關鍵字及其定義701
問題回顧701
實踐練習702
附錄A 不同讀者的學習路線圖703
附錄B 參考文獻705