一、 引言
支持 FAST 開源架構的 OpenBox-S4 平臺的核心器件采用的是 Xilinx 公司的 ZYNQ 系列芯片的產品,該平臺目前是 FAST 開源社區的主要適配平臺,支持所有的 FAST 開源項目,如 SDN、TSN 等。時間敏感網絡(TSN:Time Sensitive Networking)是以以太網
為基礎的新一代網絡標準,具有時間同步、延時保證等確保實時性的功能。
FAST 開源社區目前已經完善了在真實物理網絡傳輸環境下的 TSN 功能適配,湖南新實也推出了一體化的 TSN 綜合演示方案。隨著我們對 TSN 技術的不斷深耕,支持 TSN功能、適配 TSN 業務軟件的綜合系統應用環境也將逐步推出。
ZYNQ RTOS 顧名思義就是在 ZYNQ 平臺上運行 RTOS(Real Time Operating System,簡稱 RTOS),更準確的說就是在 OpenBox-S4 上運行實時操作系統,更好的支持 TSN技術。
二、 RTOS 背景
How fast is fast enough? 實時是一種相對概念。根據應用場景與用戶需求不同,實時的響應時間要求不同,其實現方法也各有差異。支持 ZYNQ 的實時解決方案分為如下幾種:
1. SMP 的親和
SMP(對應多處理器)的親和是指將業務處理邏輯親近在某些或某個特定的 CPU核上進行處理,減少 CACHE 失效帶來不確定的查表延時。CPU 的親和包括軟件邏輯的親和與中斷的親和。中斷的親和其實也是為了讓軟件邏輯親和在指定的核上工作。通過親和的方式可以對邏輯的性能帶來一定的提升,處理延時也會得到一些改善。但親和改善的主要關鍵在于 CACHE 的失效,故只對一些數據 IO 密集形業務有改善,延時的穩定性也與數據分布相關。
2. PREEMPT_RT
PREEMPT_RT 是 Linux 內核的一個實時補丁。主要目的是為了提高 Linux 的延時響應時間。補丁代碼需要替換內核中成千上萬行的代碼,需要適配不同的支持設備,而且為了保證實時,也犧牲了系統整體的吞吐量。由于這些不盡理想的代價權衡,至今為止,該補丁仍未融入到 Linux 內核的主線版本中來。
3. Enea LWRT
Enea LWRT 是一種商業解決方案,主要是在用戶空間提供無中斷(上下文切換)的代碼執行環境。整個系統分為兩部分,一部分為實時分區,另一部分為非實時分區。其中實時部分既可以使用部分系統屏蔽的的 CPU 核來運行,也可以在內核中嵌入實時模塊來支持。實時的用戶空間提供了一些輕量級的線程 API 和管理模塊。
4. 裸機 AMP
AMP(非對稱多處理器)的最直接方案就是 Xilinx 提供的裸機 APP 應用。Linux 系統運行在一個專門的 CPU 核上,通常是 CPU0,然后通過 FSBL 將裸機 APP 或可執行代碼加載到 CPU1 上運行。由于操作系統運行在 CPU0 上,在 CPU1 上僅運行業務邏輯代碼,不存在上下文切換,調度等任何其他帶來的延時開銷,故該方法可以較好的保證業務邏輯處理的實時性
5. FreeRTOS
FreeRTOS 主要由 Amazon 開發與維護,屬于 AMP 架構。Linux 系統運行在 CPU0上,在 CPU1 上運行支持整個實時應用環境的操作系統。實時任務與非實時任務均只在自己的核上運行,但兩者之間可以相互訪問。實時訪問非實時要根據 MMU 的地址定義來決定,而非實時訪問實時可以像訪問其他設備存儲一樣讀寫。
6. Xenomai
Xenomai 是一種采用雙內核機制的 Linux 內核的強實時擴展。他與 Linux 共享硬件資源,優先級高于 Linux 內核,負責處理系統的實時任務。其運行方式更像一個勾子系統,系統支持的內部或外部中斷觸發后,先由 Xenomai 執行,屬于實時操作的任務在 Xenomai 環境下全部執行完成,由于該環境的最高優先級,處理過程不會被 Linux 中斷。只有非實時處理任務會被分派到 Linux 系統執行。這樣就可以完全保證 Xenomai 環境任務的實時要求不受 Linux 的影響,提供系統的實時可確定性。
三、 我們的選擇
FAST 開源架構主要面向網絡通信領域,TSN 技術更是為了支持確定性的網絡通信傳輸。通過上述的幾種對實時處理的解決方案對比,裸機 AMP、FreeRTOS 和 Xenomai 各有優勢與不足。結合目前我們在 FAST 架構上的應用與開發,我們傾向選擇 Xenomai。一方面由于該方案更適合網絡應用環境,包含了從驅動、協議棧到用戶應用的完整的網絡應用開發示例。另一方面該方案仍然支持并使用 SMP 架構的通用 Linux 系統,對用戶原有系統架構和 FAST 原有支持系統與架構均不會帶來任何影響。
四、 測試與驗證
目前系統正在測試過程中
關于 RTOS 上的實時應用開發,敬請關注 FAST 開源社區的推出的技術文章