陳曉霞,苑文舉
(長春工業(yè)大學(xué)計算機科學(xué)與工程學(xué)院,長春130012)
為滿足日益龐大復(fù)雜的汽車電子控制軟件的開發(fā)需要,1993年歐洲汽車工業(yè)界聯(lián)合推出了OSEK/VDX標準。OSEK/VDX[1]是應(yīng)用在模塊和靜態(tài)實時操作系統(tǒng)上的標準,由主要的汽車制造商、供應(yīng)商、研究機構(gòu)以及軟件開發(fā)商所發(fā)起。OSEK,是指德國的汽車電子類開放系統(tǒng)和對應(yīng)接口標準(open system s and the corresponding interfaces for automotive electronics),OSEK/VDX規(guī)范從實時操作系統(tǒng)、軟件接口、通信和網(wǎng)絡(luò)管理等方面對汽車的電子控制軟件開發(fā)平臺作較為全面的定義與規(guī)定。而VDX則是汽車分布式執(zhí)行標準(vehicle distributed executive),后者最初是由法國獨自發(fā)起的,后來加入OSEK團體。兩者的名字都反映出OSEK/VDX的目的是為汽車電子制定標準化接口。
本文主要介紹了一種遵循OSEK規(guī)范,并在的基礎(chǔ)上,設(shè)計開發(fā)了一種應(yīng)用到CAN網(wǎng)絡(luò)通信中的節(jié)點通信的嵌入式實時操作系統(tǒng)。
本文針對OSEK/VDX OS介紹了其主要特點[2],重點分析了它的運行機制。OSEK/VDX具有實時性、可移植性、可擴展性3個特點。本文就是根據(jù)這3個特點來構(gòu)造一個符合CAN網(wǎng)絡(luò)通信的操作系統(tǒng)。
μC/OS-II是一個著名的源代碼公開的內(nèi)核,它的主要性能特點是:源代碼公開,可移植,可固化,可裁剪,搶占式,多任務(wù),可確定性,實用性和可靠性。該操作系統(tǒng)都有成功應(yīng)用的實例,這些應(yīng)用的實踐是該內(nèi)核實用性和可靠性的最好依據(jù)。
OSEK規(guī)范把進程分為基礎(chǔ)進程和擴展進程。圖1和圖2是基本任務(wù)和擴展任務(wù)的狀態(tài)轉(zhuǎn)移圖。
圖1 基本任務(wù)
圖2 擴展任務(wù)
OSEK提供了兩種同步機制,即對共享資源的互斥訪問機制和事件機制。系統(tǒng)在處理多個進程對共享資源的互斥訪問時,采用信號量對臨界區(qū)數(shù)據(jù)或資源加鎖。在某一時刻只能有一個進程訪問資源,但是某些操作可能會出現(xiàn)優(yōu)先級反轉(zhuǎn)的情況,即當一個高優(yōu)先級的進程試圖訪問一個已經(jīng)被較低優(yōu)先級的進程占用的資源時,則該高優(yōu)先級的進程必須等待,直到低優(yōu)先級的進程釋放該資源。而此時有介于這兩個優(yōu)先級之間的進程可能就會先于較高優(yōu)先級來搶占資源,這就造成了優(yōu)先級反轉(zhuǎn)。為了避免這種情況發(fā)生,OSEK操作系統(tǒng)采用了優(yōu)先級最高限度協(xié)議(Priority Ceiling Pro tocol)[3]。使用該協(xié)議同時解決了死鎖的問題。
為了使OSEK操作系統(tǒng)能夠在有不同計算能力(不同CPU、不同存儲容量)的ECU上運行,OSEK定義了4個符合類,分別是BCCl、ECCl、BCC2、ECC2。每一個符合類包括一組操作系統(tǒng)特性,代表一類應(yīng)用程序的需求,也包含了這些操作系統(tǒng)特性運行所需要的硬件需求。
筆者所研究的項目旨在通過OSEK OS來實時監(jiān)控車載網(wǎng)絡(luò)中的各個節(jié)點,通過即時更新的配置信息,判斷其當前的可操作性和工作狀態(tài)。車載網(wǎng)關(guān)和網(wǎng)絡(luò)節(jié)點由CAN總線連接,使用CAN 2.0B[4]協(xié)議通信。網(wǎng)絡(luò)節(jié)點將相應(yīng)的配置信息(包括故障碼和由傳感器采集到的相關(guān)參數(shù))裝入周期性發(fā)送的專用網(wǎng)絡(luò)管理報文中。車載網(wǎng)關(guān)負責(zé)收集這些配置信息,并通過基于IPv6的無線網(wǎng)絡(luò)將其發(fā)送至遠程故障診斷服務(wù)器。待服務(wù)器分析故障信息,得出相應(yīng)的處理信息后,再將處理信息發(fā)回至車載網(wǎng)關(guān),并由其下發(fā)至網(wǎng)絡(luò)節(jié)點以執(zhí)行相應(yīng)操作。顯然,OSEK/VDX OS的實時性[3]更符合項目的需求。圖3為該應(yīng)用的硬件連接流程。
使用自行設(shè)計的CAN節(jié)點構(gòu)建邏輯環(huán)路通信,該節(jié)點采用Microchip公司的PIC18F2580作為中央控制單元,PCA82C250作為CAN轉(zhuǎn)換器,節(jié)點間的通信使用CAN 2.0B協(xié)議??紤]到今后的擴展需求,擬使用29位擴展標識符。車載網(wǎng)關(guān)采用Samsung公司S3C2410為CPU的ARM開發(fā)板,使用Microchip公司MCP2510 CAN控制器與總線通信,將經(jīng)過裁剪后的μC/OS-II操作系統(tǒng)應(yīng)用于其中。
圖3 硬件連接流程
CAN2.0協(xié)議通信的接收機制是通過設(shè)置過濾寄存器和屏蔽寄存器來過濾29位擴展標識符,以判斷是否需要接受總線上當前傳輸?shù)腃AN報文。CAN報文標識符域和數(shù)據(jù)域的具體使用情況如圖4所示。
圖4 CAN報文標識符域和數(shù)據(jù)域的具體使用情況
本文通過OSEK OS的實時性,可移植性和可擴展性[6]為CAN網(wǎng)絡(luò)節(jié)點的通信提供了一套符合OSEK/VDX規(guī)范的操作系統(tǒng)。該操作系統(tǒng)是通過將裁剪后的μC/OS-Ⅱ移植到該系統(tǒng)中,此操作系統(tǒng)對CAN網(wǎng)絡(luò)節(jié)點的通信進行了相關(guān)的任務(wù)管理,在節(jié)點通信的過程中對其進行了中斷處理,以及對不同事件的處理進行了分類,這樣就保證了網(wǎng)絡(luò)節(jié)點通信的精確和方便。
將CAN節(jié)點與車載網(wǎng)關(guān)以總線連接,通過車載網(wǎng)關(guān)可以提取如下數(shù)據(jù)以驗證穩(wěn)定邏輯環(huán)路通信的形成過程,同時也為下一步的理論研究提供了寶貴的數(shù)據(jù)資料。如表1所列。
表1 網(wǎng)絡(luò)節(jié)點形成穩(wěn)定邏輯環(huán)路通信的數(shù)據(jù)
根據(jù)實際項目的需要,在CAN網(wǎng)絡(luò)中實現(xiàn)了OSEK OS的研究與應(yīng)用。該操作系統(tǒng)支持兩種類型的網(wǎng)絡(luò)管理,通過提取的數(shù)據(jù),對各網(wǎng)絡(luò)節(jié)點形成穩(wěn)定邏輯環(huán)路通信的過程加以定量的分析和驗證。在此基礎(chǔ)上與項目已有部分相結(jié)合,提出了遠程故障診斷系統(tǒng)的方案。
[1]The OSEK/VDX Group.OSEK/VDX Operating System version 2.2.
[2]The OSEK/VDX Group.OSEK/VDX System Generation,OIL:OSEK Implementation Language version 2.3[EB/OL].(2003-10-15)[2010-07].http://www.osek-vdx.org.
[3]KM Zuberi.EM ERALDS-OSEK:A Small Real-time Operating System for Automotive Control and Monitoring[EB/OL].(2003-10-15)[2010-07].http://www.sae.org.
[4]CAN Specification V 2.0.
[5]羅蕾.嵌入式實時操作系統(tǒng)及應(yīng)用開發(fā)[M].北京:北京航空航天大學(xué)出版社,2005.
[6]袁銘蔚,孫澤昌,陳覺曉.一種嵌入式實時操作系統(tǒng)——OSEK/VDX OS[J].測控技術(shù),22(12):45-47.