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