基于ARM和μC/OS-II的車載定位終端的設(shè)計
3 系統(tǒng)軟件設(shè)計
為實現(xiàn)車載定位終端數(shù)據(jù)處理的實時性和運行的穩(wěn)定性,確保電控車工況信息讀取任務(wù)和GPS衛(wèi)星數(shù)據(jù)接收任務(wù)能在第一時間內(nèi)完成,本設(shè)計引入了μC/OS—II操作系統(tǒng)。μC/OS—II能夠根據(jù)任務(wù)的優(yōu)先級動態(tài)地切換任務(wù),保證系統(tǒng)對實時性的要求。
如圖4所示為系統(tǒng)主函數(shù)流程圖,系統(tǒng)上電,經(jīng)過對S3C44BOX的時鐘電路以及相關(guān)寄存器配置完成對S3C44BOX的初始化操作,之后調(diào)用OSInit()函數(shù)完成對μC/OS—II的初始化操作,接著系統(tǒng)通過OSTaskCreate(void(*task)(void*pd),void*pdata,OS_STK*ptos,INT8U prio)函數(shù)創(chuàng)建車載定位終端的應(yīng)用任務(wù),最后通過OSStart()函數(shù)調(diào)用任務(wù)調(diào)度函數(shù)OSCtxSw()開始任務(wù)調(diào)度。各應(yīng)用任務(wù)間的同步及數(shù)據(jù)交互通過信號量和消息郵箱來完成。
基于車載定位終端的主要功能,該車載定位終端應(yīng)用程序主要包括3個任務(wù)和2個中斷。分別是電控車工況信息讀取任務(wù)(void VehInf Read_ Task(void*pada)),該任務(wù)主要用來接收來自ECU、EGR等車載控制器傳來的反應(yīng)車輛工作狀況的信息,如:發(fā)動機冷卻液溫度、發(fā)動機潤滑油壓力、發(fā)動機曲軸轉(zhuǎn)速、發(fā)動機凸輪軸轉(zhuǎn)速、廢氣后處理閥門開度等等,由于車載定位終端要同時接收多個車載控制器的數(shù)據(jù),為確保車載定位終端能夠精確識別各車載控制器上傳的數(shù)據(jù),此處采用主叫-應(yīng)答機制實現(xiàn)車載定位終端和各車載控制器間的數(shù)據(jù)通信;GPS衛(wèi)星數(shù)據(jù)處理任務(wù)(void SatDatPro_Task(void*pada))則主要對GS-89M-J模塊傳來的數(shù)據(jù)幀進行篩選并從篩選出來的數(shù)據(jù)幀中提取車輛位置的信息;GPRS數(shù)據(jù)上傳任務(wù)(void DatSend_Task(void*pada))則主要將車輛工況信息和位置信息按照固定數(shù)據(jù)幀格式進行打包并通過SIM900以無線方式上傳給監(jiān)控中心;CAN接收中斷函數(shù)(void_irq CANRev(void))是由CAN收發(fā)器觸發(fā)的,CAN收發(fā)器每接收到一幀來自各車載控制器的數(shù)據(jù)時,中斷即被觸發(fā),該中斷函數(shù)主要將接收到數(shù)據(jù)幀通過消息郵箱傳送給電控車工況信息讀取任務(wù);串口接收中斷函數(shù)(void_irq Seri Rev(void))則主要是在GS-89M-J完成衛(wèi)星信號解算并向S3C44BOX的串口進行數(shù)據(jù)輸出時被觸發(fā)的。
影響車載定位終端實時性的主要因素是對GPS衛(wèi)星數(shù)據(jù)的處理速度,因此車載定位終端中各任務(wù)的優(yōu)先級分配如下表(優(yōu)先級值越小則對應(yīng)的優(yōu)先級越高)。
4 結(jié)束語
文中所設(shè)計的車載定位終端應(yīng)用ARM處理器和μC/OS—II操作系統(tǒng)最大限度地保證了終端數(shù)據(jù)交換的實時性與運行的穩(wěn)定性。經(jīng)證實,該車載定位終端在貨車、工程車、農(nóng)用車等領(lǐng)域擁有廣闊的應(yīng)用前景。
評論