AUTOSAR是由全球汽車OEM和供應商共同推出的一種汽車電子嵌入式軟體分層架構(gòu)。該分層架構(gòu)由微控制器抽象層、ECU抽象層、服務層、執(zhí)行時環(huán)境(RTE)和應用層組成,前叁層被統(tǒng)稱為基礎軟體(BSW)。
AUTOSAR各層軟體的通訊透過叁類介面實現(xiàn),分別是標準介面、AUTOSAR介面和標準AUTOSAR介面。其中,標準介面用于BSW各個模組之間的通訊,已用C語言定義,如void Adc_Init(const Adc_ConfigType* ConfigPtr)。AUTOSAR介面用于軟體構(gòu)件(SW-C)之間的通訊或者軟體構(gòu)件和ECU韌體(IO硬體抽象、復雜設備驅(qū)動)之間的通訊,這類介面命名以‘Rte_’為前綴。標準AUTOSAR介面用于軟體構(gòu)件存取AUTOSAR服務。依賴這種分層架構(gòu)和介面定義,AUTOSR顯著提高了汽車電子嵌入式軟體的再使用性──層級越高者,再使用性越強。值得注意的是:
* 微控制器抽象層層級最低,隨微控制器的更換而更換;
* RTE雖然層級僅低于應用層,但由于它負責著應用層和BSW之間的橋樑作用,和硬體的耦合性最高,不具有再使用性;
* 應用層(除感測器、執(zhí)行器相關的軟體構(gòu)件外)完全獨立于硬體,具有絕對的再使用性。
圖1 AUTOSAR分層架構(gòu)
*
汽車診斷簡介
目前,整車廠和供應商採用在線診斷與離線診斷相結(jié)合的診斷方法。在線診斷透過ECU內(nèi)部軟硬體實現(xiàn)自診斷。在汽車執(zhí)行過程中,自診斷系統(tǒng)即時監(jiān)控電子控制系統(tǒng)各組成部份的工作狀態(tài),因而檢測電子控制系統(tǒng)中的故障。自診斷系統(tǒng)一方面將檢測出的故障透過一定的方式(比如警報指示燈)向駕駛員發(fā)出警告,另一方面將故障程式碼及相關數(shù)據(jù)存入ECU記憶體。離線診斷透過外部診斷設備讀取相應的診斷資訊,實現(xiàn)診斷作業(yè)。實現(xiàn)離線診斷的關鍵在于如何實現(xiàn)診斷設備和ECU之間的通訊機制和診斷服務,即診斷協(xié)議。
目前,診斷協(xié)議標準主要分為ISO和SAE兩種體系。美國使用SAE標準體系,包括中國在內(nèi)的多數(shù)國家使用ISO標準體系。在乘用車領域,OEM正從自定義診斷協(xié)議逐漸轉(zhuǎn)向ISO標準。在商用車領域,OEM沿用SAE診斷,歐洲OEM在此基礎上增加了ISO診斷。表1列出了部份ISO和SAE標準對照。
AUTOSAR CAN診斷實現(xiàn)
1) 診斷服務
目前,AUTOSAR V3.1診斷部份支援9個OBD服務(如表2所示),14個UDS服務(如表3所示)。
依據(jù)表2和表3可知,AUTOSAR不支援OBD中的0x05服務(請求氧感測器監(jiān)測結(jié)果),塬因在于基于CAN線的0x05服務在0x06中實現(xiàn)。不支援UDS中的0x28(通訊控制)、0x34(程式下載)、0x35(程式上傳)、0x36(數(shù)據(jù)傳輸)和0x37(請求傳輸煺出)服務,且0x10服務不支援編程會話和擴展會話這兩種子功能。這些服務主要用于ECU重新編程,因此AUTOSAR不支援Bootloader。
圖2 AUTOSAR CAN診斷相關模組
雖然AUTOSAR目前不支援上述服務,但并未限制開發(fā)者對其進行擴展。
2) 軟體架構(gòu)
AUTOAR架構(gòu)中和診斷相關的模組如圖2所示。
FIM模組的作用是根據(jù)DEM(Diagnostic Event Manager)報告的事件狀態(tài)使能或禁止軟體構(gòu)件內(nèi)部的功能實體。PDU Router(協(xié)議數(shù)據(jù)單元路由器)模組僅負責轉(zhuǎn)發(fā)DCM(Diagnostic Communication Manager)和CAN TP(CAN Transport Layer)之間的I_PDU(交互層協(xié)議數(shù)據(jù)單元),不會對數(shù)據(jù)進行任何修改。CAN Interface模組、CAN Driver模組和CAN Transceiver模組負責L_PDU(數(shù)據(jù)鏈路層協(xié)議數(shù)據(jù)單元)的傳輸。
DEM、DCM和CAN TP是AUTOSAR架構(gòu)中和診斷相關的核心模組。
3) DCM
DCM模組遵循ISO 14229-1、ISO 15031-5、ISO 15765-4和SAE J1979標準,能直接處理0x10、0x27和0x3E服務。收到AUTOSAR支援的OBD服務或其他UDS服務時,靠叫DEM、軟體構(gòu)件或者其他BSW模組提供的介面進行響應。
AUTOSAR建議用叁個功能模組組成DCM,分別是DSL(Diagnostic Session Layer)、DSD(Diagnostic Service Dispatcher)和DSP(Diagnostic Service Processing)。其中DSL負責處理PDU Router傳來的診斷請求,管理會話層和應用層定時參數(shù),處理會話狀態(tài)的切換等。DSD負責將DSL傳來的診斷請求轉(zhuǎn)發(fā)給DSP,同時將DSP傳來的診斷響應報文傳給DSL。DSP負責分析接收到的診斷請求報文,檢查其報文格式以及其請求的子功能。只有在診斷請求報文的服務標識符、子功能、報文格式等條件都滿足的情況下,DSP才會處理收到的請求報文,并將處理結(jié)果整理成診斷響應報文發(fā)給PDU Router。
4) DEM
DCM模組遵循的標準與DCM相同,負責直接處理與DTC相關的服務,如UDS中的0x19服務(響應報文由DCM發(fā)送出去)。當軟體構(gòu)件中的Monitor Function檢測到故障或BSW模組檢測到故障時,將通知DEM模組處理和儲存‘診斷事件’(由Event ID進行標識)。如果故障確診,唿叫NVRAM Manager(非揮發(fā)性記憶體管理器)提供的介面將其存取到非揮發(fā)性記憶體中,同時通知應用層進行故障指示。DEM的狀態(tài)圖如圖3所示:
圖3 DEM狀態(tài)圖
5) CAN TP模組
遵循ISO 15765-2標準。負責診斷報文的尋址、拆包與打包,以及網(wǎng)路層定時參數(shù)的管理。所以,該模組向下傳輸?shù)氖荖_PDU(網(wǎng)路層協(xié)議數(shù)據(jù)單元)。
結(jié)論
第一、由于嚴格分層,除了CAN Driver和CAN Transceiver模組要依賴于硬體,AUTOSAR與診斷相關的模組幾乎完全獨立于硬體。按照此架構(gòu)開發(fā)完成的診斷程式碼能夠擺脫硬體的束縛,具有最大程度的再使用性。
第二、AUTOSAR目前不支援SAE J1939。
第叁、暫時不能直接將AUTOSAR軟體架構(gòu)用于Bootloder程式的開發(fā)。
綜上所述,AUTOSAR標準仍舊處于發(fā)展和完善階段,但隨著目前汽車ECU軟體開發(fā)矛盾的加劇,開發(fā)難度不斷增大,開發(fā)週期卻不斷縮短,AUTOSAR將成為必然趨勢。