0731-84728105
15116127200
ZYNQ RTOS解決方案

一、 引言

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

二、 RTOS 背景

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

三、 我們的選擇

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

四、 測試與驗證

    目前系統正在測試過程中
    關于 RTOS 上(shàng)的實時(shí)應用(yòng)開(kāi)發,敬請(qǐng)關注 FAST 開(kāi)源社區(qū)的推出的技術文(wén)章
下(xià)載該文(wén)檔