2009年6月12日 星期五

task in uc/OS II

想讓 uC/OS-II 管理使用者的 task,使用者必須要先建立 task。使用者可以透過傳遞 task 地址和其他參數到以下兩個函式之一來建立 task:OSTaskCreate() 或 OSTaskCreateExt()。
OSTaskCreate() 與 uC/OS 是向下相容的,OSTaskCreateExt() 是 OSTaskCreate() 的擴展版本,提供了一些附加的功能。用兩個函式中的任何一個都可以建立 task。task 可以在多工排程開始前建立,也可以在其他 task 的執行過程中被建立。在開始多工排程 (即呼叫 OSStart()) 前,使用者必須建立至少一個 task。task 不能由 ISR 來建立。

OSTaskCreate() 需要四個參數:task 是 task 程式碼的指標, pdata 是當 task 開始執行時傳遞給 task 的參數的指標,ptos 是分配給 task 的堆疊的頂端指標 (參看 task 堆疊),prio 是分配給 task 的優先權。

每個 task 都有自己的堆疊空間。堆疊必須宣告為 OS_STK 型別,並且由連續的記憶體空間組成。 使用者可以靜態分配堆疊空間 (在編譯的時候分配) 也可以動態地分配堆疊空間 (在運行的時候分配)。

沒有留言:

張貼留言