基于μCOS-Ⅱ系統(tǒng)的智能尋跡模型車的設(shè)計(jì)與實(shí)現(xiàn)
2 軟件系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
為使智能車在環(huán)境改變時(shí)做出更為及時(shí)準(zhǔn)確的響應(yīng),在程序設(shè)計(jì)時(shí)應(yīng)用μC/OS-Ⅱ系統(tǒng)。μC/OS-Ⅱ適合小型控制系統(tǒng),具有執(zhí)行效率高、占用空間小、實(shí)時(shí)性能優(yōu)良和可擴(kuò)展性強(qiáng)等特點(diǎn),最小內(nèi)核可編譯至2 KB。μC/OS-Ⅱ的代碼是用C語(yǔ)言編寫,可以直接移植到有C語(yǔ)言編譯器的處理器上。移植主要都集中在多任務(wù)切換的實(shí)現(xiàn)上,由于這部分代碼用于保存和恢復(fù)CPU現(xiàn)場(chǎng)(即寫/讀相關(guān)寄存器),不能用C語(yǔ)言,只能使用匯編語(yǔ)言完成,即編寫OS CPU A.S文件。另外還需要修改體系結(jié)構(gòu)相關(guān)的OS CPU.H文件和用戶規(guī)定任務(wù)棧初始化結(jié)構(gòu)的OS CPU C.C文件。
μC/OS-Ⅱ是采用的可剝奪型實(shí)時(shí)多任務(wù)內(nèi)核??蓜儕Z型的實(shí)時(shí)內(nèi)核在任何時(shí)候都運(yùn)行就緒了的最高優(yōu)先級(jí)的任務(wù)。μC/OS-Ⅱ中最多可以支持64個(gè)任務(wù),分別對(duì)應(yīng)優(yōu)先級(jí)0~63,其中0為最高優(yōu)先級(jí)。在該系統(tǒng)設(shè)計(jì)中,共應(yīng)用了7個(gè)優(yōu)先級(jí),其中,操作系統(tǒng)建立任務(wù),即Task Start()的優(yōu)先級(jí)最高。調(diào)度工作可以分為兩部分:最高優(yōu)先級(jí)任務(wù)的尋找和任務(wù)切換。
在該系統(tǒng)中,共定義了路徑識(shí)別、光電轉(zhuǎn)盤檢測(cè)等7個(gè)任務(wù),控制器任務(wù)劃分及說(shuō)明如表1所示。其調(diào)度和通信實(shí)現(xiàn)流程如下:系統(tǒng)執(zhí)行Task Start(),在初始化任務(wù)執(zhí)行完成后,利用μC/OS-Ⅱ的OSTaskDel()函數(shù)將這個(gè)任務(wù)返回并處于休眠狀態(tài)。此時(shí),Task Po-sition Check()成為優(yōu)先級(jí)最高的任務(wù),將會(huì)一直執(zhí)行。當(dāng)Task Position Check()檢測(cè)到路徑有所改變,通過(guò)郵箱傳送數(shù)據(jù)到Task Control(),并由TaskControl()控制PWM波輸出的改變。任務(wù)Task Op-tical_Wheel()的優(yōu)先級(jí)稍低,同樣會(huì)一直執(zhí)行,即當(dāng)任務(wù)Task_Optical_Wheel()檢測(cè)到黑白跳變時(shí),任務(wù)中的變量加1,Task_Optical_Wheel()每隔1 s向任務(wù)Task_Path_Calculate()和Task_Speed_Calculate()發(fā)送1次消息,分別計(jì)算速度和已走的累加路程,控制器任務(wù)關(guān)系圖如圖4所示。
評(píng)論