目錄
第1章串列和平行匯流排嵌入式系統簡介1.1嵌入式系統1-31.1.1 系統1-31.1.2 嵌入式系統1-41.1.3 嵌入式系統的分類1-61.1.4 嵌入式系統設計者需要具備的技能1-71.2系統中的處理器1-81.2.1 系統中的處理器1-81.2.2 微處理器1-91.2.3 微控制器1-111.2.4 複雜系統的嵌入式處理器1-131.2.5 數位信號處理器1-141.2.6 嵌入式系統的專用系統處理器1-151.2.7 使用通用處理器的多處理器系統1-161.3其他硬體單元1-171.3.1 電源和低功率消耗管理1-171.3.2 時脈振盪電路和時脈單元1-201.3.3 系統需要的各種計時和計數功能的即時時脈和計時器1-211.3.4 重置電路、加電重置和Watchdog計時器重置1-211.3.5 記憶體1-221.3.6 輸入、輸出和I/O埠,IO匯流排和IO介面1-231.3.7 中斷處理器1-251.3.8 DAC(使用PWM)和ADC1-251.3.9 LCD和LED顯示1-271.3.10 小鍵盤/鍵盤1-281.3.11 脈衝撥號電路、數據機和收發器1-281.3.12 GPIB(IEEE488)連接1-281.3.13 嵌入式系統硬體的連接和介面匯流排及單元1-281.3.14 案例中所需要的硬體單元1-291.4嵌入系統軟體1-311.4.1 產品的最終機器可實作軟體1-311.4.2 用機器碼設計軟體1-321.4.3 用特定於處理器的組合語言設計軟體1-331.4.4 用高階語言設計軟體1-351.4.5 使用作業系統的設備驅動程式和設備管理軟體1-361.4.6 多工排程和使用RTOS設備的軟體設計1-381.4.7 設計嵌入式系統的軟體工具1-391.4.8 範例中需要的軟體工具1-401.4.9 軟體設計模型1-411.5範例嵌入式系統1-411.5.1 每種嵌入式系統的應用範例1-411.6嵌入式系統晶片(SOC)和內部VLSI電路1-441.6.1 用於行動型電話的SoC範例1-451.6.2 ASIP1-461.6.3 IP核心1-461.6.4 嵌入GPP1-461.6.5 具有一個或者多個處理器的FPGA核心1-471.6.6 範例SoC中的組成部分——智慧卡1-47第2章處理器和記憶體組織2.1處理器中的結構單元2-22.2嵌入式系統的處理器選擇2-132.3記憶體設備2-162.3.1 ROM:使用方法、形式和變種2-172.3.2 RAM設備2-192.4嵌入式系統的記憶體選擇2-212.5程式區段和區塊的記憶體分配及系統的記憶體映對2-242.5.1 各種記憶體區段中的函數、過程、資料和堆疊2-242.5.2 不同資料結構和資料集合元素的記憶體模組2-262.5.3 記憶體映對2-322.5.4 內部設備和I/O設備在映對中的位址2-402.6直接記憶體存取2-422.7處理器、記憶體和I/O設備的介面2-43第3章網路的設備和匯流排3.1I/O設備3-23.1.1 I/O設備的類型和範例3-23.1.2 串列設備的同步、准同步和非同步通信3-43.1.3 內部串列通信設備的範例3-83.1.4 並列埠設備3-113.1.5 設備埠的複雜介面特性3-133.2計時器和計數設備3-143.3互連的多個設備之間透過I2C、CAN和高級I/O匯流排進行串列通信3-193.3.1 I2C匯流排3-193.3.2 CAN匯流排3-203.3.3 USB匯流排3-223.3.4 進階的串列高速匯流排3-233.4多個互連I/O設備之間透過ISA、PCI、PCI-X和高級匯流排進行的3-電腦或者主機系統並列通信3-233.4.1 ISA匯流排3-243.4.2 PCI和PCI/X匯流排3-253.4.3 進階並列高速匯流排3-27第4章設備驅動程式和中斷服務機制4.1設備驅動程式4-34.1.1 不使用ISR的設備服務4-34.1.2 設備驅動程式ISR4-54.1.3 設備驅動程式4-84.1.4 作為設備驅動和網路函數的Linux內幕4-94.1.5 設計系統中的物理設備驅動ISR4-104.1.6 虛擬設備4-114.2系統中的並列埠設備驅動程式4-124.3系統中的串列埠設備驅動程式4-214.4內部可程式定時設備的設備驅動程式4-274.5中斷服務(處理)機制4-284.5.1 硬體和軟體相關的中斷源4-284.5.2 軟體錯誤相關的硬體中斷4-284.5.3 軟體指令相關的中斷源4-304.5.4 內部設備相關的硬體中斷4-314.5.5 中斷向量4-314.5.6 根據可遮罩和不可遮罩的中斷分類4-324.5.7 所有可遮罩中斷源的啟動(未遮罩)和禁用(遮罩)4-324.5.8 中斷掛起暫存器或者狀態暫存器4-334.6程式和程式切換週期、最終期限和中斷延遲4-334.6.1 程式、延遲和最終期限4-334.6.2 從內文保存的角度對處理器中斷服務機制的分類4-384.6.3 使用DMA通道幫助縮短中斷延遲週期4-394.6.4 滿足服務最終期限的優先等級分配4-394.6.5 硬體優先等級的軟體涵蓋4-40第5章程式設計概念及C與C++的嵌入式程式設計5.1用組合語言和高階語言C進行軟體程式設計5-25.2C程式中的元素:宣告檔、原始檔案以及預處理指令5-55.2.1 用於包含檔的include指令5-55.2.2 原始檔案5-65.2.3 配置檔5-75.2.4 預處理指令5-75.3程式元素:巨集與函數5-75.4程式元素:資料型態、資料結構、修飾字、敘述、迴圈和指標5-95.4.1 資料型態5-95.4.2 使用資料結構:佇列、堆疊、連結串列和樹5-105.4.3 修飾字5-115.4.4 條件語句、迴圈語句以及無限迴圈語句5-135.4.5 指標和NULL指標5-165.4.6 函數呼叫5-175.4.7 主程序中按照迴圈順序進行的多函數呼叫5-195.4.8 函數指標、函數佇列和中斷服務常式佇列5-215.5佇列5-235.5.1 佇列5-235.5.2 實作網路協定的佇列5-275.5.3 發生中斷時函數的排列5-295.5.4 網路中進行流量控制的FIPO佇列5-325.6堆疊5-345.7連結串列與有序連結串列5-375.7.1 連結串列5-375.7.2 活動設備驅動器(軟體時脈)的連結串列5-485.7.3 就緒連結串列中的任務連結串列5-505.8C++嵌入式程式設計5-525.8.1 物件導向的程式設計5-525.8.2 C++的嵌入式程式設計5-525.9用Java進行嵌入式程式設計5-555.9.1 什麼時候用Java程式設計5-555.9.2 Java的缺點5-555.10C程式編譯器與交叉編譯器5-585.10.1 編譯、可執行以及定位器檔5-585.11嵌入式C/C++的原始程式碼工程管理工具5-595.12記憶體需求的最佳化5-60第6章單處理器和多處理器系統軟體發展過程中的程式模組化的概念6.1軟體實作之前對軟體分析程式的模組化6-36.1.1 資料流程圖在程式分析中的用法6-36.1.2 用於程式分析的控制資料流程圖的用法6-56.2用於事件控制或者回應時間受到限制的即時程式的程式設計模型6-76.2.1 有限狀態機模型6-76.2.2 Petri網模型6-116.3多處理器系統的模組化6-186.3.1 多處理器系統中的問題6-206.3.2 模型6-216.3.3 同步資料流程圖模型6-216.3.4 同構的同步資料流程圖模型6-226.3.5 無環優先擴展圖模型6-246.3.6 定時的Petri網和擴展預測/轉換網模型6-256.3.7 多引線圖系統模型6-276.3.8 圖和Petri網在多處理器系統中的應用6-28第7章嵌入式軟體發展程式中的軟體工程實作7.1軟體的演算法複雜度7-37.2軟體發展生命週期及其模型7-57.2.1軟體發展程式中的線性順序模型(瀑布模型或者生命週期模型)7-57.2.2 RAD模型7-67.2.3 增量模型7-67.2.4 同時模型7-77.2.5 基於元件(物件導向)的軟體發展程式模型7-77.2.6 基於第四代工具的軟體發展程式模型7-87.2.7 基於物件導向和基於第四代工具的方法7-87.3軟體分析7-87.4軟體設計7-107.5軟體實作7-137.6軟體測試、確認以及除錯7-147.6.1 測試、驗證以及確認7-147.6.2 除錯7-177.7軟體發展程式中的即時程式設計問題7-197.7.1 在需求和規範的分析中存在的問題7-197.7.2 設計和實作中存在的問題7-197.7.3 系統整合中的問題7-207.7.4 測試中的問題7-207.8軟體專案管理7-217.8.1 專案管理7-217.8.2 專案測度7-237.9軟體維護7-257.10統一模組化語言(UML)7-26第8章程式間通信與程式、任務、執行緒之同步8.1應用程式中的多個程式8-38.1.1 程式8-38.1.2 任務8-38.1.3 執行緒8-58.1.4 透過函數、ISR和任務的特徵進行區分8-68.2多工和多常式的資料共用問題8-78.2.1 資料共用問題及其解決方案8-78.2.2 對任務或者任務的臨界段使用信號量8-98.2.3 優先等級倒置問題和鎖死情況8-198.3程式間通信8-208.3.1 信號8-218.3.2 信號量標識或者互斥體用作資源鍵(用於程式的資源加鎖和解鎖)8-228.3.3 訊息佇列8-248.3.4 信箱8-258.3.5 管道8-278.3.6 虛擬(邏輯)Socket8-298.3.7 遠程程式呼叫(RPC)8-30第9章即時作業系統9.1作業系統服務9-39.1.1 目標9-39.1.2 結構9-49.1.3 核心9-59.1.4 程式管理9-69.1.5 記憶體管理9-89.1.6 設備管理9-99.1.7 檔案系統的組織和實作9-119.2I/O子系統9-139.3網路作業系統9-139.4即時作業系統與嵌入式作業系統9-159.4.1 即時作業系統9-159.4.2 在嵌入式系統中何時需要RTOS9-169.4.3 RTOS的多工排程管理9-189.4.4 即時系統中透過RTOS進行的多工排程9-209.5RTOS環境中的中斷常式:RTOS的中斷源呼叫處理9-229.5.1 透過中斷源直接呼叫ISR9-239.5.2 透過中斷源以及排程任務的暫時掛起,直接呼叫RTOS9-239.5.3 透過中斷源以及RTOS對任務和ISR的排程,直接呼叫RTOS9-249.6RTOS任務排程模型,作為性能測度的中斷延遲和任務反應時間9-249.6.1 使用就緒任務迴圈佇列的協同輪轉排程9-259.6.2 使用按照優先等級限制排串列表的就緒任務的協同排程9-279.6.3 時間片段的迴圈排程(速率單調的協同排程)9-299.6.4 排程程式控制的搶佔式排程模型策略9-309.6.5 搶佔式排程程式提供的臨界段服務9-339.6.6 任務的固定(靜態)即時排程9-359.6.7 排程演算法中的優先等級分配9-369.6.8 使用概率定時Petri網(隨機)和多執行緒圖(MTG)的進階排程演算法9-369.7週期、偶發以及非週期任務的排程模型的性能測度9-379.7.1 使用CPU負載作為性能尺度9-379.7.2 偶發任務模型9-389.8為RTOS的標準化和任務內部通信函數採用的IEEE標準POSIX1003.1B9-399.9搶佔式排程程式的基本作業及其在處理器上預期耗費的時間9-409.10用於程式間、ISR間、OS函數間和任務之間同步及資源管理的條策略9-419.11嵌入式LINUX的內部組織:設備驅動程式和嵌入式系統的LINUX核心9-439.12作業系統的安全問題9-469.13行動式作業系統9-47第10章即時作業系統程式設計工具:MicroC/OS-II和VxWorks10.1測試穩定且除錯合格的即時作業系統的必要性10-310.2μC/OS-II10-510.2.1 RTOS系統級函數10-610.2.2 任務服務函數及其使用範例10-1010.2.3 時間延遲函數10-1810.2.4 函數相關的記憶體分配10-2110.2.5 信號量相關函數10-2510.2.6 信箱相關函數10-4010.2.7 佇列相關函數10-5310.3VxWorks10-6810.3.1 基本特性10-6910.3.2 系統庫存函數宣告檔案中的任務管理庫10-7110.3.3 VxWorks系統函數和系統任務10-7710.3.4 程式(任務)間通信函數10-80第11章RTOS程式設計案例研究11.1使用MUCOSRTOS對巧克力自動販賣機編碼11-211.1.1 案例定義、多工及其函數11-211.1.2 建立任務、函數和IPC11-611.1.3 程式設計步驟範例11-811.2使用RTOSVxWorks將應用層位元組串流發送到TCP/IP網路上11-2211.2.1 案例定義、多工及其函數11-2311.2.2 建立任務、函數和IPC11-2711.2.3 編碼步驟範例11-2811.3汽車自動感應巡航控制系統的嵌入式系統11-5411.4智慧卡中的嵌入式系統11-7111.4.1 嵌入式硬體11-7211.4.2 嵌入式軟體11-74第12章嵌入式系統中的軟硬體12.1嵌入式系統專案管理12-312.2系統開發過程中嵌入式系統設計和協同設計問題12-412.2.1 嵌入式系統開發過程的目標12-412.2.2 行動計畫12-412.2.3 完整的規範和系統需求12-512.2.4 原理設計12-612.2.5 軟硬體佈局設計12-612.2.6 詳細設計12-812.2.7 實作工具12-812.2.8 測試12-912.3嵌入式系統開發階段中的設計週期12-912.4目標系統或其模擬器和內置電路模擬器(ICE)12-1012.4.1 使用目標系統12-1112.4.2 模擬器和ICE12-1112.4.3 用於將最終程式碼下載到ROM中的設備程式設計器12-1412.5嵌入式系統開發中的軟體工具12-1512.5.1 程式碼產生工具(組譯器、編譯器、載入器和連結器)12-1512.5.2 模擬器12-1612.5.3 嵌入式系統的原型開發、測試和除錯工具12-1812.5.4 整合開發環境12-1912.5.5 記憶體、處理器相關的程式和設備驅動程式12-2112.5.6 動態連結程式庫存函數12-2112.6示波器和邏輯分析儀在系統硬體測試中的使用12-2212.6.1 邏輯探測器或者LED測試12-2312.6.2 示波器12-2312.6.3 邏輯分析儀12-2412.6.4 位元率測量儀12-2412.6.5 用於ROM除錯的系統監控程式碼12-2412.7嵌入式系統設計中的問題12-2512.7.1 選擇合適的平臺12-2512.7.2 嵌入式系統處理器的選擇12-2612.7.3 需要考慮的因素和必需的特性12-2712.7.4 軟硬體方面的考量12-2912.7.5 性能模組化12-2912.7.6 性能加速器12-3012.7.7 嵌入式系統中OS的移植問題12-31附錄ACISC和RISC處理器系統結構和指令集範例A.1CISC和RISC處理器的指令及其處理A-1A.1.1 指令和資料的格式A-1A.1.2 定址模式A-2A.1.3 指令集A-4A.1.4 CISC和RISC系統結構A-5A.2指令集範例—ARM7A-7A.3ARM處理器的組合語言程式範例A-9附錄B嵌入式系統高性能處理器B.1ARM處理器範例B-2B.2高性能處理器範例B-4B.3加速器B-5附錄C嵌入式系統8/16/32位元微處理器及其系統結構概述C.1Intel、Motorola和PIC系列微控制器的系統結構概述C-1C.2Motorola系列CISC和RISC的新一代微控制器C-4附錄D嵌入式數位信號處理器D.1數位信號處理器的系統結構D-1D.2DSP處理器和傳統處理器的比較D-4D.3定點運算和浮點運算的比較D-5D.4嵌入式系統的DSPD-6D.4.1 TMS320C2000TM平臺D-6D.4.2 TMS320C5000TM平臺D-6D.4.3 TMS320C6000TM平臺D-7D.4.4 DSP的TMS320C24x和C28X代產品D-8D.4.5 TMS320C54x和TMS320C55x代DSPD-9D.4.6 TMS320C62x、64x和C67x代DSPD-11D.4.7 RISC環境下的OMAP5910嵌入式處理器DSPD-12D.4.8 基於SoC的解決方案TexasDSPTMS320DM310D-12附錄E嵌入式系統應用的新型處理器E.1嵌入式系統的媒體處理器E-1附錄F串列和平行匯流排F.1新的串列匯流排標準(USB2.0,IEEE1394)F-1F.2新的平行匯流排標準(CompactPCI、PCI-X)F-2附錄G嵌入式系統中的設備G.1各種形式的ROM設備G-1G.2ROM設備程式設計器G-2G.2.1 二進位映對G-3G.2.2 MotorolaS-Record格式G-3G.2.3 IntelHex-File格式G-4G.2.4 設備程式設計師的程式設計方法G-5G.3RAM設備G-7G.3.1 靜態和動態RAMG-7G.3.2 EDORAMG-8G.3.3 SDRAMG-8G.3.4 RDRAMG-9G.3.5 參數化的分散式RAMG-9G.3.6 參數化的區塊RAMG-9G.4微控制器中的並列埠G-9G.5串列通信設備G-10G.5.1 Motorola68HC11中的SPI和SCIG-10G.5.2 微控制器中的串列通信設備G-11G.6微處理器中的計時器G-13G.7各種處理器系列中的中斷源及其控制G-15G.880x86處理器的中斷G-17G.968HC11中的中斷G-18G.9.1 中斷服務G-18G.9.2 中斷源G-18附錄H嵌入式系統-結構、程式設計、系統設計中的重要內容H.1推薦使用的教學大綱H-1H.2CDAC嵌入式系統課程教學大綱涉及的內容H-3
第1章串列和平行匯流排嵌入式系統簡介1.1嵌入式系統1-31.1.1 系統1-31.1.2 嵌入式系統1-41.1.3 嵌入式系統的分類1-61.1.4 嵌入式系統設計者需要具備的技能1-71.2系統中的處理器1-81.2.1 系統中的處理器1-81.2.2 微處理器1-91.2.3 微控制器1-111.2.4 複雜系統的嵌入式處理器1-131.2.5 數位信號處理器1-141.2.6 嵌入式系統的專用系統處理器1-151.2.7 使用通用處理器的多處理器系統1-161.3其他硬體單元1-171.3.1 電源和低功率消耗管理1-171.3.2 時脈振盪電路和時脈單元1-201.3.3 系統需要的各種計時和計數功能的即時時脈和計時...