RTOS與Linux的操作系統之爭已經持續了很多年,目前RTOS和Linux之間的差距已經越來越小。
而實際上,很多場景下,RTOS和Linux存在互補關系,并且很難權衡。那么這種情況下,廠商給出了一種解決方案,那就是“我都要”。
在硬件上異構Cortex-A核和Cortex-M/R核,并通過非對稱多處理器啟動(AMP)來同時運行RTOS和Linux。
看懂多核的AMP啟動
眾所周知,目前處理器的職責是根據功能劃分的,比如Cortex-A核一般基于Linux系統實現用戶界面,Cortex-M或Cortex-R核則偏向于實時的嵌入式RTOS系統。現代許多SoC或MPU都開始采用多CPU核異構,甚至是RISC-V和Arm核的異構。
為了讓這些核心高效處理不同工作負載,目前軟件上多核處理器有三種運行模式:
AMP(Asymmetric multiprocessing,非對稱多處理)
提供與傳統單核處理器系統相似的執行環境,是大多數開發人員熟悉的模式,因此為遺留代碼移植提供了相對簡便的路徑。提供控制CPU核心使用方式的直接機制,在大多數情況下,開發人員可使用標準調試工具與技術開展工作。此外在運行裸機程序時,幾乎沒有開銷,非常適合實時性高的應用。
AMP分為“同構”與“異構”兩種:同構AMP中,每個核心運行相同類型與版本的操作系統,開發人員可選擇支持分布式編程模型的操作系統,以充分利用多核心性能;異構AMP中,每個核心運行不同操作系統,或同一操作系統不同版本,在此場景下,開發人員要么需實現專有通信方案,要么需選擇兩個共享通用處理器間通信基礎設施的操作系統,為避免資源沖突,這些操作系統還應提供訪問共享硬件組件的標準化機制。
SMP(Symmetric multiprocessing,對稱多處理)
在多核設計中,資源分配可能頗具挑戰。SMP通過在芯片所有核心上運行同一種操作系統,所有核心間IPC均為“本地通信”,減少內存占用并且大幅度提升性能,同時系統不再需要復雜網絡協議實現通信。由于操作系統能實時掌握所有系統元素的狀態,無需應用設計人員過多干預,即可在多個核心上分配資源。若操作系統具備完善的搶占機制與線程優先級管理能力,還能幫助應用設計人員確保CPU周期優先分配給最需要的應用。
目前,我們使用的x86 PC就采用的這種機制,但代價就是這種系統一般適用于功能復雜的系統,對實時性要求很高的系統并不太適用。雖然通過在單一Linux內核上通過PREEMPT_RT補丁,可以實現近似RTOS的確定性響應,但極端場景下依然不如RTOS。
BMP(Bound multiprocessin,受約束多處理)
這是QNX首創的一種多處理模式,運行模式類似SMP,具有“透明資源管理”的優勢,同時允許設計人員將任意應用(及其所有線程)鎖定到特定核心,從而助力單核代碼向多核環境遷移。與SMP類似,單個操作系統副本會全局掌控所有系統資源,實現資源在應用間動態分配與共享。但在應用初始化階段,系統設計人員可通過設置,強制應用的所有線程僅在指定核心上執行。
![]()
AMP是異構計算的重要方案,特別對工業、汽車電子、智能終端來說,非常好用。
通過將任務分配給專屬處理上下文,開發人員能構建性能可預測、延遲低、可靠性高的高效系統,兼顧復雜功能和實時需求;
由于每個處理器擁有自己的內存,所以核心之間互不干擾,核心之間獨立且無需頻繁交換數據,所以系統穩定性更高,可以減少崩潰風險;
通過優化內部通信,僅需一套硬件電路即可實現復雜功能,顯著降低系統硬件成本。其各核心能運行不同操作系統,并行處理多任務,無需額外硬件支持,高效且經濟。
![]()
一些典型的平臺
目前,很多SoC芯片都原生支持AMP,如德州儀器(TI)Sitara系列、恩智浦(NXP)i.MX系列、意法(ST)STM32MP1系列、AMD(賽靈思)Zynq系列等。國內瑞芯微、賽昉科技等廠商也提供了原生支持AMP的芯片,同時釋放官方例程,教學如何運行RTOS和Linux。
TI的系統主要采用TI-RTOS+Linux SDK+IPC機制(MessageQ、NameServer)。TI表示,在嵌入式Linux系統上處理諸如 IO-Link之類的實時通信會是一項挑戰。在Linux用戶空間中,無法在μs范圍內以確定性計時讀寫外設(如UART)。Linux調度程序并不適合此類應用,并且還必須處理其他任務。調度程序會導致計時抖動(具體情況取決于CPU負載),進而無法實現實時通信。
另一種方法是集成到Linux內核中。在內核空間中,高分辨率計時器可產生只能被另一個內核計時器或硬件外設阻止的精確計時。在這種情況下,抖動優于用戶空間實現方式,但是其仍然存在。另外,將復雜的堆棧移入內核空間也并不總是一種良好設計做法。
第三種選擇是使用單獨的處理器內核來處理實時通信。就比如Sitara AM5728 SoC 除了擁有兩個Cortex-A15內核外,還具有多個Cortex-M4 內核,可將嚴格計時部分卸載,而A15和M4之間會建立非關鍵通信鏈路以用于交換數據。
![]()
Microchip在去年推出了64位RISC-V MPU PIC64GX,其由一顆E51核心(支持 RV64IMAC指令集,專用核心)與四顆U54應用核心(支持RV64GC指令集,用于通用計算)組成,可配置為運行最多兩個獨立的軟件上下文,先進的內存管理模塊,包括虛擬內存(Virtual Memory)與 2 MiB 大小的二級內存子系統(L2 Memory Subsystem),且支持 SECDEC(安全解密)功能:16路組相聯緩存、松散集成內存(LIM)與暫存內存(Scratchpad Memory);LIM內存可專屬分配給單個或多個核心,且可按緩存路(128 KiB 為單位)調整大小。
Microchip也展示了AMP配置方法。例如,可在3顆U54核心上運行Linux,在剩余1顆U54核心上運行Zephyr RTOS;此外,外設也可分配給任一上下文。
開放式非對稱多處理(OpenAMP)是行業標準軟件框架,提供開發AMP系統軟件應用所需的組件。通過支持RemoteProc(遠程處理器)與RPMsg(遠程處理器消息協議)等 OpenAMP軟件接口,PIC64GX上跨兩個AMP上下文的工作負載可輕松實現相互通信。以下是OpenAMP的核心軟件接口:
RPMsg框架:PIC64GX設備上用于核心間 / 上下文間通信的機制;
RemoteProc框架:允許主Linux上下文控制(啟動、加載固件、關閉)從上下文。
![]()
賽昉科技(StarFive)的新一代SoC平臺昉·驚鴻-7110在官方例程中,演示了如何用3個CPU跑Linux操作系統、1個CPU跑RT-Thread的雙系統AMP架構。
其中在RTOS的CPU運行實時的進程,并把部分實時驅動運行在RTOS中進行數據采集,同時把數據通過共享內存方式發回到Linux上,Linux端可以運行各種非實時的應用程序。這種方式可以使系統既保證實時性,又能使用Linux通用操作系統運行功能強大的應用。這已成為工業系統中一種重要架構。
這種方式可以解決RT-Linux無法達到最大調度延時15us以內的棘手問題,在昉·驚鴻-7110中,運行RTOS的CPU Core主頻可以跑1.5GHz, 最大調度延時可以跑到15us以內。
![]()
瑞芯微的RK3568及相關開發板也支持AMP雙系統,分為兩個方案:
第一,Arm(Linux) + RISC-V(Baremetal)方案。該方案巧妙結合了Arm架構的高性能與RISC-V的靈活性,為各類應用提供了強大的平臺支持。Arm核心運行Linux操作系統,作為主核承擔整個多核異構系統中共享資源的劃分和管理的工作,而RISC-V核心作為從核則運行Baremetal程序,專注于實時或專用任務的處理。
這種分工協作模式,使得Arm端能夠高效處理復雜的計算任務和系統管理,同時利用RISC-V端的靈活設計,滿足特定場景下對硬件資源的定制化需求。通過優化資源分配,該方案有效降低了硬件成本,為電力繼電保護裝置、工業自動化等場景提供了高效且經濟的解決方案。
![]()
第二,Arm(Linux) + Arm(Baremetal/RTOS)方案。在這個方案中,運行Linux的Arm核心作為主核,負責系統中共享資源的分配和管理。運行RTOS/Bare-metal的Arm核心作為從核,專注于實時任務的執行。這種同構多核搭配不同運行環境的方式,既能充分發揮Arm 架構的性能優勢,又能滿足系統對實時性任務的處理需求,適用于對實時性和系統資源管理要求較高的應用場景。
挑戰和未來
雖然通過AMP,現有RTOS與Linux可以同時在不同核心上運行。但在當前發展階段,相關領域面臨著三方面顯著挑戰:其一,通信機制的標準化程度不足,由于各廠商多采用自定義接口且差異較大,不僅增加了調試工作的復雜度,還存在跨域調試工具不夠完善的問題,進一步影響了開發效率;其二,安全隔離需求突出,需要重點防范 RTOS(實時操作系統)被 Linux 系統入侵,以保障系統整體的安全性與穩定性;其三,固件升級機制尚未形成統一方案,不同設備或系統的升級流程、標準存在差異,給后續的維護與更新帶來了不便。
從未來趨勢來看,首先,硬件架構將向更高集成度的MCU+MPU方向邁進,通過集成化設計提升系統性能與兼容性;其次,AI任務的輕量化部署成為重要方向,AI RTOS技術可實現將輕量級AI任務在M核側完成,既能滿足AI應用需求,又能降低系統資源消耗;再者,軟件構建工具的支持能力將進一步增強;最后,自動化測試與 CI/CD(持續集成/持續部署)體系將逐步完善,為AMP架構提供更全面的支持,推動開發、測試、部署全流程的高效化與標準化。
參考文獻
[1]Microchip:https://ww1.microchip.com/downloads/aemDocuments/documents/MPU64/ProductDocuments/SupportingCollateral/Asymmetric_Multi-Processing_on_PIC64GX_White_Paper.pdf
[2]NXP:https://www.nxp.com/docs/en/brochure/PWRARBYNDBITSRAS.pdf
[3]嵌入式基地:https://zhuanlan.zhihu.com/p/455322207
[4]創龍科技:https://www.tronlong.com/Article/show/346.html
[5]CSDN:https://blog.csdn.net/Interview_TC/article/details/148368172
[6]賽昉科技:https://doc.rvspace.org/VisionFive2/PDF/VisionFive2_RT_Thread.pdf
[7]Promwad:https://promwad.com/news/rtos-linux-amp-systems
歡迎將我們設為“星標”,這樣才能第一時間收到推送消息。
關注EEWorld旗下訂閱號:“機器人開發圈”
回復“DS”領取《DeepSeek:從入門到精通》完整版
掃碼添加小助手回復“機器人”
進群和電子工程師們面對面交流經驗
![]()
*封面圖由AI生成
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.