基于OSEK/VDX規(guī)范的車控電子開發(fā)
1 簡介
汽車電子化是現(xiàn)代汽車發(fā)展的重要標(biāo)志之一。目前世界每輛汽車采用電子裝置的情況已成為衡量這部汽車水平高低的主要標(biāo)志。為了加強(qiáng)市場競爭能力,國外廣泛采用 16~32位微處理器,以及廣泛采用更先進(jìn)的傳感器,使汽車的功能從對(duì)汽車自身的控制管理擴(kuò)大到“汽車-人-環(huán)境”這樣一個(gè)大系統(tǒng)的信息獲取、處理和控制。
2 汽車電子產(chǎn)品的分類及嵌入式技術(shù)應(yīng)用
按照對(duì)汽車行駛性能作用的影響劃分,可以把汽車電子產(chǎn)品歸納為兩類。一類是車控電子——汽車電子控制裝置。汽車電子控制裝置要和車上機(jī)械系統(tǒng)進(jìn)行配合使用,即所謂“機(jī)電結(jié)合”的汽車電子裝置。它們包括發(fā)動(dòng)機(jī)、底盤、車身電子控制,例如電子燃油噴射系統(tǒng)、制動(dòng)防抱死控制、防滑控制、牽引力控制、電子控制懸架、電子控制自動(dòng)變速器、電子動(dòng)力轉(zhuǎn)向等。另一類是車載電子——車載汽車電子裝置。車載汽車電子裝置是在汽車環(huán)境下能夠獨(dú)立使用的電子裝置,與汽車本身的性能并無直接關(guān)系。它們包括汽車信息系統(tǒng)(行車電腦)、導(dǎo)航系統(tǒng)、汽車音響及電視娛樂系統(tǒng)、車載通信系統(tǒng)、上網(wǎng)設(shè)備等。
汽車電子的技術(shù)基礎(chǔ)是嵌入式技術(shù)。在過去的幾十年里,嵌入式技術(shù)發(fā)展迅速。隨著后PC時(shí)代的來臨,計(jì)算廣泛的嵌入到應(yīng)用中去,嵌入式系統(tǒng)將成為未來計(jì)算的主要存在方式。應(yīng)用的牽引和計(jì)算環(huán)境的變遷推動(dòng)了嵌入式技術(shù)的發(fā)展。嵌入式技術(shù)與行業(yè)的結(jié)合又帶動(dòng)了行業(yè)的發(fā)展。汽車的電子化、信息化是嵌入式技術(shù)在汽車行業(yè)的應(yīng)用。
車控電子產(chǎn)品是一個(gè)個(gè)分布在汽車上的電子控制單元(ECU)、智能傳感器(Smart Sensor)等功能單元器件。這些器件通過總線連接在一起組成一個(gè)子系統(tǒng)。它們可以以適合自己的協(xié)議,如Lin、J1939等進(jìn)行通信。不同的子系統(tǒng)也通過總線組成更大的網(wǎng)絡(luò)。其中智能傳感器(Smart Sensor)是一個(gè)以工業(yè)現(xiàn)場總線為基礎(chǔ),以CPU為處理核心,以數(shù)字通信為變送方式的傳感器和變送器的統(tǒng)一體。與傳統(tǒng)的Sensor相比,Smart Sensor增加了數(shù)字通信功能,面向網(wǎng)絡(luò),具有聯(lián)網(wǎng)功能。
3 車控電子產(chǎn)品系統(tǒng)平臺(tái)——OSEK/VDX
為了滿足日益龐大復(fù)雜的汽車電子控制軟件的開發(fā)需要,實(shí)現(xiàn)應(yīng)用軟件的可移植性和不同廠商的控制模塊間的可兼容性。1993年,德國汽車工業(yè)界聯(lián)合推出了汽車電子的開放式系統(tǒng)及接口——OSEK/VDX(Open Systems and the Corresponding InteRFaces For AutomoTIve Electronics)規(guī)范,旨在為汽車上的分布控制單元提供一個(gè)開放結(jié)構(gòu)的工業(yè)標(biāo)準(zhǔn)。OSEK/VDX 規(guī)范從實(shí)時(shí)操作系統(tǒng)RTOS(RealTime Operating System)、軟件接口、通信和網(wǎng)絡(luò)管理等方面對(duì)汽車的電子控制軟件開發(fā)平臺(tái)作了較為全面的定義與規(guī)定。
它所提出的一整套解決方案是未來汽車電子軟件開發(fā)的發(fā)展方向。目前,一些公司推出了符合OSEK/VDX規(guī)范的操作系統(tǒng)并得到了OSEK /VDX委員會(huì)的認(rèn)證,如 OSEK Works、OSEKOS、OSEKTurbo等。OSEK/VDX標(biāo)準(zhǔn)包括以下四部分:OSEK/VDX操作系統(tǒng)規(guī)范(OSEK Operating System,OSEK OS), OSEK/VDX通信規(guī)范(OSEK Communication,OSEK COM), OSEK/VDX網(wǎng)絡(luò)管理規(guī)范(OSEK Network Management,OSEK NM)以及OSEK/VDX實(shí)現(xiàn)語言(OSEK Implementation Language,OSEK OIL)。采用符合OSEK/VDX標(biāo)準(zhǔn)的嵌入式實(shí)時(shí)操作系統(tǒng)可以提高產(chǎn)品代碼的復(fù)用率、降低開發(fā)成本、縮短產(chǎn)品開發(fā)周期。使用兼容OSEK/VDX標(biāo)準(zhǔn)的嵌入式實(shí)時(shí)操作系統(tǒng)的應(yīng)用架構(gòu)如圖1所示。
圖1 兼容OSEK/VDX規(guī)范的操作系統(tǒng)應(yīng)用架構(gòu)
下面分別對(duì)OSEK規(guī)范的操作系統(tǒng)部分(OS)、通信部分(COM)、網(wǎng)絡(luò)管理部分(NM)、實(shí)現(xiàn)語言部分(OIL)、運(yùn)行調(diào)試接口部分(ORTI)等進(jìn)行介紹。
3.1 OSEK OS規(guī)范
OSEK OS規(guī)范定義操作系統(tǒng)內(nèi)核的實(shí)現(xiàn)機(jī)制和應(yīng)用編程接口(API),包括任務(wù)管理機(jī)制、中斷處理機(jī)制、事件機(jī)制、資源管理機(jī)制、報(bào)警器管理機(jī)制等及相關(guān)標(biāo)準(zhǔn)的應(yīng)用編程接口。OSEK OS規(guī)范的實(shí)現(xiàn)機(jī)制見本刊網(wǎng)站www.dpj.com.cn。
3.2 OSEK COM規(guī)范
OSEK COM規(guī)范(OSEK Communication Specification)為汽車ECU應(yīng)用軟件提供了統(tǒng)一的通信環(huán)境。通過定義應(yīng)用軟件通信接口以及ECU內(nèi)部通信和ECU外部通信,OSEK COM規(guī)范提高了應(yīng)用軟件模塊的可移植性。OSEK COM 提供了多種服務(wù),以方便在任務(wù)與任務(wù)之間、中斷服務(wù)程序與中斷服務(wù)程序之間以及任務(wù)與中斷服務(wù)程序之間發(fā)送數(shù)據(jù)。
OSEK COM 規(guī)范的目的是支持應(yīng)用軟件的移植性、重用性和相互合作性。應(yīng)用程序接口隱藏了內(nèi)部和外部通信的區(qū)別,同樣也隱藏了不同的通信協(xié)議、總線系統(tǒng)和網(wǎng)絡(luò)。
OSEK COM中的通信是基于消息的。消息包括了特定應(yīng)用的數(shù)據(jù)。消息和消息屬性通過OSEK實(shí)現(xiàn)語言(OIL)靜態(tài)配置。消息的內(nèi)容和使用方法與OSEK COM無關(guān)。OSEK COM允許0長度的消息存在。在內(nèi)部通信情況下,交互層IL(Interaction Layer)使消息數(shù)據(jù)立即發(fā)送到接收方。在外部通信情況下,IL將1個(gè)或多個(gè)消息壓縮成指定的交互層協(xié)議數(shù)據(jù)單元(IPDU),并把它們傳遞到下層處理,如圖2所示。 內(nèi)部通信的功能性是外部通信功能性的子集。交互層里的消息管理者是基于消息對(duì)象的。消息對(duì)象存在于發(fā)送端的是“發(fā)送消息對(duì)象”,存在于接收端的是“接收消息對(duì)象”。
圖2 OSEK COM中消息發(fā)送和接收的簡單模型
交互層和下層通信的數(shù)據(jù)被組織稱I?PDUs,包括一個(gè)或多個(gè)消息。一個(gè)消息必須占據(jù)在I?PDU中連續(xù)的位而且不能被分離,在I?PDUs中交叉。在I?PDUs中消息被位排列。消息的大小在位中說明。交互層提供了應(yīng)用程序接口(API)來處理消息,API包括初始化、數(shù)據(jù)傳送和通信管理的服務(wù)。在網(wǎng)絡(luò)上傳送消息的服務(wù)是非阻塞的,一個(gè)發(fā)送消息的服務(wù)可能不能返回一個(gè)最終的發(fā)送狀態(tài),因?yàn)榫W(wǎng)絡(luò)中的傳送仍在進(jìn)行之中。OSEK COM為應(yīng)用程序提供了通知機(jī)制來決定傳送或接收的狀態(tài)。
3.3 OSEK NM規(guī)范
對(duì)于由不同生產(chǎn)商生產(chǎn)的汽車ECU產(chǎn)品,它們有通過串行數(shù)據(jù)交換連接成網(wǎng)絡(luò)的趨勢。因此,為了避免重復(fù)勞動(dòng)和縮短開發(fā)時(shí)間,需要有一個(gè)基礎(chǔ)性的標(biāo)準(zhǔn)。OSEK NM規(guī)范(OSEK Network Management system specification)為提高ECU產(chǎn)品的網(wǎng)絡(luò)互連能力提供了一個(gè)網(wǎng)絡(luò)連接標(biāo)準(zhǔn)。OSEK NM任務(wù)的目的是提高ECU產(chǎn)品網(wǎng)絡(luò)通信的安全性和可靠性。OSEK NM規(guī)范規(guī)定了網(wǎng)絡(luò)管理的機(jī)制和應(yīng)用編程接口(API)。采用OSEK NM規(guī)范的ECU產(chǎn)品具有以下功能:
◆ 經(jīng)過授權(quán)后,每一個(gè)節(jié)點(diǎn)必須是可以訪問的;
◆ 在允許訪問失敗的情況下,具有最大容忍限度;
◆ 支持網(wǎng)絡(luò)診斷。
作為一個(gè)基礎(chǔ)的配置,遵守OSEK規(guī)范的網(wǎng)絡(luò)管理實(shí)現(xiàn)必須應(yīng)用在網(wǎng)絡(luò)的所有節(jié)點(diǎn)。每一個(gè)節(jié)點(diǎn)都能在規(guī)定的間隔內(nèi)獲得整個(gè)網(wǎng)絡(luò)的狀態(tài)信息。 OSEK NM為網(wǎng)絡(luò)監(jiān)控提供了兩種機(jī)制:一種是通過監(jiān)控應(yīng)用的消息進(jìn)行間接監(jiān)控;另一種是對(duì)于特定的網(wǎng)絡(luò)管理利用標(biāo)記機(jī)制進(jìn)行直接監(jiān)控。OSEK NM包括以下部分:
◆ OSEK NM與應(yīng)用程序的接口(API);
◆ 節(jié)點(diǎn)監(jiān)控的算法;
◆ OSEK NM與OSEK COM的接口;
◆ 轉(zhuǎn)換到睡眠狀態(tài)的算法;
◆ OSEK NM協(xié)議數(shù)據(jù)單元(NMPDU)。
圖3說明了OSEK NM在整個(gè)系統(tǒng)中的位置及其與其他部分的關(guān)系。
圖3 OSEK NM在系統(tǒng)中的位置
3.4 OSEK實(shí)現(xiàn)語言規(guī)范
為了達(dá)到軟件可移植的目標(biāo),OSEK OIL規(guī)范(OSEK Implementation Language Specification)定義了一種配置和使用OSEK應(yīng)用的方法。圖4表示了一個(gè)遵守OSEK規(guī)范的應(yīng)用開發(fā)過程。OIL文件可以是手寫的或者是系統(tǒng)配置工具產(chǎn)生的。
圖4 基于OSEK規(guī)范的應(yīng)用開發(fā)過程
OIL提供一種在特定CPU中配置OSEK應(yīng)用的機(jī)制。每個(gè)CPU對(duì)應(yīng)一個(gè)OIL描述,所有的OSEK系統(tǒng)對(duì)象用OIL對(duì)象來描述。OSEK應(yīng)用的OIL描述是一組OIL對(duì)象的組合,CPU是這些OIL對(duì)象的容器。OIL明確地為每個(gè)OIL對(duì)象定義了所有標(biāo)準(zhǔn)屬性。每個(gè)OSEK應(yīng)用可以定義附加的特殊執(zhí)行屬性和引用。每個(gè)OSEK應(yīng)用可以限制每個(gè)屬性的取值范圍。
OIL中的對(duì)象包括:CPU(處理器)、OS(操作系統(tǒng))、Appmode(應(yīng)用模式)、Isr(中斷服務(wù))、Resource(資源)、 Task(任務(wù))、Counter(記數(shù)器)、Event(事件)、Alarm(報(bào)警器)、Com(通信子系統(tǒng))、Message(消息)、Ipdu(交互層協(xié)議數(shù)據(jù)單元)、NM(網(wǎng)絡(luò)管理)。
3.5 OSEK ORTI規(guī)范
OSEK ORTI規(guī)范(OSEK Run?Time InteRFace Specification)為OSEK操作系統(tǒng)開發(fā)工具提供了統(tǒng)一的接口。通過OSEK ORTI,使調(diào)試工具可以獲取和顯示操作系統(tǒng)的運(yùn)行狀態(tài)和性能、各種任務(wù)的狀態(tài)、各種操作系統(tǒng)對(duì)象的狀態(tài)等信息。ORTI文件是由系統(tǒng)生成器在系統(tǒng)生成階段產(chǎn)生的。ORTI使用KIOL語言將操作系統(tǒng)內(nèi)核信息傳遞給調(diào)試器,同時(shí)為OSEK標(biāo)準(zhǔn)對(duì)象定義了一些的語法規(guī)則。ORTI信息是通過ASCII文本文件提供的。由于OSEK/VDX是基于靜態(tài)配置的,因此,ORTI不支持動(dòng)態(tài)的表示和配置數(shù)據(jù)。
OSEK ORTI規(guī)范包括Part A和Part B兩部分:Part A介紹了ORTI為調(diào)試工具定義的操作系統(tǒng)內(nèi)核對(duì)象的語言(Kernel Object Interface Language,KOIL);Part B描述了OSEK/VDX標(biāo)準(zhǔn)對(duì)象、屬性和它們的含義。
3.5.1 ORTI文件結(jié)構(gòu)
ORTI文件包含版本信息部分、聲明部分和信息部分。版本信息部分描述了KOIL和內(nèi)核的版本。對(duì)于ORTI來講,內(nèi)核的版本是ORTI標(biāo)準(zhǔn)的版本號(hào)。聲明部分聲明ORTI實(shí)現(xiàn)中使用的內(nèi)核類型,相當(dāng)于C語言中的結(jié)構(gòu)聲明。它描述了訪問內(nèi)核對(duì)象所包含數(shù)據(jù)的方法。該部分詳細(xì)說明了給定屬性的顯示名稱。信息部分包含了所有給定系統(tǒng)聲明部分所聲明的方法,描述了計(jì)算或引用所需屬性的方法。信息部分還提供了所需屬性的靜態(tài)值和表達(dá)式。
3.5.2 標(biāo)準(zhǔn)的ORTI對(duì)象及屬性
OS對(duì)象,包含正在運(yùn)行的任務(wù)、正在運(yùn)行的優(yōu)先級(jí)、正在運(yùn)行的中斷處理程序、操作系統(tǒng)服務(wù)、最近的錯(cuò)誤、當(dāng)前應(yīng)用的模式等屬性。
任務(wù)對(duì)象,包含優(yōu)先級(jí)、狀態(tài)、堆棧、活動(dòng)狀態(tài)、上下文等屬性。
上下文對(duì)象,包含地址、大小等兩個(gè)屬性。
堆棧對(duì)象,包含大小、基地址、堆棧方向、填充模式等四個(gè)屬性。
報(bào)警器對(duì)象,包含報(bào)警時(shí)間、周期、狀態(tài)、動(dòng)作、記數(shù)器等五個(gè)屬性。
資源對(duì)象,包含狀態(tài)、資源鎖、優(yōu)先級(jí)等三個(gè)屬性。
消息容器對(duì)象,包含消息名稱、類型、隊(duì)列大小、隊(duì)列記數(shù)器、當(dāng)前消息地址等五個(gè)屬性。
4 車控電子產(chǎn)品的開發(fā)流程
車控電子產(chǎn)品是軟硬件結(jié)合的嵌入式系統(tǒng)。為了節(jié)約資源,縮短產(chǎn)品開發(fā)周期,一般應(yīng)采取軟硬件同步開發(fā)的方案,如圖5所示。車控電子產(chǎn)品的開發(fā)工具對(duì)軟硬件的同步開發(fā)、調(diào)試提供了很好的支持。車控電子產(chǎn)品的軟件開發(fā)分為功能描述、軟件設(shè)計(jì)、代碼生成、操作系統(tǒng)環(huán)境下高級(jí)調(diào)試等步驟。車控電子產(chǎn)品的硬件開發(fā)分為硬件描述、硬件設(shè)計(jì)、硬件調(diào)試等步驟。當(dāng)軟件設(shè)計(jì)完成后,通過使用相應(yīng)的工具,完成在虛擬ECU平臺(tái)上的驗(yàn)證。當(dāng)硬件設(shè)計(jì)完成后,與硬件一起進(jìn)行軟硬件集成調(diào)試。通過這種開發(fā)方式,縮短了產(chǎn)品上市的時(shí)間。
圖5 軟硬件并行的開發(fā)方案
目前,汽車車控電子產(chǎn)品軟件開發(fā)流程是“V”形開發(fā)流程,如圖6所示。“V”形開發(fā)流程分為五個(gè)階段,即功能設(shè)計(jì)、原型仿真、代碼生成、硬件在回路仿真——HIL、標(biāo)定。
圖6 車控電子產(chǎn)品軟件開發(fā)流程
在功能設(shè)計(jì)階段使用的主要工具是MATLAB。通過使用MATLAB提供的Simulink、Stateflow等工具,完成控制方案的設(shè)計(jì)、功能模塊的設(shè)計(jì)、控制算法的設(shè)計(jì)等任務(wù),并進(jìn)行初步的仿真模擬工作。在原型仿真階段使用的主要工具是DSPACE。使用dSPACE提供的快速控制原型 ——RCP工具完成離線的仿真工作。在開始該階段之前,需要使用Real Time Workshop、Targetlink等工具完成由Simulink、Stateflow等產(chǎn)生的代碼向標(biāo)準(zhǔn) C代碼的轉(zhuǎn)換工作。在進(jìn)行向標(biāo)準(zhǔn) C代碼的轉(zhuǎn)換過程中,可以根據(jù)需要加入符合OSEK規(guī)范的嵌入式實(shí)時(shí)操作系統(tǒng)。在代碼生產(chǎn)階段使用的主要工具是CodeWarrior。通過使用 CodeWarrior提供的編譯器、調(diào)試器等工具,完成從標(biāo)準(zhǔn)C代碼向目標(biāo)硬件平臺(tái)上的產(chǎn)品代碼的轉(zhuǎn)換工作。圖7表示了車控電子產(chǎn)品的代碼生成過程。
圖7 車控電子產(chǎn)品代碼生成過程
結(jié)語
我國自主發(fā)展汽車車控產(chǎn)品尚處于起步階段。本文簡要介紹了車控產(chǎn)品的系統(tǒng)平臺(tái)——OSEK/VDX規(guī)范,并給出了一個(gè)基于OSEK/VDX規(guī)范的簡單的車控電子開發(fā)模型。在這個(gè)模型中,要求開發(fā)者熟練使用國際上主流的開發(fā)工具,以提高開發(fā)效率,縮短開發(fā)時(shí)間。