溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

vxworks中如何控制任務(wù)

發(fā)布時(shí)間:2021-12-22 09:58:37 來源:億速云 閱讀:143 作者:小新 欄目:互聯(lián)網(wǎng)科技

小編給大家分享一下vxworks中如何控制任務(wù),相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

任務(wù)被taskSpawn()創(chuàng)建或taskActivate()激活后,直接進(jìn)入Ready隊(duì)列。但實(shí)際運(yùn)行時(shí),任務(wù)大部分時(shí)間處于其它狀態(tài),并不是Ready態(tài),不然CPU的占用率就很高了,功耗也就上去了,那肯定是軟件架構(gòu)的設(shè)計(jì)出問題了。

VxWorks的taskLib庫里關(guān)于控制任務(wù)狀態(tài)的一些函數(shù)

vxworks中如何控制任務(wù)

taskSuspend()是將任務(wù)放到Suspend隊(duì)列,taskResume()是將任務(wù)放到Ready隊(duì)列,這兩個(gè)API通常只是在調(diào)試時(shí)才會(huì)使用。taskSuspend(0)就是掛起任務(wù)本身,就像我們?cè)凇禩ask之常見系統(tǒng)任務(wù)》里觀察tRootTask時(shí)所作的。不過taskResume(0)就是無效操作了,想想為啥?

taskRestart()的主要作用是重啟發(fā)生嚴(yán)重錯(cuò)誤的任務(wù)。既然它只有一個(gè)參數(shù),說明重啟的任務(wù)使用的是原有的屬性,包括ID、優(yōu)先級(jí)、選項(xiàng)、入口地址、棧尺寸。其中優(yōu)先級(jí)和選項(xiàng)可能被動(dòng)態(tài)改變過,那就使用最新的值。

taskDelay()通常用在輪詢操作之中,它會(huì)讓當(dāng)前任務(wù)進(jìn)入Delay隊(duì)列,期限到時(shí)之后,再返回Ready隊(duì)列中同優(yōu)先級(jí)任務(wù)的尾部。其參數(shù)單位是tick,也就是系統(tǒng)時(shí)鐘的頻率。例如delay兩秒,通常這樣寫:

vxworks中如何控制任務(wù)

sysClkRateGet()的作用就是返回系統(tǒng)時(shí)鐘每秒鐘的tick數(shù)。每個(gè)VxWorks版本的系統(tǒng)時(shí)鐘頻率默認(rèn)都是60,但taskDelay(120),不一定是Delay兩秒。因?yàn)榭梢酝ㄟ^sysClkRateSet()修改時(shí)鐘頻率

vxworks中如何控制任務(wù)

要注意的是,每個(gè)tick到來時(shí),都會(huì)觸發(fā)系統(tǒng)時(shí)鐘中斷,所以不建議把系統(tǒng)時(shí)鐘頻率設(shè)置得太快,否則會(huì)降低系統(tǒng)性能。

taskDelay()的參數(shù)是整型值,所以使用時(shí)要注意整除的問題。例如,使用默認(rèn)的系統(tǒng)時(shí)鐘頻率時(shí),就不可能精確延時(shí)1/7秒。

sysClkRateGet()/7 = 60/7 = 8,8個(gè)tick,只是8/60秒了。

當(dāng)taskDelay()的參數(shù)為0時(shí),任務(wù)并不會(huì)進(jìn)入Delay狀態(tài),而是直接把CPU讓給同優(yōu)先級(jí)的任務(wù)(如果有的話),自己排到同優(yōu)先級(jí)任務(wù)的尾部,這就相當(dāng)于Linux系統(tǒng)的sched_yield()操作。

我們?cè)凇禩ask之任務(wù)的創(chuàng)建》里提到過,使用taskPriorityGet()/taskPrioritySet(),可以查詢/調(diào)整任務(wù)的優(yōu)先級(jí)。另外還有幾個(gè)API可以查詢?nèi)蝿?wù)的狀態(tài)信息

vxworks中如何控制任務(wù)

從名字就可以看出來taskInfoGet()最為強(qiáng)大,它可以獲得TCB里的大部分信息

vxworks中如何控制任務(wù)

以上是“vxworks中如何控制任務(wù)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI