中斷與任務 vxworks

2021-06-20 12:51:14 字數 808 閱讀 2611

分類:

中斷處理是整個執行系統中優先順序最高的**,可以搶占任何任務級**執行。中斷機制是多工環境執行的基礎,是系統實時性的保證。幾乎所有的實時多工作業系統都需要乙個週期性系統時鐘中斷的支援,用以完成時間片排程和延時處理。vxworks 提供tickannounce(),由系統時鐘中斷呼叫,周期性地觸發核心。

為了快速響應中斷,vxworks的中斷服務程式(isr)執行在特定的空間。不同於一般的任務,中斷服務程式沒有任務上下文,不包含任務控制塊,所有的中斷服務程式使用同一中斷堆疊,它在系統啟動時就已根據具體的配置引數進行了分配和初始化。在isr中能使用的函式型別與在一般任務中能使用的有些不同,主要體現在:

(1)isr中不能呼叫可能導致blocking的函式,例如:

(a)不能以semtake獲取訊號量,因如果該訊號量不可利用,核心會試圖讓呼叫者切換到blocking態;

(b)malloc和free可能導致blocking,因此也不能使用;

(c)應避免進行vxworks i/o系統操作(除管道外);

(d)應避免在isr中進行浮點操作。

(2)在isr中應以logmsg列印訊息,避免使用printf;

(3)理想的isr僅僅呼叫semgive等函式,其它的事情交給semtake這個訊號量的任務去做。乙個isr通常作為通訊或同步的發起者,它採用傳送訊號量或向訊息佇列傳送乙個訊息的方式觸發相關任務至就緒態。isr幾乎不能作為資訊的接收者,它不可以等待接收訊息或訊號量。

中斷服務程式

vxworks中與中斷相關的重要api函式或巨集有:

(1)intconnect():中斷連線,將中斷向量與isr入口函式繫結

VxWorks的任務與任務排程

作為實時作業系統,任務排程是基於優先順序的,且可搶占式的排程方式。同時對於相同優先順序的任務,支援round robin迴圈排程方式 以下簡稱rr排程 vxworks核心三個佇列 tick 佇列,ready 佇列,active 佇列,另外還有乙個佇列涉及到任務,即任務等待資源時所處的佇列,這個佇列可...

VxWorks任務間通訊

1.共享記憶體 雙向鍊錶 環形緩衝 2.互斥 中斷鎖 作用域僅限於中斷內部。優先順序鎖 共享記憶體中,低優先順序的任務不允許被打斷,優先順序鎖就被使用。弊端 會完全禁止任務的排程。3.訊號量 一種指向semaphore結構的指標 sem eventsend err notify,釋放訊號量出錯返回錯...

vxworks任務通訊之管道

管道 任務a寫入管道,任務b讀取 include include include include include include define task priority a 130 define task priority b 130 define stack size 225 int taski...