0731-84728105
15116127200
ZYNQ RTOS解決方案

一(yī)、 引言

    支持 FAST 開源架構的(de) OpenBox-S4 平台的(de)核心器件采用的(de)是 Xilinx 公司的(de) ZYNQ 系列芯片的(de)産品,該平台目前是 FAST 開源社區的(de)主要适配平台,支持所有(yǒu)的(de) FAST 開源項目,如(rú) SDN、TSN 等。時間敏感網絡(TSN:Time Sensitive Networking)是以以太網
    為(wèi)基礎的(de)新一(yī)代網絡标準,具有(yǒu)時間同步、延時保證等确保實時性的(de)功能。
    FAST 開源社區目前已經完善了在真實物理(lǐ)網絡傳輸環境下的(de) TSN 功能适配,湖南新實也推出了一(yī)體化的(de) TSN 綜合演示方案。随着我們對 TSN 技術的(de)不斷深耕,支持 TSN功能、适配 TSN 業務軟件的(de)綜合系統應用環境也将逐步推出。
    ZYNQ RTOS 顧名思義就是在 ZYNQ 平台上運行(xíng) RTOS(Real Time Operating System,簡稱 RTOS),更準确的(de)說就是在 OpenBox-S4 上運行(xíng)實時操作系統,更好的(de)支持 TSN技術。

二、 RTOS 背景

    How fast is fast enough? 實時是一(yī)種相對概念。根據應用場景與用戶需求不同,實時的(de)響應時間要求不同,其實現方法也各有(yǒu)差異。支持 ZYNQ 的(de)實時解決方案分為(wèi)如(rú)下幾種:
1. SMP 的(de)親和(hé)
    SMP(對應多處理(lǐ)器)的(de)親和(hé)是指将業務處理(lǐ)邏輯親近在某些或某個特定的(de) CPU核上進行(xíng)處理(lǐ),減少 CACHE 失效帶來不确定的(de)查表延時。CPU 的(de)親和(hé)包括軟件邏輯的(de)親和(hé)與中斷的(de)親和(hé)。中斷的(de)親和(hé)其實也是為(wèi)了讓軟件邏輯親和(hé)在指定的(de)核上工作。通過親和(hé)的(de)方式可(kě)以對邏輯的(de)性能帶來一(yī)定的(de)提升,處理(lǐ)延時也會得到一(yī)些改善。但親和(hé)改善的(de)主要關鍵在于 CACHE 的(de)失效,故隻對一(yī)些數據 IO 密集形業務有(yǒu)改善,延時的(de)穩定性也與數據分布相關。
2. PREEMPT_RT
    PREEMPT_RT 是 Linux 內(nèi)核的(de)一(yī)個實時補丁。主要目的(de)是為(wèi)了提高(gāo) Linux 的(de)延時響應時間。補丁代碼需要替換內(nèi)核中成千上萬行(xíng)的(de)代碼,需要适配不同的(de)支持設備,而且為(wèi)了保證實時,也犧牲了系統整體的(de)吞吐量。由于這些不盡理(lǐ)想的(de)代價權衡,至今為(wèi)止,該補丁仍未融入到 Linux 內(nèi)核的(de)主線版本中來。
3. Enea LWRT
    Enea LWRT 是一(yī)種商(shāng)業解決方案,主要是在用戶空間提供無中斷(上下文切換)的(de)代碼執行(xíng)環境。整個系統分為(wèi)兩部分,一(yī)部分為(wèi)實時分區,另一(yī)部分為(wèi)非實時分區。其中實時部分既可(kě)以使用部分系統屏蔽的(de)的(de) CPU 核來運行(xíng),也可(kě)以在內(nèi)核中嵌入實時模塊來支持。實時的(de)用戶空間提供了一(yī)些輕量級的(de)線程 API 和(hé)管理(lǐ)模塊。
4. 裸機(jī) AMP
    AMP(非對稱多處理(lǐ)器)的(de)最直接方案就是 Xilinx 提供的(de)裸機(jī) APP 應用。Linux 系統運行(xíng)在一(yī)個專門的(de) CPU 核上,通常是 CPU0,然後通過 FSBL 将裸機(jī) APP 或可(kě)執行(xíng)代碼加載到 CPU1 上運行(xíng)。由于操作系統運行(xíng)在 CPU0 上,在 CPU1 上僅運行(xíng)業務邏輯代碼,不存在上下文切換,調度等任何其他帶來的(de)延時開銷,故該方法可(kě)以較好的(de)保證業務邏輯處理(lǐ)的(de)實時性
5. FreeRTOS
    FreeRTOS 主要由 Amazon 開發與維護,屬于 AMP 架構。Linux 系統運行(xíng)在 CPU0上,在 CPU1 上運行(xíng)支持整個實時應用環境的(de)操作系統。實時任務與非實時任務均隻在自(zì)己的(de)核上運行(xíng),但兩者之間可(kě)以相互訪問。實時訪問非實時要根據 MMU 的(de)地(dì)址定義來決定,而非實時訪問實時可(kě)以像訪問其他設備存儲一(yī)樣讀寫。
6. Xenomai
    Xenomai 是一(yī)種采用雙內(nèi)核機(jī)制的(de) Linux 內(nèi)核的(de)強實時擴展。他與 Linux 共享硬件資源,優先級高(gāo)于 Linux 內(nèi)核,負責處理(lǐ)系統的(de)實時任務。其運行(xíng)方式更像一(yī)個勾子(zǐ)系統,系統支持的(de)內(nèi)部或外部中斷觸發後,先由 Xenomai 執行(xíng),屬于實時操作的(de)任務在 Xenomai 環境下全部執行(xíng)完成,由于該環境的(de)最高(gāo)優先級,處理(lǐ)過程不會被 Linux 中斷。隻有(yǒu)非實時處理(lǐ)任務會被分派到 Linux 系統執行(xíng)。這樣就可(kě)以完全保證 Xenomai 環境任務的(de)實時要求不受 Linux 的(de)影響,提供系統的(de)實時可(kě)确定性。

三、 我們的(de)選擇

    FAST 開源架構主要面向網絡通信領域,TSN 技術更是為(wèi)了支持确定性的(de)網絡通信傳輸。通過上述的(de)幾種對實時處理(lǐ)的(de)解決方案對比,裸機(jī) AMP、FreeRTOS 和(hé) Xenomai 各有(yǒu)優勢與不足。結合目前我們在 FAST 架構上的(de)應用與開發,我們傾向選擇 Xenomai。一(yī)方面由于該方案更适合網絡應用環境,包含了從驅動、協議棧到用戶應用的(de)完整的(de)網絡應用開發示例。另一(yī)方面該方案仍然支持并使用 SMP 架構的(de)通用 Linux 系統,對用戶原有(yǒu)系統架構和(hé) FAST 原有(yǒu)支持系統與架構均不會帶來任何影響。

四、 測試與驗證

    目前系統正在測試過程中
    關于 RTOS 上的(de)實時應用開發,敬請關注 FAST 開源社區的(de)推出的(de)技術文章(zhāng)
下載該文檔