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