【原創】xenomai內核解析之xenomai的組成結構


版權聲明:本文為本文為博主原創文章,轉載請注明出處。如有問題,歡迎指正。博客地址:https://www.cnblogs.com/wsg1100/

@

這是第二篇筆記。

一、xenomai 3

從xenomai3開始支持兩種方式構建linux實時系統,分別是cobaltmercury

  • cobalt :添加一個實時核,雙核結構,具有實時內核cobalt、實時驅動模型RTDM、實時應用POSIX接口庫libcobalt,基於libcobalt的其他API skins,如Alchemy APIVxWorks® emulatorpSOS® emulator等。

  • mercury :基於直接修改linux內核源代碼的PREEMPT RT,應用空間在glibc之上,添加xenomai API庫,如下圖所示。在不支持cobalt內核時,可使用該方法運行xenomai應用;當然,也可不需要PREEMPT RT,那么實時性就……

二、xenomai3 結構

mercury只是在glibc上加了一層皮,不是接下來研究的對象。我們看cobalt ,從底層硬件驅動、內核空間到用戶空間,保證了實時任務的實時性。其整體結構如圖所示。


在內核空間,在標准linux基礎上添加一個實時內核Cobalt,得益於基於ADEOS(Adaptive Domain Environment for Operating System),使Cobalt在內核空間與linux內核並存,並把標准的Linux內核作為實時內核中的一個idle進程在實時內核上調度。

2000年,Karim發表了一篇名為《操作系統的自適應域環境》的論文(即Adeos,Adaptive Domain Environment of Operating System),該論文描述了一種簡單而智能的方案,用於在同一系統上運行的多個內核之間共享公共硬件資源。他通過“pipeline”抽象來說明在x86硬件上共享中斷的基本機制,根據整個系統給定的優先級,依次向每個內核傳入中斷。他倡導一種對硬件中斷進行優先級排序的新方法,以便可以開發基於Linux內核的實時擴展,而無需使用當時已被某些專有RTOS供應商申請授予專利方法,指的就是WindRiver和RT-linux使用的RTHAL技術。
ADEOS (Adaptive Domain Environment for Operating System),提供了一個靈活的環境,可以在多個操作系統之間或單個OS的多個實例之間共享硬件資源,從而使多個優先級域可以同時存在於同一硬件上。早期在xenomai 2上使用。

2005年6月17日,Philippe Gerum發布用於Linux內核的I-pipe,I-pipe基於ADEOS,但是I-pipe更精簡,並且只處理中斷,xenomai3使用I-pipe。

ADEOS ,其核心思想是Domain,也就是范圍的意思,linux內核有linux內核的范圍,cobalt內核有cobalt內核的范圍。兩個內核管理各自范圍內的應用、驅動、中斷;兩個domain之間有優先級之分,cobalt內核優先級高於linux內核;I-pipe優先處理高優先級域的中斷,來保證高優先級域的實時性。此外,高優先級域可以通過I-pipe 向低優先級域發送各類事件等。

在用戶空間,添加針對實時應用優化的庫--libcobalt,libcobalt提供POSIX接口給應用空間實時任務使用,應用通過libcobalt讓實時內核cobalt提供服務。

驅動方面,xenomai提供實時驅動框架模型RTDM(Real-Time Driver Model),專門用於Cobalt,基於RTDM進行實時設備驅動開發,為實時應用提供實時驅動。RTDM將驅動分為2類:

•字符設備(open/close, read, write, ioctl),如UART,UDD,SPI,Memory,……

•協議設備(socket, bind, send, recv, etc),如UDP/TCP,CAN,IPC,……

中斷方面,I-Pipe(interrupt Pipeline)分發Linux和Xenomai之間的中斷,並以Domain優先級順序傳遞中斷。I-Pipe傳遞中斷如下圖所示,對於實時內核注冊的中斷,會直接得到處理。對於linux的中斷,先將中斷記錄在i-log,等實時任務讓出CPU后,linux得到運行,該中斷才得到處理。

實時內核cobalt與非實時內核linux相結合,既能提供工業級RTOS的硬實時性能,又能利用linux操作系統非常出色的網絡和圖形界面服務,在產品的開發周期和成本控制方面都有巨大優勢 。

解析系統調用是了解內核架構最有力的一把鑰匙,后續文章會以xenomai POSIX接口(libcobalt )為入口,解析xenomai內核。

參考鏈接:

ADEOS

Adaptive Domain Environment for Operating Systems

ELC-2018-Xenomai

Xenomai 3 – An Overview of the Real-Time Framework for Linux

Real-Time Linux Testbench on Raspberry Pi 3 using Xenomai

2004年10月Philippe Gerum專訪


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM