μC/OSII是一個可移植、可固化、可裁剪的搶占式實時多任�(wù)�(nèi)�。大部分用ANSI C語言編寫,只有一小部分與硬件相關(guān)的代碼用匯編語言編寫。至今,μC/OSII已經(jīng)�40多種不同架構(gòu)的微�(nèi)核處理器上移植成��
μC/OSII原有的時鐘管理系�(tǒng)類似于Linux,但是比Linux簡單得多。它僅向用戶提供一個周期性的信號OSTime,時鐘頻率可以設(shè)置在10�100 Hz,時鐘硬件周期性地向CPU�(fā)出時鐘中�,系�(tǒng)周期性響�(yīng)時鐘中斷,每次時鐘中斷到來時,中斷處理程序更新一個全局變量OSTime。μC/OSII時鐘中斷服務(wù)程序的核心是�(diào)用OSTimeTick ()函數(shù)。OSTimeTick ()函數(shù)用來判斷延時任務(wù)是否延時�(jié)束從而將其置于就緒態(tài)。其程序偽代碼如下:
void OSTimeTick(void) {
OSTimeTickHook();// �(diào)用用戶定義的時鐘節(jié)拍外連函�(shù)
while { (除空閑任�(wù)外的所有任�(wù))
OS_ENTER_CRITICAL();//�(guān)中斷
對所有任�(wù)的延時時間遞��
掃描時間到期的任�(wù),并且喚醒該任務(wù)�
OS_EXIT_CRITICAL();//開中�
指針指向下一個任�(wù)�
}
OSTime++�//累計從開機以來的時間
}
在μC/OSII的時鐘節(jié)拍函�(shù)中,需要執(zhí)行用戶定義的時鐘節(jié)拍外連函�(shù)OSTimeTickHook (),以及對任務(wù)鏈表進行掃描并且遞減任務(wù)的延時。這樣就造成了時鐘節(jié)拍函�(shù)OSTimeTick ()有兩點不足:
?�?在時鐘中斷中處理額外的任�(wù)OSTimeIickHook (),這樣增加了中斷處理的�(fù)�(dān),影響了定時服務(wù)的準(zhǔn)確��
?�?在關(guān)中斷情況下掃描任�(wù)鏈表,任�(wù)越多所需要時間越�,而長時間�(guān)中斷對中斷響�(yīng)有不利影響,是中斷處理應(yīng)�(dāng)避免��
μC/OSII*****提供的基于CortexM3�(nèi)核移植的μC/OSII系統(tǒng)一直工作在特權(quán)級下。這樣做的好處�,系�(tǒng)不用頻繁地切換訪問等級,而且開關(guān)中斷很快,利于實時性的實現(xiàn);但是應(yīng)用程序(用戶任務(wù))也可以訪問特殊功能寄存器和系統(tǒng)控制空間(SCS)寄存器,修改操作系�(tǒng)的變�,這對系統(tǒng)的安全性是一種威�,如果用戶任�(wù)程序跑飛,那就有可能破壞系統(tǒng)寄存器和變量�
(1)公開源碼:是為數(shù)不多的公開源碼的RTOS,給二次開�(fā)和移植提供了可能�
(2)可移植性強:μC/OSII絕大多數(shù)源碼用ANSI C編寫,少量用匯編語言編寫,具有較強的移植性;
(3)可固化:微小�(nèi)�,可以和�(yīng)用程序一起固化到FLASHROM��
(4)可裁剪:通過條件編譯即可實現(xiàn)裁剪,十分方��
(5)占先式:是實時性的重要保證�
(6)多任�(wù):多�64個任�(wù)管理,可以滿足大多數(shù)控制任務(wù)�
(7)可確定性:全部的函�(shù)�(diào)用與服務(wù)�(zhí)行的時間是可知的�
(8)系統(tǒng)服務(wù):提供眾多的系統(tǒng)服務(wù),如:消息隊列、信號量、內(nèi)存管理等�
(9)中斷管理:多�255層的中斷管理�
(10)�(wěn)定性和可靠性:�1992年以來已�(jīng)有好幾百個商�(yè)�(yīng)�。其中NationalOptronics公司成功將μC/OS用于三軸運動控制卡中,該三軸運動控制卡主要用于高精度的光電子制造業(yè)。�
維庫電子�,電子知�,一查百��
已收錄詞�153979�