實時嵌入式系統 設計原則與工程實踐 ( 簡體 字) |
作者:[美]Xiaocong Fan 著 | 類別:1. -> 電腦組織與體系結構 -> 嵌入式系統 |
譯者:林賜 譯 |
出版社:清華大學出版社 | 3dWoo書號: 45889 詢問書籍請說出此書號!【缺書】 NT售價: 400 元 |
出版日:1/1/2017 |
頁數:530 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787302455592 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:嵌入式系統是在一個較大的系統中設計以執行專用功能的電子系統。實時系統為在臨界事件的最壞情況下的響應時間提供了保證,同時為非臨界事件提供了可接受的一般情況下的響應時間。當實時系統設計成為一個嵌入式組件時,這個組件就稱為實時嵌入式系統,此系統廣泛地應用在消費、工業、醫療和軍事方面。 隨著我們的日常生活越來越依賴于嵌入式技術,近幾年來,對具有開發實時嵌入式軟件技能集的工程師的需求大幅增長。結果是,培養學生在嵌入式軟件的設計和實現方面的能力變得日益重要。本書專門為高年級本科生或攻讀軟件工程、計算機工程或相關學科的研究生撰寫,但也有益于專注嵌入式軟件開發的在職工程師。 本書采用了協同合作的方法,引進了實時系統、嵌入式系統和軟件開發原則的概念和主題。讀者不僅可以深入了解有關微處理器、中斷和跨平臺開發流程的概念,意識到實時建模和調度的重要性,并且可以得到良好的軟件工程實踐的訓練,這些實踐包括建模文檔、建模分析、設計模式和系統標準的一致性。 本書介紹開發實時嵌入式軟件至關重要的三個方面。 首先,開發實時嵌入式系統軟件涉及許多活動,包括需求規格說明、時序分析、體系架構設計、多任務設計以及跨平臺的測試和調試。本書涵蓋嵌入式軟件開發的全過程,對一些主題進行全面充分的解釋,而對另外一些主題則一筆帶過(例如,調試和測試)。 具體來說,本書系統地介紹各種嵌入式軟件架構,專注于實時操作系統,這是在大型實時操作系統中采用的最先進的架構。此外,我們選擇性地強調可重復使用的設計解決方案。如表0.1所示,本書介紹許多設計模式,這些設計模式代表了在廣泛的實時嵌入式系統中可重用的最佳實踐。 表0.1 設計模式總結 類 別 模 式 名 書 中 位 置
ISR ISR-Pattern-min ISR-Pattern-server 中斷鏈 中斷級聯 中斷禁用 雙緩沖 兌現第一個請求 第4.5.1節 第4.5.2節 第4.5.3節中的圖4.7 第4.5.4節中的圖4.9 第4.5.5節中的圖4.11 第4.5.5節中的圖4.12 第12.3.2節中的圖12.17 子類化 抽象-發生 泛化層次 第6.3.3節中的圖6.25 第6.3.4節中的圖6.27 (續表) 類 別 模 式 名 書 中 位 置 軟件架構 輪詢DAS 第12.2.2節中的圖 12.10 帶有中斷的輪詢 第12.3.2節中的圖 12.16 FIFO 隊列 第12.4.1節中的圖 12.20 優先級隊列 第12.4.2節中的圖 12.21 串行端口設計模式 第14.2.2節中的圖 14.5 靜態任務調度器 基于時鐘 基于幀 計時輪 第15.2節 第15.3節 第22.3節 信號量/互斥體 會合同步模式 多實例資源保護模式 第18.3.1節中的圖 18.8 第18.4.1節中的圖 18.19 條件變量 柵欄同步模式 生產者-消費者模式 讀-寫鎖模式 第18.5.1節中的圖 18.24 第18.5.2節中的圖 18.27 第18.5.3節中的圖 18.30 消息隊列 單向排隊模式 第19.3.1節中的圖 19.5 確認-單向排隊模式 雙向排隊模式 第19.3.2節中的圖 19.6 第19.3.3節中的圖 19.7 客戶端-服務器排隊模式 第19.3.4節中的圖 19.10 管道 單向管道模式 雙向管道模式 第20.3節中的圖 20.4 第20.3節中的圖 20.4 死鎖避免 分層消息傳遞模式 第21.7.3節中的圖 21.8 DAS,檢測-確認-服務;FIFO,先進先出;ISR,中斷服務例程
其次,統一建模語言(Unified Modeling Language,UML)是用于指定、可視化、構造和文檔化軟件系統的圖形語言。在各種工程問題中,從單進程的嵌入式系統和單機用戶應用程序到并發分布式系統,UML都發揮著重大的作用。本書詳細描述編寫本書時最新的UML標準:UML 2.4。整本書中,UML圖同時用于系統設計和概念說明。特別是,我們詳細介紹了UML實時配置文件,這樣學生可以學習如何以專業的方式記錄他們的實時系統設計。 另外,POSIX(即“可移植操作系統接口”)是開放性的操作系統接口標準,在各種Unix操作系統變體之間用于開發互操作性和可移植性好的應用程序。構建在實時操作系統上的軟件系統可以很容易地移植到其他POSIX兼容的操作系統上。 本書使用的是POSIX.1-2008(2013年版)。本書中涵蓋的操作系統實現和概念與POSIX.1 -2008標準完全兼容。書中提供的示例代碼已在工業界廣泛采用的操作系統QNX中測試。由于QNX是POSIX兼容的,因此在不改變源代碼的情況下,也可以在另一個POSIX兼容的操作系統中編譯并執行程序。 簡單而言,本書由以下4部分組成: ● 第Ⅰ部分專門介紹實時嵌入式系統和迭代開發過程的基礎知識。雖然我們重點放在軟件方面,但完全與底層硬件隔離既不可行、也不可取。由于這個原因,這個部分也包含微處理器和中斷兩個章節——這是希望構建嵌入式系統軟件工程師的基本主題。 ● 第Ⅱ部分專門講述實時系統的建模技術。具體來說,我們介紹UML所涵蓋的建模工具——UML是在學術界和軟件工業中普遍接受的一個標準。此外,我們介紹實時UML——指定系統模型中與實時相關約束的配置文件。全書一致地使用了UML圖來說明關鍵的概念和設計模式。 ● 第Ⅲ部分專門討論實時嵌入式系統的軟件架構設計。我們開始于通用架構,這帶領我們來到了最復雜的架構——實時操作系統。然后,我們的焦點切換到多任務和實時調度——這是每一個實時嵌入式系統設計師都要解決的兩個關鍵問題。 ● 第Ⅳ部分專門講解系統實施。我們特別專注于在POSIX兼容的操作系統中可用的機制;這個方法意味著本書中給出的設計/實施模式也適用于其他POSIX兼容的操作系統。 這4個部分共有23個章節。在一個學期的課程中,教師可以為學生講授感興趣的部分章節。例如,在第3章中,為了在一個或兩個課時中完成授課,可以跳過一些微處理器類型。如果在軟件工程原則的預修課程中學過UML基礎建模概念,那么第6章、第7章和第8章可用于自我閱讀的任務或僅用作參考。根據不同的學生對操作系統基本概念的熟悉程度,在第Ⅳ部分中提到的一些主題(例如,消息隊列、管道和信號),教師可以因材施教。
|
內容簡介:本書融入了實時系統、嵌入式系統和軟件工程的新概念和新主題,為開發實時嵌入式應用軟件描繪了一幅完整的圖像。在本書中,你不僅可以全面地理解與微處理器、中斷和系統引導過程相關的概念,領略到實時建模和調度的重要性,而且也將學習建模文檔、建模分析、設計模式和標準的一致性等軟件工程實踐。 本書分為四個部分,幫助你學習嵌入式系統的關鍵概念;第Ⅰ部分介紹了開發過程,包括微處理器和中斷章節——這是軟件工程師的基本主題;第Ⅱ部分專門介紹了實時系統的建模技術;第Ⅲ部分討論了軟件體系架構的設計;第Ⅳ部分檢驗了軟件的實現,并重點關注POSIX兼容的操作系統。 主要特色 ◆ 涵蓋了最新的UML標準(UML 2.4) ◆ 超過20種具有代表性,可以在一個非常廣泛的實時嵌入式系統系列中重用的最佳的設計模式實踐 ◆ 在QNX中通過測試的示例代碼,QNX是在行業中廣泛采用的實時操作系統。 主要內容 ◆ 不同嵌入式系統架構的利弊 ◆ POSIX實時擴展以及如何開發POSIX兼容的實時應用程序 ◆ 如何使用實時UML記錄具有時序約束的系統設計 ◆ 與跨平臺開發相關的概念以及所面臨的挑戰 ◆ 多任務設計和任務間通信技術(共享內存對象、消息隊列、管道、信號) ◆ 如何使用內核對象(如信號量、互斥體、條件變量)來解決RTOS應用程序資源共享的問題 ◆ 支持“資源管理器”這個概念的原理,以及如何使用資源管理器實現虛擬文件系統 ◆ 實時調度和幾個關鍵算法的基本原則 |
目錄:第Ⅰ部分引言第1章嵌入式系統和實時系統導論1 1.1嵌入式系統3 1.2實時系統4 1.2.1軟實時系統4 1.2.2硬實時系統5 1.2.3實時系統的范圍6 1.3案例分析:雷達系統7 1.4習題10 第2章跨平臺開發11 2.1 跨平臺開發流程11 2.2硬件架構12 2.3 軟件開發13 2.3.1 軟件設計13 2.3.2 系統編程語言C/C++13 2.3.3測試硬件無關模塊18 2.4生成目標映像18 2.4.1交叉開發工具鏈18 2.4.2可執行和鏈接格式21 2.4.3內存映射26 2.4.4案例研究:制作QNX映像28 2.5轉移可執行文件對象到 目標平臺29 2.6在目標系統上的集成測試30 2.7系統生產30 2.8習題31 第3章微處理器入門33 3.1微處理器簡介33 3.1.1常用的微處理器33 3.1.2微處理器特性35 3.2PIC18F8720微型芯片38 3.2.1存儲器組織39 3.2.2字寫模式41 3.2.3字節選擇模式43 3.2.4字節寫模式45 3.3Intel808646 3.3.1存儲器組織47 3.3.2獨立的I/O地址空間48 3.3.3存儲器地址空間50 3.3.4等待狀態52 3.4IntelPentium53 3.4.1總線狀態轉換56 3.4.2存儲器組織60 3.5ARM926EJ-S61 3.6習題64 第4章中斷67 4.1中斷導論67 4.2外部中斷67 4.2.1非向量中斷68 4.2.2PIC和向量中斷69 4.3軟件中斷74 4.4內部中斷75 4.5ISR的設計模式75 4.5.1一般的ISR設計模式75 4.5.2具有服務器任務的ISR76 4.5.3ISR鏈77 4.5.4ISR級聯78 4.5.5與ISR進行數據共享79 4.6中斷響應時間81 4.7案例分析:x8682 4.7.1硬件中斷84 4.7.2綜合匯總85 4.8案例研究:ARM處理器86 4.8.1硬件中斷87 4.8.2綜合匯總90 4.9習題91 第5章嵌入式系統的引導過程93 5.1系統引導加載程序93 5.2系統的引導過程94 5.2.1加載嵌入式軟件94 5.2.2準備執行嵌入式軟件95 5.3案例研究:AT91SAM9G45 引導過程96 5.4加載嵌入在操作系統映像中的 ELF目標文件96 5.5案例研究:基于QNX嵌入式 系統的引導過程97 5.6習題99 第Ⅱ部分實時系統建模 第6章UML結構建模基礎103 6.1統一建模語言103 6.2類圖和類建模104 6.2.1類106 6.2.2實例層次的關系109 6.2.3依賴關系121 6.2.4泛化關系125 6.3類建模原則128 6.3.1模型演化128 6.3.2子類化130 6.3.3最小信息冗余131 6.3.4重構134 6.4對象圖137 6.5包圖138 6.5.1包引入138 6.5.2包合并139 6.6習題141 第7章UML體系架構建模143 7.1體系架構的抽象層次143 7.2UML結構圖144 7.3建模組件148 7.4子系統建模150 7.5完整系統建模153 7.6部署圖154 7.7習題155 第8章UML行為建模的基礎157 8.1用例圖和用例建模157 8.1.1用例圖157 8.1.2用例描述160 8.1.3用例層次161 8.2序列圖162 8.3活動圖167 8.4習題171 第9章UML中有狀態行為的建模173 9.1狀態機圖的基礎173 9.1.1狀態173 9.1.2轉移和事件174 9.1.3偽狀態175 9.1.4用狀態機對網絡協議建模176 9.2復合狀態178 9.2.1進入點、退出點與歷史179 9.2.2并發180 9.3狀態行為的繼承181 9.4有狀態對象時序圖183 9.5舉例:雷達系統有狀態行為 的建模184 9.5.1收發機建模185 9.5.2鏈路驅動器的建模186 9.5.3指揮消息器的建模188 9.6習題189 第10章實時UML:通用資源 建模191 10.1實時UML配置文件191 10.2資源建模194 10.2.1UML核心資源模型195 10.2.2動作和動作執行196 10.2.3受保護資源的UML構 造型197 10.2.4資源使用199 10.2.5資源-客戶圖200 10.3時間建模201 10.3.1時間觀念201 10.3.2定時裝置202 10.3.3時間建模構造型204 10.4并發建模206 10.5習題209 第11章實時UML:模型分析211 11.1時序約束的啟發211 11.2RT-UML配置文件可調度性 建模子配置文件214 11.2.1RT-UML配置文件中的可 調度性分析的元概念214 11.2.2可調度性構造型219 11.2.3使用可調度性子配置 文件221 11.3RT-UML配置文件性能建模 子配置文件223 11.3.1RT-UML配置文件中的性 能分析的元概念223 11.3.2性能構造型225 11.3.3使用性能子配置文件227 11.4習題231 第Ⅲ部分實時系統設計 第12章實時嵌入式系統軟件 架構237 12.1實時任務237 12.1.1最壞情況下的任務執行 時間238 12.1.2任務規范239 12.1.3任務時序圖239 12.1.4最壞情況下的響應時間241 12.1.5任務實現242 12.2輪詢架構242 12.2.1案例研究:體溫計242 12.2.2通用輪詢架構250 12.2.3最壞情況下的事件響應 時間253 12.3帶有中斷的輪詢254 12.3.1案例研究:西蒙游戲254 12.3.2通用架構257 12.3.3最壞情況下的事件響應 時間259 12.4基于隊列的架構260 12.4.1非搶占式FIFO隊列261 12.4.2非搶占式優先隊列262 12.5習題264 第13章POSIX和RTOS267 13.1POSIX簡介267 13.1.1POSIX進程和線程268 13.1.2POSIX實時擴展269 13.1.3POSIX的兼容性和一 致性275 13.2任務的靜態結構和動態 行為276 13.2.1一般任務結構276 13.2.2任務狀態轉移278 13.3實時操作系統279 13.4POSIX實時調度策略282 13.4.1FIFO調度策略282 13.4.2輪詢調度策略283 13.4.3偶發服務器調度策略284 13.5其他實時調度策略286 13.5.1最小松弛度優先286 13.5.2最早截止期限優先287 13.5.3截止期限單調分配的 調度288 13.5.4速率單調分配的調度288 13.6習題289 第14章多任務291 14.1多任務簡介291 14.2多任務設計292 14.2.1任務標識292 14.2.2任務轉換295 14.2.3任務參數估計299 14.3多任務資源共享301 14.3.1資源死鎖301 14.3.2優先級反轉302 14.4解決資源死鎖304 14.4.1死鎖預防304 14.4.2死鎖檢測304 14.4.3死鎖避免305 14.5解決優先級反轉307 14.5.1優先級繼承協議307 14.5.2最高鎖協議309 14.5.3優先級天花板協議310 14.6習題312 第15章實時調度:時鐘驅動 方式315 15.1周期性調度簡介315 15.1.1若干假設315 15.1.2可搶占的非周期作業316 15.2點對點時鐘驅動調度317 15.2.1點對點時鐘驅動調度 程序318 15.2.2執行開銷319 15.3基于幀的調度320 15.3.1幀尺寸的約束320 15.3.2健壯的基于幀的調度323 15.3.3基于幀的調度程序324 15.4調度非周期作業325 15.5拆分任務328 15.6習題330 第16章實時調度:速率單調 方式331 16.1優先級分配331 16.2RMA原則332 16.3速率單調分析335 16.4完成時間測試336 16.5周期變換339 16.6通用的可調度性分析342 16.6.1具有阻塞時間項的任務342 16.6.2具有更早截止時間的 任務346 16.6.3示例347 16.6.4優先級相同的任務350 16.7習題351 第17章實時調度:偶發服務器 程序355 17.1偶發任務355 17.2偶發服務器程序356 17.2.1偶發服務器程序的相關 任務設計356 17.2.2驗收測試358 17.3樸素偶發服務器程序360 17.3.1任務設計361 17.3.2驗收測試361 17.4固定優先級的偶發服務器 程序362 17.5具有動態優先級的偶發 服務器程序368 17.6習題371 第IV部分實現模式 第18章資源共享375 18.1共享變量375 18.2共享的內存378 18.2.1映射文件對象380 18.2.2共享的內存對象382 18.3信號量384 18.3.1任務同步385 18.3.2流控制387 18.3.3資源保護387 18.3.4信號量相關的POSIX 函數389 18.3.5信號量示例390 18.4互斥體397 18.4.1互斥體使用模式398 18.4.2互斥體相關的POSIX 函數400 18.4.3使用互斥體的例子401 18.5條件變量404 18.5.1柵欄同步405 18.5.2生產者-消費者模式410 18.5.3讀-寫鎖414 18.6習題418 第19章任務間通信:消息隊列421 19.1消息隊列簡介421 19.2消息隊列靜態結構和動態 轉移421 19.3消息隊列使用模式424 19.3.1單向通信424 19.3.2確認-單向通信425 19.3.3雙向通信426 19.3.4客戶端-服務器之間的 通信427 19.4與消息隊列相關的POSIX 函數430 19.5使用消息隊列的例子432 19.6習題437 第20章任務間通信:管道439 20.1管道簡介439 20.2管道的靜態結構和動態 狀態轉移439 20.3管道使用模式442 20.4與管道相關的POSIX函數442 20.4.1多個作者和讀者444 20.4.2在管道上POSIX的選擇 操作445 20.5使用管道的示例446 20.6習題451 第21章任務間通信:發送信號453 21.1POSIX信號簡介453 21.2信號處理455 21.3信號向量表和處理程序455 21.4POSIX信號函數456 21.5POSIX信號的QNX實現457 21.5.1示例:在不同進程中處理 信號457 21.5.2示例:控制任務服務器460 21.6來自ISR的自旋鎖和中斷 事件463 21.6.1POSIX自旋鎖463 21.6.2QNX事件結構464 21.6.3QNX應用程序的中斷 處理465 21.6.4示例:來自ISR的中斷 事件466 21.7QNX脈沖473 21.7.1QNX同步消息傳遞473 21.7.2QNX異步脈沖發生機制476 21.7.3分層消息傳遞模式478 21.7.4消息接收者的優先級 繼承478 21.7.5示例:簡單的計時管 理器479 21.8習題488 第22章軟件計時器管理489 22.1硬件計時器和軟件計時器489 22.2軟件計時管理器491 22.2.1鏈接到專用計時器ISR492 22.2.2使用OS計時器492 22.3計時輪493 22.3.1精度誤差495 22.3.2寬范圍計時器497 22.4分層計時輪497 22.4.1計時輪參考上下文和計時 器管理498 22.4.2實現500 22.5習題502 第23章QNX資源管理505 23.1QNX資源管理簡介505 23.2資源管理器體系架構506 23.2.1控制結構507 23.2.2關鍵數據結構508 23.3示例1:作為資源管理器的 計算器508 23.3.1上層結構509 23.3.2處理來自客戶端的消息510 23.3.3注冊到進程管理器517 23.3.4使用資源管理器518 23.4示例2:設備驅動程序520 23.4.1操縱桿520 23.4.2LED指示燈521 23.4.3基于輪詢的輸入事件 檢測523 23.5習題526 參考文獻527 縮略語531 |
序: |