引言
人們正在越來越多地選擇 Microsoft Windows XP 和 Windows XP Embedded 作業系統來運行需要某種實時性行為的專用應用程式。Windows XP Embedded 與 Windows XP
桌面軟體基於相同的
二進制檔案,它在許多方面都是可供選擇的最佳平台,但 Windows XP Embedded 和 Windows XP 自己無法管理此類系統所需要的具有嚴格實時性要求,因此需要增強該平台的實時功能。在Windows XP 平台上添加實時擴展方案時,已有許多解決方案在 Windows XP
核心設備
驅動程式提供了某種實時功能,但此類解決方案沒有考慮到為用戶提供可容易進行應用程式開發的套用環境,也沒有
考慮對於許多應用程式進行調用。TenAsys Corporation 出品的 INtime 軟體可以做到不僅為應用程式增加實時性功能,並且使實時應用程式存在於強大、可靠和可調用資源的環境。
特性功能
*成熟的實時技術
*無縫實時運行,適用於Windows XP、Windows XP Embedded、Windows 2000和Windows Server 2003
*支持
多進程或系統(SMP和HT)——用於多進程/多處理器的共享或獨占式實時資源分配選項
*支持
多核處理器,支持INtime和Windows共享處理器,或者INtime獨享處理器
*完全與Microsoft Visual Studio .NET相集成——可編輯、編譯、連結和調試實時應用程式,而無需退出Visual Studio .NET環境
*可伸縮的體系結構——實時應用程式可與Windows一起本地運行或跨多節點運行
*用於實時應用程式的完全記憶體保護和地址隔離
*實時TCP/IP通信stack——可獨立於Windows網路stack運行
*提供了DeviceNet、PROFIBUS、CANopen和ControlNet等驅動程式
*實時USB stack支持OHCI、UHCI和EHCI控制器
*提供了GPIB(IEEE-488)和
運動控制實時設備驅動程式
*直接I/O和記憶體映射,可訪問所有的硬體
*用於周期性事件中斷的系統計時器粒度,其精度達100 μs,
多核系統可以達到50us
*可載入實時庫的實時共享庫(RSL)
*用於實時對象瀏覽和崩潰分析的INtime Explorer工具(INtex)
*INscope實時系統性能分析工具
簡介
INtime實時作業系統與Windows的完美結合
INtime實時作業系統(RTOS)
For
Windows 7
Microsoft Windows XP
Microsoft Windows XP Embedded
Microsoft Windows XP Embedded with Service Pack 1
IRMX® RTOS 技術的發展已有25年以上的歷史,非常的成熟、可靠。INtime以此技術為基礎,它將強大的工業級控制與豐富的Windows功能相結合,從而使得應用程式能夠充分利用所有Windows特性和成千上萬現有的應用程式,而無需犧牲實時回響。使用TenAsys軟體來執行實時Windows應用程式不僅能夠降低軟體的複雜性,而且還可以壓縮冗餘的硬體成本,顯著地壓縮了產品上市時間。
通過使用INtime軟體,可獲得非常精確且穩定的的微秒級回響時間,並絲毫不會降低安全性、可靠性和系統性能。正如Windows應用程式在用戶模式下(ring3)執行時一樣,通過INtime的保護模式
編程模型來進行管理的實時應用程式也可在用戶模式下執行,因而獲得高穩定性。其他類型的解決方案要求實時應用程式在Windows核心中(ring0)完全無保護地運行,在這種情況下,可導致錯誤指針、
棧溢出、
頁面錯誤等
編程錯誤,這些將會十分明顯的影響到實時環境和Windows環境的穩定性。但是,如果在INtime受保護的實時系統內部運行實時應用程式,就絕對不會發生這種問題。
TenAsys實時作業系統已在全球成千上萬種應用程式中得到驗證,並且至今已無故障運行了數百萬小時。
系統體系結構
INtime 是與 Windows 作業系統共享硬體平台的實時作業系統。Windows中安裝的組件包括一個 Windows核心
驅動程式和一些 Windows 服務。該
驅動程式管理用於運行
核心和實時應用程式的記憶體,並且管理這兩個系統之間的通訊接口。
Windows將實時
核心載入到已分配的記憶體中,然後使Context從 Windows 切換到 INtime 核心。將創建一個低優先權執行緒,其功能是將計算機Context切換回 Windows 系統。因為該執行緒將被所有其他實時執行緒占先,所以只要牽涉到實時
核心,Windows 系統都是
實時系統的空閒任務。 在 INtime中,任何實時中斷都被直接處理,並且所有其他中斷都在中斷控制器被禁止。當Context返回到 Windows 時,這些中斷將被解除禁止,以使其可以被 Windows 正常處理。當在 Windows Context中發生實時中斷時,將插入 Windows IDT 以引起到 INtime Context的
上下文切換,以便可以處理中斷。
系統計時器通常在 Windows 和 INtime 之間共享。硬體計時器被改編以便以 Windows 要求的速率更高的速率中斷,並且只根據需要調用 Windows 處理程式。通常情況下,INtime 核心以高得多的速率(時間間隔可以低至 100μs)獲得計時器中斷,以便提供更精確的計時服務。計時器處理最佳化能夠避免在 Windows 和 INtime 之間進行不必要的Context切換。
某些硬體抽象層 (HAL) 入口點被截獲和監控,以便防止 Windows 核心執行某些不需要的操作,例如禁止實時中斷或者更改
硬體系統計時器頻率。HAL 檔案不是由軟體修改或替換的。
INtime 核心為實時
虛擬機提供作業系統服務。它提供此類核心通常會提供的實時服務,包括一個基於優先權的搶先式計畫程式,該程式執行基於優先權的
中斷處理。
執行緒優先權的範圍是從 0(最高優先權)到 255(最低優先權),低於可配置的優先權閾值的執行緒可以與多個具有相同優先權的執行緒分享其
時間片。核心計畫程式已經進行最佳化,以獲得最佳的中斷性能。得到的平台表現出良好的性能,最重要的是它的行為是可預測的。
1 應用程式環境
INtime 應用程式環境被設計為具有下列功能:
每個進程都是其他對象(包括執行緒和
物理記憶體)的容器。由該進程所屬執行緒創建的每個對象都由該進程所有,並且在進程終止時不再存在。
每個進程都具有一個與其他進程的
地址空間隔離的平面
虛擬地址空間。進程中的代碼以用戶模式(IA 許可權等級 3)執行,從而防止意外訪問系統對象和數據。
每個進程都可以直接訪問處理器的輸入/輸出 (I/O) 空間,而且可以直接訪問物在任何進程中,都可以通過系統調用以及用戶為
中斷處理程式和執行緒編寫的代碼來直接處理中斷。
錯誤是按進程分別處理的。默認情況下會掛起出錯的執行緒,並且向全局信箱中寫入一個記錄。可以更改默認操作,以便能夠在出錯地址進入
靜態系統調試器或應用程式調試器。進程還可以選擇獲得有關該進程中錯誤的通知。
2 提供了多個 API 以便進程可以使用系統服務。下面的部分中將詳細介紹這些 API。
通過將請求轉發給 Windows 服務以執行所請求的操作,向實時應用程式提供 Windows 服務(對註冊表、事件日誌和檔案系統的訪問)。
實時API
INtime
核心提供的標準 API 提供了適合於同步和通訊的對象,以及在進程之間(包括 INtime 和 Windows 進程之間)
共享記憶體的手段。所有對象都通過句柄引用,並且所有句柄對於實時系統都是全局的。對象包括:
(1)進程
進程擁有其他對象(包括其他進程)和
物理記憶體。當進程創建時,將向其分配一個
記憶體池,它限制了可以分配給該進程的
物理記憶體的數量。儘管 INtime
核心使用
分頁硬體進行
記憶體管理,但它並不採用請求調頁功能。因此,進程被限制在它可以分配的
物理記憶體量的範圍內。進程還具有對象編錄,可以在此命名對象。可以按名稱搜尋該編錄。
執行緒總是由某個進程所有,並且執行緒所創建的對象由其進程所有。執行緒會被分配一個優先權,範圍為從 0 到 254,其中 0 是最高優先權。
這些同步對象由一個
執行緒佇列和一個計數器組成,類似於 Microsoft Win32
信號量。對象創建時,所有 INtime 執行緒
佇列都可以被指定為先入先出 (FIFO) 佇列或
優先權佇列。如果是 FIFO 佇列,則執行緒按照等待順序排隊;如果是優先權佇列,則執行緒的排隊方式為優先權較高的執行緒出現在隊頭。
(4)區域
這些對象是單個單元
信號量,帶有防止優先權顛倒的保護。它們採用標準的優先權提升技術,以避免這種情況。另外,擁有區域的執行緒不能刪除,除非它放棄該區域。這些對象類似於 Win32
臨界區。
(5)信箱
這些對象由一個執行緒佇列和一個
訊息佇列組成。信箱可以將兩種類型的訊息排隊。訊息可以是其他對象的句柄,也可以是最多包含 128 個位元組的數據訊息。在 Win32 中沒有直接等效的對象。
(6)堆
其他記憶體對象
可以為記憶體區域創建一個句柄,並且隨後將該句柄傳遞給另一個進程以進行映射。然後,可以從這兩個進程中訪問該記憶體。
實時 API 提供參數檢查和內聯狀態報告。
(1) Win32 API
儘管 Win32 API 缺少一些用於實時
編程的有用功能,INtime 仍然提供了一個 Win32 API,以便方便地從 Windows 應用程式傳輸代碼。該實現是 Windows CE Win32 實現的豐富子集,包括 Win32 對象的有用子集 (WaitForMultipleObjects),並帶有擴展以管理中斷和外圍設備互聯 (PCI)
匯流排配置。
(2) Windows API
為 Windows 應用程式提供了 API,以使其能夠共享在實時
核心上創建的對象。標準的實時對象和 Win32 對象都是可共享的,以便 Windows 和實時應用程式可以同步和共享數據。阻塞調用由實時
核心上的代理
執行緒池處理。
(3)C 庫與 C++ 支持
INtime 提供了美國國家標準局(與 ANSI 兼容)的 C 庫,以及用
標準模板庫 (STL) 提供了對 EC++ (Embedded C++) ANSI 標準的支持。
(4)其他服務
提供了一個傳輸控制協定/
網際協定 (TCP/IP) 的協定組,它派生於 BSD Net3 體系結構。為 Intel、3Com 和 Realtek 接口適配器提供了
乙太網驅動程式,並且為與 NE2000 兼容的 ISA 接口提供了乙太網驅動程式。通過串列線路網際協定 (SLIP) 支持
串列鏈路。 以開發工具包的形式提供了 USB 支持,以便開發 USB 客戶端軟體。為 Universal Host Controller (UHCI)、Open Host Controller (OHCI) 和 Enhanced Host Controller (EHCI) 接口提供了標準驅動程式。為一系列標準接口和行業接口提供了其他驅動程式。
(5)可靠性功能
INtime 的用於增強可靠性的功能包括針對非災難性系統錯誤的異常處理以及 Distributed System Manager (DSM) ,它可以監控 INtime 和 Windows 進程,並可以在 Windows 作業系統失敗時進行檢測和提供幫助。
INtime 核心設計所關注的主要問題之一是提供處理系統異常錯誤(一般性保護錯誤、
頁面錯誤、
堆疊錯誤等等)的非災難性手段,並且儘量減少對實時核心和 Windows 系統的損害。因此,實時系統具有一個默認
異常處理程式,該程式會向全局信箱中寫入一個記錄,詳細描述出錯的執行緒及其環境,然後掛起出錯的執行緒。可以從 INtime 或 Windows 系統中監控該信箱,並且存在可以從錯誤記錄中提取信息(包括暫存器轉儲、
堆疊跟蹤和相關調試信息)的工具。
(7)Distributed System Manager
Distributed System Manager(“DSM”)是一個協作性
多進程應用程式,用於管理整個 INtime 系統。任何進程(Windows 或 INtime)都可以選擇監控任何其他參與協作的進程,或者被其他參與協作的進程監控。如果被監控的進程被刪除,或者到該進程的通訊途徑被中斷,或者 Windows 系統或 INtime 系統被破壞,都會向監控進程傳送通知訊息。可以使用該服務來提供系統級完整性。
(8)Windows 停止處理
DSM 的一個重要優點是它能夠檢測到 Windows 平台何時失敗。如果出現這種情況,INtime 核心中的 DSM 軟體將通知所有參與的進程 Windows 已經失敗,並且還將負責調度 Windows 的執行緒掛起。此時,INtime
核心可以繼續無限期地執行其進程,而這些進程可以選擇在此情況下採取特殊操作,例如使外圍設備進入已知狀態。在稍後某個時刻,實時進程可以選擇恢復 Windows 執行緒,並使 Windows 可以繼續關閉和重置計算機。
(9)可擴展性功能
INtime 作業系統能夠支持複雜的大型應用程式。在上述共享體系結構中,已經發現典型的平台能夠允許 INtime 核心消耗 CPU
頻寬的 50% 到 60%,然後 Windows
圖形用戶界面 (GUI) 和其他服務才會開始受到不利影響。INtime 中獨立核心的優勢是可以將它重定位到另一 CPU 或另一平台,從而使應用程式能夠隨著其對平台的需求的增加而擴大規模。接口模式將從虛擬機體系結構更改為
共享記憶體,然後又更改為物理通訊鏈路(如
乙太網或串列線路),但 Windows 和實時應用程式之間的
軟體接口不會改變。這樣,無論選擇了哪種硬體體系結構,都可以使用相同的二進制檔案。
小結
TenAsys Corporation 的 INtime 軟體被設計為不僅能夠向 Windows 平台添加實時功能,而且其添加這些功能的方式能夠為實時應用程式提供可靠且可伸縮的平台。如果將該解決方案與 Windows XP Embedded 配合使用,則能夠為您的
嵌入式設備提供強大的、可擴展的、確定性的作業系統。