linux和vxworks的實時性

2021-08-21 18:14:07 字數 997 閱讀 2213

硬實時與軟實時之間最關鍵的差別在於,軟實時只能提供統計意義上的實時。

sys_clk_rate是1000,那麼就是1ms。。如果是60那麼就大約是16.67ms。。。【我們的裝置就是60】通常來講,vxworks手冊建議不要將時鐘率設得太高,否則它就由硬實時變得趨向於軟實時了。。因為過高的時鐘率使得核心排程頻繁進入,可能導致一些低優先順序的硬體中斷不能得到及時響應。

首先看一下linux的實時性的發展。

linux2.4的時候,使用者空間可以被搶占,核心空間不能被搶占,因此實時性很差。

到2.6以後,核心中多了乙個config_preempt的配置。它使得大部分的核心**可以被搶占,而spinlock保護的**和中斷處理函式不能被高優先順序的核心執行緒搶占。這樣實時性有了一定的提高,可以達到幾個毫秒量級。

在主流之外,由ingo molnar和thomas gleixner維護的patch:config_preempt_rt進一步提高了linux的實時性,達到了<100us的程度。它所做的修改是:

1,重新實現了rtmutex,使得spinlock可以被搶占,使被spinlock保護的**可以被搶占。

2,把中斷處理函式執行緒化。

3,對spinlock和semaphore實現了優先順序繼承。

4,使用了高精度的時鐘。

因此,核心成為full preemptible

而上面這些在vxworks中都早已實現,其系統本身開銷小,程序排程、通訊和中斷處理等系統公用程式精煉有效,延遲很短。

任務排程策略以可搶占式呼叫為基礎,輔以實踐輪轉演算法機制,使得vxworks能夠及時響應高優先順序的任務。

另外,1,不考慮rtp, vxworks不支援使用者態任務。因此上下文切換時間較小。

2,linux的某些函式沒有確定的最大執行時間。如記憶體分配函式。vxworks當然不能有這種函式。

3,驅動要精心設計,不能隨意關中斷。

4,某些協議棧,如pci和usb,在linux上沒有對實時性進行優化過。而vxworks作為老牌的rtos,所做的任何修改都會考慮到實時性

描述Tornaod和VxWorks及其相互關係。

vxworks vxworks 是美國風河公司 wind river system 推出的一種嵌入式實時作業系統。它具有可伸縮 可裁剪及高可靠性等的特點,因此廣泛的應用於通訊 軍事 航空 航天等高精尖技術及實時性要求極高的領域中。vxworks 包括乙個微核心 強大的網路支援 檔案系統 i o系統和...

vxworks的時鐘管理

時間格式 秒和納秒 struct timespec time t tv sec 秒,其中time t 為 typedef long time t long tv nsec 納秒 定時器時間格式 struct itimerspec 建立 timer create 建立乙個定時器 設定 timer se...

vxworks串列埠的初始化和讀寫

vxworks串列埠設定說明 一般有這麼幾步 開啟串列埠 設定串列埠raw模式,清空輸入輸出的緩衝區 設定波特率,資料位,停止位,校驗方式 便可以開始讀和寫 開啟串列埠 fd open tyco 0 o rdwr,0 tyco 0 串列埠1的裝置名,o rdwr open for reading a...