嵌入式系統的優先順序倒置

2021-06-16 05:41:09 字數 581 閱讀 9107

以前也看到過嵌入式系統優先順序倒置的問題,但由於沒有實際的程式,理解的不夠透徹。今天終於有機會來看清廬山真面目了。

我們的dsp

上有兩個

task

:spa

和txp,

什麼意思,我就不說了。這兩個程序都會用到乙太網模組。

txp的優先順序比

spa要高。

spa作為乙個低優先順序的任務,執行時間比較長。現在的問題是:

spa有乙個包需要傳送,因此它需要獲得網絡卡這個資源:

lck_pend( xio_data[pa_id].lock_hdl, 0xffffffff )

在獲取資源後,

txp準備就緒,由於其優先順序高,系統會切換到

txp任務。在

txp中,我們也需要傳送乙個包,這時候,

lck_pend( xio_data[pa_id].lock_hdl, 0xffffffff )

會永遠獲得不了資源。

這就造成了死鎖,本質上還是優先順序倒置的問題。

我們的做法是在

spa獲取網路資源後,遮蔽掉中斷,直到釋放該資源。

txp會在資源釋放後啟動。

嵌入式開發 中斷優先順序的重要性

ti的lm3s1607,一開始中斷優先順序沒有設定,採用預設值 所有優先順序相同 則就是中斷不可巢狀。出現了uart通訊有時會丟失資料的問題,一開始以為是硬體干擾導致的。uart的接收緩衝佇列fifo長度設定為1,即接收到字元後就觸發中斷。因為外部通訊命令一般為多個位元組連續發,所以如果uart中斷...

嵌入式作業系統核心原理和開發(通用優先順序排程)

相比較其他排程演算法而言,時間片的輪轉更多的注重公平性。但是,任務與任務之間也是有先後之分的,有的任務我們希望多安排一些時間片,而有的任務我們則希望少安排一些時間片。比較說,如果我們在上網的話,我們就希望上網的操作響應的更快一些 如果我們在進行gui操作,我們當然就希望圖形響應更快一些。這些都是可以...

嵌入式 LINUX 大作業 帶優先順序 計算器

在前段時間搞定了溫控系統後,嵌入式大作業要開始搞了 選定了計算器,一開始的想法是不能多不運算 但是前兩天找了點資料,然後看了相關的堆疊計算方法,於是決定好好搞一下表示式運算 因為lineedit settext qstring str 而計算則需要double型,所以需要格式的多次轉換,自己寫了個a...