針對(duì)FlexRay系統(tǒng)的嵌入式軟件
標(biāo)準(zhǔn)化的軟件組件將有助于管理ECU中所有軟件組件之間日趨復(fù)雜的關(guān)聯(lián)關(guān)系。今年三月,在Vector的FlexRay研討會(huì)上,提出了針對(duì)FlexRay的現(xiàn)代ECU軟件開(kāi)發(fā)方法。
本文引用地址:http://2s4d.com/article/81514.htm FlexRay總線協(xié)議是一種車載網(wǎng)絡(luò)協(xié)議,適用于具有較大傳輸帶寬要求的高速控制系統(tǒng)。FlexRay的帶寬比CAN高出20倍,從而可以通過(guò)使用更少的網(wǎng)關(guān)來(lái)降低系統(tǒng)的復(fù)雜性。由于FlexRay是時(shí)間觸發(fā)控制,所以特別適合分布式的容錯(cuò)系統(tǒng)的通訊和與安全相關(guān)的應(yīng)用。另外,AUTOSAR對(duì)于軟件系統(tǒng)結(jié)構(gòu)的標(biāo)準(zhǔn)化,將有利于控制汽車電控系統(tǒng)復(fù)雜度的增長(zhǎng)。
FlexRay ECU軟件的特征
為了充分發(fā)揮FlexRay通訊系統(tǒng)的優(yōu)點(diǎn),有必要根據(jù)AUTOSAR,從根本上開(kāi)發(fā)相關(guān)的基礎(chǔ)軟件。AUTOSAR規(guī)定了新的開(kāi)發(fā)方法,即軟件體系結(jié)構(gòu)和基礎(chǔ)軟件。OEM可以一步一步地將其引入到新的車型中。符合標(biāo)準(zhǔn)的ECU軟件具有模塊化的結(jié)構(gòu)(圖 1),從而可以在RTE以上劃分軟件組件,在RTE以下劃分基礎(chǔ)軟件?;A(chǔ)軟件具有模塊化的內(nèi)部結(jié)構(gòu),并通過(guò)明確的接口定義進(jìn)行了說(shuō)明。因此,任何來(lái)源的代碼都可以集成到其中使用。另外,AUTOSAR還定義了交換格式以及獨(dú)立模塊之間的接口如何運(yùn)行。
這種模塊化使得裁剪軟件特性以滿足某個(gè)車型的具體需求變得更加容易,例如,沒(méi)有網(wǎng)絡(luò)管理的ECU。因?yàn)楠?dú)立的軟件模塊可以被軟件供應(yīng)商預(yù)先配置好,從而降低了OEM和ECU供應(yīng)商開(kāi)發(fā)基礎(chǔ)軟件的投入。這樣可以讓開(kāi)發(fā)人員將更多的重心放在創(chuàng)新和實(shí)際功能的開(kāi)發(fā)上。
FlexRay的嵌入式結(jié)構(gòu)
Vector的FlexRay基礎(chǔ)軟件體系結(jié)構(gòu)如圖2。FlexRay基礎(chǔ)軟件體系結(jié)構(gòu)包括接口、驅(qū)動(dòng)、網(wǎng)絡(luò)管理和傳輸協(xié)議,這些都包括在FlexRay協(xié)議棧中。驅(qū)動(dòng)對(duì)硬件進(jìn)行了抽象,使其能夠適用于不同的通訊控制器。驅(qū)動(dòng)負(fù)責(zé)初始化控制器,發(fā)送和接收幀以及檢測(cè)控制器錯(cuò)誤。這些接口與上層之間進(jìn)行通訊,將協(xié)議數(shù)據(jù)單元轉(zhuǎn)化為幀,反向則將幀轉(zhuǎn)化為協(xié)議數(shù)據(jù)單元。另外,它還負(fù)責(zé)向相關(guān)層提供發(fā)送和接收應(yīng)答??紤]到總線系統(tǒng)的通信需求,網(wǎng)絡(luò)管理協(xié)調(diào)網(wǎng)絡(luò)中所有的ECU之間的通訊。如果所有的網(wǎng)絡(luò)節(jié)點(diǎn)不再有通訊需求,將切換到總線休眠ECU模式。
FlexRay傳輸協(xié)議同樣位于FlexRay接口上,用來(lái)處理不能在一個(gè)協(xié)議數(shù)據(jù)單元中發(fā)送的大數(shù)據(jù),將其分割成若干部分發(fā)送,并將其在接收端重新組合。
針對(duì)Freescale和NEC的兩款FlexRay控制器驅(qū)動(dòng),可以看出這些模塊是怎么樣適應(yīng)實(shí)際需要的。經(jīng)過(guò)優(yōu)化裁減的驅(qū)動(dòng)適應(yīng)特定的硬件使用需求,同時(shí)提供給上層一個(gè)不變的特性和行為的模式。在Freescale的16位S12X控制器中,F(xiàn)lexRay驅(qū)動(dòng)必須管理RAM存儲(chǔ)器,因?yàn)樵摽刂破鞅匦璧拇鎯?chǔ)空間需要交換到系統(tǒng)RAM。32位的NEC V850控制器已經(jīng)包含了一個(gè)大的RAM,作為FlexRay控制器的存儲(chǔ)器。這就是驅(qū)動(dòng)執(zhí)行其有效的分割和利用的地方。
運(yùn)用XCP在FlexRay上面進(jìn)行ECU標(biāo)定
在該構(gòu)架中,可以非常方便的集成最近開(kāi)發(fā)的組件,例如,因?yàn)樾碌膮f(xié)議或者標(biāo)準(zhǔn)的擴(kuò)展而必需開(kāi)發(fā)的組件。這些接口也必須與AUTOSAR標(biāo)準(zhǔn)一致。例如,XCP功能可以添加到以前定義的FlexRay協(xié)議棧中,這樣就可以測(cè)量和標(biāo)定FlexRay ECU內(nèi)部的信號(hào)。
XCP是優(yōu)化ECU系統(tǒng)參數(shù)的通用通訊協(xié)議。由于其獨(dú)立的協(xié)議層和傳輸層,XCP可以工作在不同類型的通訊網(wǎng)絡(luò)中(CAN, FlexRay, Ethernet, USB, RS232或者SPI/SCI)。這種明顯的分層還體現(xiàn)在FlexRay協(xié)議棧中的集成。通用通訊協(xié)議層X(jué)CP在FlexRay專用傳輸層(FrXCP)的上面,F(xiàn)lexRay專用傳輸層與FlexRay接口進(jìn)行信號(hào)交換(圖3)。
由于帶寬是動(dòng)態(tài)配置的,驅(qū)動(dòng)必須在測(cè)量或標(biāo)定的過(guò)程中配置緩存。因此,該模塊被標(biāo)準(zhǔn)AUTOSAR驅(qū)動(dòng)的擴(kuò)展版取代。
XCP是面向地址的協(xié)議。通訊發(fā)生在控制器組件和XCP Master中的相似結(jié)構(gòu)的軟件組件之間。一般來(lái)說(shuō),XCP Master是測(cè)量和標(biāo)定的工具(例如:Vector的CANape),其訪問(wèn)測(cè)量數(shù)據(jù)是通過(guò)面向地址的方式實(shí)現(xiàn)的,這就要求ECU中任務(wù)同步(事件驅(qū)動(dòng))。
動(dòng)態(tài)帶寬管理
連接是通過(guò)在ECU描述文件(A2L)中定義的初始通訊通道建立的。通過(guò)傳輸層命令,XCP Master控制一個(gè)循環(huán)中動(dòng)態(tài)部分的可變時(shí)隙的分配,這樣就能夠擴(kuò)展通道用于傳輸測(cè)量和標(biāo)定數(shù)據(jù)。這種“負(fù)載分配”在運(yùn)行時(shí)動(dòng)態(tài)優(yōu)化帶寬利用。由于同一總線上有多個(gè)ECU通訊,一個(gè)時(shí)隙不能專門分配給特定的ECU,而是采用多路技術(shù),即多個(gè)ECU使用同一時(shí)隙。這在需要較小帶寬時(shí)非常有意義,例如,一個(gè)ECU僅僅需要每秒發(fā)送一條報(bào)文,或者每四個(gè)周期發(fā)送一條報(bào)文。每一個(gè)報(bào)文的具有唯一的地址,詳細(xì)描述了時(shí)隙、周期和通道信息。這樣就可以在每個(gè)周期內(nèi)給不同ECU數(shù)據(jù)使用相同的時(shí)隙。測(cè)量數(shù)據(jù)包含時(shí)戳,可以在比一個(gè)周期時(shí)間更短的間隔內(nèi)訪問(wèn)測(cè)量變量。例如,系統(tǒng)的周期為5ms,而測(cè)量的周期可以是2.5ms。當(dāng)然,這也需要保證有足夠的帶寬在期望的時(shí)間內(nèi)傳輸數(shù)據(jù)。
在該通訊過(guò)程中,ECU必須保留并動(dòng)態(tài)配置發(fā)送和接收的緩存(RAM)。RAM可以包含在控制器中,也可以在必要的時(shí)候使用外部的存儲(chǔ)單元,該存儲(chǔ)單元由FlexRay驅(qū)動(dòng)管理。
在系統(tǒng)定義的時(shí)候,需要明確定義XCP可以使用多少時(shí)隙,什么樣的情況下進(jìn)行時(shí)隙分配。這是在FIBEX文件中完成的,還需要定義保留給XCP的slot。以下情況都是可能出現(xiàn)的:
·每個(gè)ECU都有自己的時(shí)隙
·多ECU使用相同的slot
在這種情況下,每一個(gè)ECU都有自己的地址??梢酝ㄟ^(guò)命令來(lái)激活緩存或使之失效。
·緩存可配置,這樣符合動(dòng)態(tài)分配
無(wú)論是否使用傳輸協(xié)議,XCP master的用戶接口應(yīng)該準(zhǔn)確描述實(shí)際測(cè)量和標(biāo)定任務(wù)。這樣,應(yīng)用工程師就可以優(yōu)化ECU參數(shù),而無(wú)需依賴他們所標(biāo)定的ECU的總線系統(tǒng)。
利用標(biāo)識(shí)符進(jìn)行標(biāo)定工作,可以在ECU中找到參數(shù)和測(cè)量變量,而無(wú)需知道變量的代碼地址。應(yīng)用程序根據(jù)ECU的描述文件將名字(標(biāo)識(shí)符)與物理地址關(guān)聯(lián)起來(lái)(圖 4)。
支持所有開(kāi)發(fā)階段
FlexRay的開(kāi)發(fā)人員可以從Vector公司獲得支持:從系統(tǒng)描述到基礎(chǔ)軟件的實(shí)現(xiàn)以及ECU的標(biāo)定。這包括用于設(shè)計(jì)、開(kāi)發(fā)、仿真、分析、測(cè)試ECU和分布式網(wǎng)絡(luò)的工具以及相應(yīng)的總線接口。CANape是第一個(gè)支持基于FlexRay的XCP測(cè)量、標(biāo)定和診斷的工具。結(jié)合針對(duì)ECU的成熟的軟件協(xié)議棧和標(biāo)定工具對(duì)于XCP-on-FlexRay的支持,用戶可以獲得與其它組件完美結(jié)合的組件,從而建立符合AUTOSAR的體系結(jié)構(gòu)。(恒潤(rùn)科技譯)
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論