xenomai內核解析之嵌入式實時linux概述

来源:https://www.cnblogs.com/wsg1100/archive/2020/05/03/12822346.html
-Advertisement-
Play Games

Linux系統作為一個GPOS(通用操作系統)發展至今已經非常成熟可靠了,並且由於遵循GPL協議,開放所有系統源代碼,非常易於裁剪。更重要的是,與其他開源的GPOS或RTOS相比,Linux系統支持多種處理器、開發板,提供多種軟體開發工具,同時Linux系統對網路和圖形界面的支持非常出色。顯然,選擇 ...


Linux系統作為一個GPOS(通用操作系統)發展至今已經非常成熟可靠了,並且由於遵循GPL協議,開放所有系統源代碼,非常易於裁剪。更重要的是,與其他開源的GPOS或RTOS相比,Linux系統支持多種處理器、開發板,提供多種軟體開發工具,同時Linux系統對網路和圖形界面的支持非常出色。顯然,選擇Linux操作系統在產品的開發周期和成本控制方面都有巨大優勢。

雖然Linux系統功能強大、實用性強、易於軟體的二次開發,並且提供編程人員熟悉的標準API。但是由於Linux系統一開始就被設計成GPOS(通用操作系統),它的目的是構建一個完整、穩定的開源操作系統,儘量縮短系統的平均響應時間,提高吞吐量,註重操作系統的整體功能需求,達到更好地平均性能。所以標準Linux並不提供硬實時性。

為解決linux不具有硬實時的問題,誕生了幾種基於Linux的硬實時解決方案,分為兩類:

1)直接修改Linux內核源代碼。對Linux內核代碼進行細微修改並不對內核作大規模的變動,在遵循GPL協議的情況下,直接修改內核源代碼將Linux改造成一個完全可搶占的實時系統。其缺點是:通過修改Linux內核,難以保證實時進程的執行不會遭到非實時進程所進行的不可預測活動的干擾。該方法的代表是RT-patch(Real Preemption Patch)。

2)雙內核法。添加一個實時內核,在內核空間與linux內核並存,把標準的Linux內核作為一個普通進程在實時內核上調度。其優點是可以做到硬實時,並且能很方便地實現一種新的調度策略。常用的雙內核法有RT-Linux、RTAI(Real-Time Application Interface)和 Xenomai,

雙核法具有較好的實時性。RT-Linux最早出現,開創了雙核法的先河,是雙核法的代表。基於一種成為實時硬體抽象的層技術RTHAL(Real Time Hardware Abstraction Layer),且為該技術申請了專利,後RT-Linux被WindRiver 收購併商業化,WindRiver於2011年8月徹底停止對其更新和維護,現在 RT-linux 已經不再更新。

Uploading file...

xenomai和RTAL同樣借鑒RT-Linux,Xenomai項目始於2001年8月,Philippe Gerum是Adeos和Xenomai項目的創始人和維護者。2003年它和RTAI項目合併推出了RTAI/fusion。RTAI/fusion是Linux平臺上的具有工業生產級別的實時自由軟體開發平臺,它基於Xenomai的抽象實時操作系統內核。2005年的時候RTAI/fusion項目又從RTAI中獨立出來作為Xenomai項目。

雖然xenomai和RTAL這兩個項目基於同一本質的實時硬體抽象層技術ADEOS(Adoptive Domain Environment for Operating System),但是實際上他們有很多不同之處。這些不同之處主要是由他們不同的目標和各自不同的實現方式造成的。RTAI項目致力於技術上可行的最低延遲;Xenomai除此之外還很看重擴展性,可移植性以及可維護性。Xenoami項目不僅提供雙核還對PREEMPT RT實時搶占補丁提供支持,這又是與RTAI項目的一個顯著的不同。

另外RT-Linux只允許以內核模塊的形式提供實時應用;xenomai 更註重用戶空間應用的實時性。

幾種linux實時方案對比如下表--Linux實時性改造優缺點對比。

性能 直接修改內核 直接修改內核 雙內核 雙內核 雙內核
RT-patch 其他 RT-Linux RTAI xenomai
實時性 較好 較好
硬體支持 較好 一般 一般 較好
API 豐富 一般 一般 一般 豐富
維護難度
社區活躍度 較好 較差 一般 良好
用戶態實時任務 支持 支持 不支持 支持 支持
內核實時任務 不支持 不支持 支持 支持 支持

綜上,從實時性、硬體支持、社區活躍度、API和商業版權等方面綜合考慮,xenomai無疑是Linux實時操作系統最好的選擇。

參考:

劉劍, 仲宇, 王琦. 嵌入式Linux實時性改造技術綜述[J]. 航天控制, 2018, 36(2): 93-97.

Xenomai - 維基百科,自由的百科全書

Xenomai History


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 我的LeetCode:https://leetcode cn.com/u/ituring/ 我的LeetCode刷題源碼[GitHub]:https://github.com/izhoujie/Algorithmcii LeetCode 面試題04. 二維數組中的查找 題目 在一個 n m 的二維數 ...
  • 我的LeetCode:https://leetcode cn.com/u/ituring/ 我的LeetCode刷題源碼[GitHub]:https://github.com/izhoujie/Algorithmcii LeetCode 面試題03. 數組中重覆的數字 題目 找出數組中重覆的數字。 ...
  • Session 1. 概念:伺服器端會話技術,在一次會話的多次請求間共用數據,將數據保存在伺服器端對象中。HttpSession 2. 快速入門 1. 獲取HttpSession對象 2. HttpSession對象: object getAttribute(String name) void se ...
  • 前幾天,世界著名的科技期刊/圖書出版公司施普林格(Springer)宣佈: 免費向公眾開放 400 多本正版的電子書!! Springer 即施普林格出版社,於1842 年在德國柏林創立,20 世紀60年代建立了其國際性科技出版公司的地位。 目前,施普林格是 全球第一大科技圖書出版公司和第二大科技期 ...
  • 打造更好用的 EF 自動審計 Intro 上次基於 EF Core 實現了一個自動審計的功能,詳細可以參考 ,雖然說多數情況下可以適用,但是因為要顯式繼承於一個 或 ,所以對代碼的侵入性比較強,對於已經無法修改的代碼或者已經繼承於某一個類了,就無法再繼承 了,就沒有辦法實現自動審計了,在 1.7.0 ...
  • 大家在平時開發中大多都會遵循介面編程,這樣就可以方便實現依賴註入也方便實現多態等各種小技巧,但這種是以犧牲性能為代價換取代碼的靈活性,萬物皆有陰陽,看你的應用場景進行取捨。 一:背景 1. 緣由 在項目的性能改造中,發現很多方法簽名的返回值都是採用IEnumerable介面,比如下麵這段代碼: 2. ...
  • 文件查找 小編在學這堂課的前一天夜裡打嗝打了半宿,第二天上課的時候迷迷糊糊,所以,導致文件查找這章我放了好久的鴿子。 這裡是回看視頻摘出來的筆記。如有理解有偏差,請留言。 本篇只有3個命令,重點是find,時間有限的朋友可以只看find命令。這太過重要了。 whereis命令 在一些特定的目錄搜索, ...
  • 知識點:Python庫及簡單定時器的使用 1. 滑鼠自動點擊屏幕代碼 (1). 首先 pip install pymouse (2). 運行代碼出現:ModuleNotFoundError: No module named ‘windows’ 原因:缺少pyuserinput工具 解決:pip in ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...