圖書簡介
本書是嵌入式系統的基礎教程,主要面向初級系統設計人員。書中詳細介紹了嵌入式系統最基本的軟體和硬體要素,以及將代碼嵌入到系統中的一些軟體技術和接口技術。
書籍目錄
目錄
第1章嵌入式系統簡介 1
1.1嵌入式系統 2
1.1.1系統 2
1.1.2嵌入式系統 3
1.1.3嵌入式系統的分類 4
1.1.4嵌入式系統設計者需要具備的技能 5
1.2系統中的處理器 6
1.2.1系統中的處理器 6
1.2.2微處理器 7
1.2.3微控制器 8
1.2.4複雜系統的嵌入式處理器 10
1.2.5數位訊號處理器 11
1.2.6嵌入式系統的專用系統處理器 11
1.2.7使用通用處理器的多處理器系統 12
1.3其他硬體單元 13
1.3.1電源和低功耗管理 13
1.3.2時鐘振盪電路和時鐘單元 15
1.3.3系統需要的各種計時和計數功能的實時時鐘和定時器 16
1.3.4復位電路、加電復位和Watchdog定時器復位 16
1.3.5存儲器 17
1.3.6輸入、輸出和I/O連線埠,IO匯流排和IO接口 18
1.3.7中斷處理器 19
1.3.8DAC(使用PWM)和ADC 19
1.3.9LCD和LED顯示 20
1.3.10小鍵盤/鍵盤 21
1.3.11脈衝撥號電路、數據機和收發器 21
1.3.12GPIB(IEEE488)連線 21
1.3.13嵌入式系統硬體的連線和接口匯流排及單元 22
1.3.14案例中所需要的硬體單元 22
1.4嵌入系統軟體 24
1.4.1產品的最終機器可實現軟體 24
1.4.2用機器碼編寫軟體 25
1.4.3用特定於處理器的彙編語言編寫軟體 26
1.4.4用高級語言編寫軟體 27
1.4.5使用作業系統的設備驅動程式和設備管理軟體 29
1.4.6多任務調度和使用RTOS設備的軟體設計 30
1.4.7設計嵌入式系統的軟體工具 30
1.4.8示例中需要的軟體工具 32
1.4.9軟體設計模型 32
1.5示例嵌入式系統 33
1.6嵌入式片上系統(SOC)和內部VLSI電路 35
1.6.1用於攜帶型電話的SoC示例 35
1.6.2ASIP 36
1.6.3IP核 36
1.6.4嵌入GPP 37
1.6.5具有一個或者多個處理器的FPGA核 37
1.6.6示例SoC中的組成部分--智慧卡 38
第2章處理器和存儲器組織 45
2.1處理器中的結構單元 46
2.2嵌入式系統的處理器選擇 55
2.3存儲器設備 58
2.3.1ROM:使用方法、形式和變種 59
2.3.2RAM設備 60
2.4嵌入式系統的存儲器選擇 61
2.5程式段和塊的存儲器分配及系統的存儲器映射 64
2.5.1各種存儲器段中的函式、過程、數據和堆疊 64
2.5.2不同數據結構和數據集合元素的存儲器塊 66
2.5.3存儲器映射 71
2.5.4內部設備和I/O設備在映射中的地址 77
2.6直接存儲器訪問 79
2.7處理器、存儲器和I/O設備的接口 80
第3章設備網路的設備和匯流排 87
3.1I/O設備 88
3.1.1I/O設備的類型和示例 88
3.1.2串列設備的同步、準同步和異步通信 90
3.1.3內部串列通信設備的示例 93
3.1.4並口設備 95
3.1.5設備連線埠的複雜接口特性 97
3.2定時器和計數設備 98
3.3互連的多個設備之間通過I2C、CAN和高級I/O匯流排進行串?型ㄐ?102
3.3.1I2C匯流排 102
3.3.2CAN匯流排 103
3.3.3USB匯流排 105
3.3.4先進的串列高速匯流排 105
3.4多個互連I/O設備之間通過ISA、PCI、PCI-X和高級匯流排進行的計算機
或者主機系統並行通信 106
3.4.1ISA匯流排 106
3.4.2PCI和PCI/X匯流排 107
3.4.3高級並行高速匯流排 108
第4章設備驅動程式和中斷服務機制 115
4.1設備驅動程式 117
4.1.1不使用ISR的設備服務 117
4.1.2設備驅動程式ISR 118
4.1.3設備驅動程式 120
4.1.4作為設備驅動和網路函式的Linux內幕 121
4.1.5編寫系統中的物理設備驅動ISR 122
4.1.6虛擬設備 123
4.2系統中的並口設備驅動程式 124
4.3系統中的串口設備驅動程式 130
4.4內部可程式定時設備的設備驅動程式 134
4.5中斷服務(處理)機制 135
4.5.1硬體和軟體相關的中斷源 135
4.5.2軟體錯誤相關的硬體中斷 135
4.5.3軟體指令相關的中斷源 137
4.5.4內部設備相關的硬體中斷 138
4.5.5中斷向量 138
4.5.6根據可禁止和不可禁止的中斷分類 138
4.5.7所有可禁止中斷源的激活(未禁止)和禁用(禁止) 139
4.5.8中斷掛起暫存器或者狀態暫存器 139
4.6上下文和上下文切換周期、最終期限和中斷延遲 139
4.6.1上下文、延遲和最終期限 139
4.6.2從上下文保存的角度對處理器中斷服務機制的分類 143
4.6.3使用DMA通道幫助縮短中斷延遲周期 144
4.6.4滿足服務最終期限的優先權分配 144
4.6.5硬體優先權的軟體覆蓋 145
第5章編程概念及C與C++的嵌入式編程 150
5.1用彙編語言和高級語言C進行軟體編程 151
5.2C程式中的元素:頭檔案、源檔案以及預處理指令 152
5.2.1用於包含檔案的include指令 152
5.2.2源檔案 154
5.2.3配置檔案 154
5.2.4預處理指令 154
5.3程式元素:宏與函式 154
5.4程式元素:數據類型、數據結構、修飾符、語句、循環和指針 156
5.4.1數據類型 156
5.4.2使用數據結構:佇列、堆疊、鍊表和樹 156
5.4.3修飾符 158
5.4.4條件語句、循環語句以及無限循環語句 159
5.4.5指針和NULL指針 161
5.4.6函式調用 163
5.4.7主程式中按照循環順序進行的多函式調用 164
5.4.8函式指針、函式佇列和中斷服務例程佇列 166
5.5佇列 167
5.5.1佇列 167
5.5.2實現網路協定的佇列 170
5.5.3發生中斷時函式的排列 172
5.5.4網路中進行流控制的FIPO佇列 174
5.6堆疊 175
5.7鍊表與有序鍊表 178
5.7.1鍊表 178
5.7.2活動設備驅動器(軟體時鐘)的鍊表 186
5.7.3就緒鍊表中的任務鍊表 187
5.8C++嵌入式編程 189
5.8.1面向對象的編程 189
5.8.2C++的嵌入式編程 189
5.9用Java進行嵌入式編程 191
5.9.1什麼時候用Java編程 191
5.9.2Java的缺點 191
5.10C程式編譯器與交叉編譯器 193
5.11嵌入式C/C++的原始碼工程管理工具 194
5.12存儲器需求的最佳化 194
第6章單處理器和多處理器系統軟體開發過程中的程式建模概念 201
6.1軟體實現之前對軟體分析過程的建模 202
6.1.1數據流圖在程式分析中的用法 202
6.1.2用於程式分析的控制數據流圖的用法 204
6.2用於事件控制或者回響時間受到約束的實時程式的編程模型 205
6.2.1有限狀態機模型 205
6.2.2Petri網模型 209
6.3多處理器系統的建模 215
6.3.1多處理器系統中的問題 216
6.3.2模型 217
6.3.3同步數據流圖模型 218
6.3.4同構的同步數據流圖模型 219
6.3.5無環優先擴展圖模型 220
6.3.6定時的Petri網和擴展預測/轉換網模型 221
6.3.7多執行緒圖系統模型 222
6.3.8圖和Petri網在多處理器系統中的套用 223
第7章嵌入式軟體開發過程中的軟體工程實踐 233
7.1軟體的算法複雜度 234
7.2軟體開發生命周期及其模型 236
7.2.1軟體開發過程中的線性順序模型(瀑布模型或者生命周期模型) 236
7.2.2RAD模型 237
7.2.3增量模型 237
7.2.4並發模型 238
7.2.5基於組件(面向對象)的軟體開發過程模型 238
7.2.6基於第四代工具的軟體開發過程模型 238
7.2.7基於面向對象和基於第四代工具的方法 239
7.3軟體分析 239
7.4軟體設計 241
7.5軟體實現 242
7.6軟體測試、確認以及調試 243
7.6.1測試、驗證以及確認 243
7.6.2調試 246
7.7軟體開發過程中的實時程式設計問題 248
7.7.1在需求和規範的分析中存在的問題 248
7.7.2設計和實現中存在的問題 249
7.7.3系統集成中的問題 249
7.7.4測試中的問題 249
7.8軟體項目管理 250
7.8.1項目管理 250
7.8.2項目測度 251
7.9軟體維護 253
7.10統一建模語言(UML) 255
第8章進程間通信與進程、任務和執行緒的同步 265
8.1應用程式中的多個進程 266
8.1.1進程 266
8.1.2任務 266
8.1.3執行緒 268
8.1.4通過函式、ISR和任務的特徵進行區分 269
8.2多任務和多例程的數據共享問題 270
8.2.1數據共享問題及其解決方案 270
8.2.2對任務或者任務的臨界段使用信號量 271
8.2.3優先權?怪夢侍夂退浪?榭?279
8.3進程間通信 280
8.3.1信號 281
8.3.2信號量標識或者互斥體用作資源鍵(用於進程的資源加鎖和解鎖) 281
8.3.3訊息佇列 282
8.3.4信箱 284
8.3.5管道 285
8.3.6虛擬(邏輯)套接字 287
8.3.7遠程過程調用(RPC) 287
第9章實時作業系統 292
9.1作業系統服務 293
9.1.1目標 293
9.1.2結構 294
9.1.3核心 295
9.1.4進程管理 296
9.1.5存儲器管理 297
9.1.6設備管理 298
9.1.7檔案系統的組織和實現 300
9.2I/O子系統 302
9.3網路作業系統 302
9.4實時作業系統與嵌入式作業系統 304
9.4.1實時作業系統 304
9.4.2在嵌入式系統中何時需要RTOS 304
9.4.3RTOS的多任務調度管理 306
9.4.4實時系統中通過RTOS進行的多任務調度 308
9.5RTOS環境中的中斷例程:RTOS的中斷源調用處理 309
9.5.1通過中斷源直接調用ISR 310
9.5.2通過中斷源以及調度任務的暫時掛起,直接調用RTOS 311
9.5.3通過中斷源以及RTOS對任務和ISR的調度,直接調用RTOS 311
9.6RTOS任務調度模型,作為性能測度的中斷延遲和任務回響時間 311
9.6.1使用就緒任務循環佇列的協作輪轉調度 312
9.6.2使用按照優先權約束排序列表的就緒任務的協作調度 313
9.6.3時間分片的循環調度(速率單調的協作調度) 315
9.6.4調度程式控制的搶占式調度模型策略 316
9.6.5搶占式調度程式提供的臨界段服務 318
9.6.6任務的固定(靜態)實時調度 320
9.6.7調度算法中的優先權分配 320
9.6.8使用機率定時Petri網(隨機)和多執行緒圖(MTG)的高級調度算法 321
9.7周期、零散以及非周期任務的調度模型的性能測度 321
9.7.1使用CPU負載作為性能尺度 321
9.7.2零散任務模型 322
9.8為RTOS的標準化和任務內部通信函式採用的IEEE標準POSIX1003.1B 322
9.9搶占式調度程式的基本操作及其在處理器上預期耗費的時間 324
9.10用於進程間、ISR間、OS函式間和任務之間同步及資源管理的15條策略 325
9.11嵌入式LINUX的內部組織:設備驅動程式和嵌入式系統的LINUX核心 326
9.12作業系統的安全問題 329
9.13移動式作業系統 330
第10章實時作業系統編程工具:MicroC/OS-II和VxWorks 334
10.1測試穩定且調試合格的實時作業系統的必要性 335
10.2μC/OS-II 337
10.2.1RTOS系統級函式 338
10.2.2任務服務函式及其使用範例 341
10.2.3時間延遲函式 347
10.2.4函式相關的存儲器分配 349
10.2.5信號量相關函式 351
10.2.6信箱相關函式 363
10.2.7佇列相關函式 372
10.3VxWorks 381
10.3.1基本特性 382
10.3.2系統庫頭檔案中的任務管理庫 384
10.3.3VxWorks系統函式和系統任務 388
10.3.4進程(任務)間通信函式 391
第11章RTOS編程案例研究 405
11.1使用MUCOSRTOS對朱古力自動售賣機編碼 406
11.1.1案例定義、多任務及其函式 406
11.1.2創建任務、函式和IPC 408
11.1.3編碼步驟示例 411
11.2使用RTOSVxWorks將套用層位元組流傳送到TCP/IP網路上 420
11.2.1案例定義、多任務及其函式 421
11.2.2創建任務、函式和IPC 424
11.2.3編碼步驟示例 425
11.3汽車自適應巡航控制系統的嵌入式系統 443
11.4智慧卡中的嵌入式系統 456
11.4.1嵌入式硬體 457
11.4.2嵌入式軟體 458
第12章嵌入式系統中的軟硬體協同設計 472
12.1嵌入式系統項目管理 473
12.2系統開發過程中嵌入式系統設計和協同設計問題 474
12.2.1嵌入式系統開發過程的目標 474
12.2.2行動計畫 474
12.2.3完整的規範和系統需求 475
12.2.4原理設計 476
12.2.5軟硬體布局設計 477
12.2.6詳細設計 478
12.2.7實現工具 478
12.2.8測試 479
12.3嵌入式系統開發階段中的設計周期 479
12.4目標系統或其仿真器和內置電路仿真器(ICE) 480
12.4.1使用目標系統 480
12.4.2仿真器和ICE 481
12.4.3用於將最終代碼下載到ROM中的設備編程器 483
12.5嵌入式系統開發中的軟體工具 483
12.5.1代碼生成工具(彙編器、編譯器、載入器和連結器) 483
12.5.2模擬器 484
12.5.3嵌入式系統的原型開發、測試和調試工具 486
12.5.4集成開發環境 487
12.5.5存儲器、處理器敏感程式和設備驅動程式 489
12.5.6動態程式庫 489
12.6示波器和邏輯分析儀在系統硬體測試中的使用 490
12.6.1邏輯探測器或者LED測試 490
12.6.2示波器 490
12.6.3邏輯分析儀 491
12.6.4位率測量儀 491
12.6.5用於ROM調試的系統監控代碼 492
12.7嵌入式系統設計中的問題 492
12.7.1選擇合適的平台 492
12.7.2嵌入式系統處理器的選擇 493
12.7.3需要考慮的因素和必需的特性 494
12.7.4軟硬體權衡 495
12.7.5性能建模 495
12.7.6性能加速器 496
12.7.7嵌入式系統中OS的移植問題 496
附錄ACISC和RISC處理器體系結構和指令集示例 504
A.1CISC和RISC處理器的指令及其處理 504
A.1.1指令和數據的格式 504
A.1.2定址模式 505
A.1.3指令集 506
A.1.4CISC和RISC體系結構 507
A.2指令集示例--ARM7 508
A.3ARM處理器的彙編語言程式示例 510
附錄B嵌入式系統高性能處理器 511
B.1ARM處理器示例 511
B.2高性能處理器示例 514
B.3加速器 515
附錄C嵌入式系統8/16/32位微處理器及其體系結構概述 517
C.1Intel、Motorola和PIC系列微控制器的體系結構概述 517
C.2Motorola系列CISC和RISC的新一代微控制器 519
附錄D嵌入式數位訊號處理器 522
D.1數位訊號處理器的體系結構 522
D.2DSP處理器和傳統處理器的比較 524
D.3定點運算和浮點運算的比較 525
D.4嵌入式系統的DSP 525
D.4.1TMS320C2000TM平台 526
D.4.2TMS320C5000TM平台 526
D.4.3TMS320C6000TM平台 526
D.4.4DSP的TMS320C24x和C28X代產品 527
D.4.5TMS320C54x和TMS320C55x代DSP 528
D.4.6TMS320C62x、64x和C67x代DSP 529
D.4.7RISC環境下的OMAP5910嵌入式處理器DSP 530
D.4.8基於SoC的解決方案TexasDSPTMS320DM310 530
附錄E嵌入式系統套用的新型處理器 532
附錄F串列和並行匯流排 537
F.1新的串列匯流排標準(USB2.0,IEEE1394) 537
F.2新的並行匯流排標準(CompactPCI、PCI-X) 537
附錄G嵌入式系統中的設備 539
G.1各種形式的ROM設備 539
G.2ROM設備編程器 540
G.2.1二進制映像 540
G.2.2MotorolaS-Record格式 540
G.2.3IntelHex-File格式 541
G.2.4設備編程器的編程方法 542
G.3RAM設備 544
G.3.1靜態和動態RAM 544
G.3.2EDORAM 544
G.3.3SDRAM 545
G.3.4RDRAM 545
G.3.5參數化的分散式RAM 545
G.3.6參數化的塊RAM 545
G.4微控制器中的並口 545
G.5串列通信設備 546
G.5.1Motorola68HC11中的SPI和SCI 546
G.5.2微控制器中的串列通信設備 547
G.6微處理器中的定時器 548
G.7各種處理器系列中的中斷源及其控制 550
G.880x86處理器的中斷 552
G.968HC11中的中斷 552
G.9.1中斷服務 552
G.9.2中斷源 553
附錄H嵌入式系統體系結構、編程和設計中的重要內容 554
H.1推薦使用的教學大綱 554
H.2CDAC嵌入式系統課程教學大綱涉及的內容 556