關(guān)于RTX51 TINY的分析與探討
有了以上幾個(gè)函數(shù)的定義和實(shí)現(xiàn),就可以應(yīng)用等待信號(hào)量和釋放信號(hào)量來(lái)完成對(duì)共享資源的獨(dú)占。例如:
void job()_task_ id {
DDDD用戶代碼DDDD
wait_sem(task_id);//等待任務(wù)task_id的信號(hào)量
DDDD對(duì)共享資源使用代碼DDDD
release_sem(task_id);//釋放任務(wù)task_id的信號(hào)量
DDDD用戶代碼DDDD
}
應(yīng)用信號(hào)量來(lái)實(shí)現(xiàn)共享資源的使用,不用禁止時(shí)間片輪轉(zhuǎn)和關(guān)閉T0中斷,可以有效地實(shí)現(xiàn)對(duì)共享資源的獨(dú)占;但增加了代碼,等待和釋放信號(hào)量花費(fèi)了一定的時(shí)間,在具體應(yīng)用中要視情況而定。
4 需要注意的問題
在應(yīng)用RTX51 TINY時(shí)應(yīng)注意以下幾點(diǎn):
① 盡可能不使用循環(huán)任務(wù)切換。使用循環(huán)任務(wù)切換時(shí)要求有13個(gè)字節(jié)的堆棧區(qū)來(lái)保存任務(wù)內(nèi)容(工作寄存器等)。如果由os_wait()函數(shù)來(lái)進(jìn)行任務(wù)觸發(fā),則不需要保存任務(wù)內(nèi)容。由于正處于等待運(yùn)行的任務(wù)并不需要等待全部循環(huán)切換時(shí)間結(jié)束,因此os_wait()函數(shù)可以產(chǎn)生一種改進(jìn)的系統(tǒng)響應(yīng)時(shí)間。
② 不要將時(shí)鐘節(jié)拍中斷速率設(shè)置得太高,設(shè)定為一個(gè)較低的數(shù)值可以增加每秒的時(shí)鐘節(jié)拍個(gè)數(shù)。每次時(shí)鐘節(jié)拍中斷大約需要100~200個(gè)CPU周期,因此應(yīng)將時(shí)鐘節(jié)拍率設(shè)定得足夠高,以便使中斷響應(yīng)時(shí)間達(dá)到最小化。
③ 在os_wait()函數(shù)中有3個(gè)參數(shù): K_TMO、K_IVL和K_SIG。其中對(duì)于K_TMO和K_IVL的使用要加以區(qū)別。在使用時(shí),兩者似乎差別不是很大。其實(shí)不然,兩者存在很大的區(qū)別:K_TMO是指等待一個(gè)超時(shí)信號(hào),只有時(shí)間到了,才會(huì)產(chǎn)生一個(gè)信號(hào)。它產(chǎn)生的信號(hào)是不會(huì)累計(jì)的,產(chǎn)生信號(hào)后,任務(wù)進(jìn)入就緒狀態(tài)。而K_IVL是指周期信號(hào),每隔一個(gè)指定的周期,就會(huì)產(chǎn)生一次信號(hào),產(chǎn)生的信號(hào)是可以累計(jì)的。這樣就使得在指定事件內(nèi)沒有響應(yīng)的信號(hào),通過(guò)信號(hào)次數(shù)的疊加,在以后信號(hào)處理時(shí),重新得以響應(yīng),從而保證了信號(hào)不會(huì)被丟失。而通過(guò)K_TMO方式進(jìn)行延時(shí)的任務(wù),由于某種原因信號(hào)沒有得到及時(shí)的響應(yīng),那么這樣就可能會(huì)丟失一部分沒有響應(yīng)的信號(hào)。不過(guò)兩者都是有效的任務(wù)切換方式,在使用時(shí)要根據(jù)應(yīng)用場(chǎng)合來(lái)確定對(duì)兩者的使用。
結(jié)語(yǔ)
RTX51 TINY實(shí)時(shí)操作系統(tǒng)既能保證對(duì)外界的信息以足夠快的速度進(jìn)行相應(yīng)處理,又能并行運(yùn)行多個(gè)任務(wù),具有實(shí)時(shí)性和并行性的特點(diǎn),因此能很好地完成對(duì)多個(gè)信息的實(shí)時(shí)測(cè)量、處理,并進(jìn)行相應(yīng)的多個(gè)實(shí)時(shí)控制。任務(wù)切換是RTX51 TINY的一個(gè)基本服務(wù)。本文對(duì)任務(wù)切換做了詳細(xì)的分析,在實(shí)際應(yīng)用中還要對(duì)任務(wù)切換時(shí)的堆棧管理有一定了解,這樣才能更好地掌握任務(wù)切換的機(jī)制。共享資源的使用在多任務(wù)操作系統(tǒng)中是不可避免的,RTX51 TINY中沒有專門的處理共享資源函數(shù),所以在實(shí)際應(yīng)用中要視情況來(lái)應(yīng)用文中提到的幾種方法。
參考文獻(xiàn)
[1] 朱珍民,隋雪青,段斌. 嵌入式實(shí)時(shí)操作系統(tǒng)及其應(yīng)用開發(fā)[M]. 北京: 北京郵電大學(xué)出版社,2006:44-49.
[2] Keil Software Inc.RTX51 Tiny User’s Guide,2004.
[3] 徐愛鈞,彭秀華. 單片機(jī)高級(jí)語(yǔ)言C51 Windows環(huán)境編程與應(yīng)用[M]. 北京:電子工業(yè)出版社,2001.
評(píng)論