AUTOSAR軟件架構簡介

AUTOSAR是什么

AUTOSAR的全稱是AUTomotive Open System Architecture,直譯為汽車開放系統(tǒng)架構,是由全球汽車制造商、零部件供應商及其他電子、半導體和軟件系統(tǒng)公司聯(lián)合建立,致力于為汽車工業(yè)開發(fā)一個開放的、標準化的軟件架構。簡單來說,AUTOSAR是一種開放的軟件架構,需要汽車制造商、零部件供應商、芯片供應商及軟件公司共同合作來實現(xiàn)該軟件架構。

AUTOSAR目前分為兩種:Classic Platform AUTOSAR和Adaptive Platform AUTOSAR,也稱為CP和AP。通常我們提到的AUTOSAR一般指Classic AUTOSAR,它是用在眾多汽車ECU上的AUTOSAR架構。而Adaptive AUTOSAR是隨著近些年汽車信息娛樂系統(tǒng)的發(fā)展,在帶有高級操作系統(tǒng)(Linux或QNX)的車載Soc上使用的一種AUTOSAR架構。本文談論的是Classic AUTOSAR,因此下面提到的AUTOSAR均指Classic AUTOSAR。


為什么使用AUTOSAR

那么問題來了,為什么要使用AUTOSAR這種軟件架構,或者說使用AUTOSAR能帶來哪些好處?

在說明AUTOSAR的優(yōu)勢之前,我們先來看一下使用AUTOSAR之前的軟件開發(fā)現(xiàn)狀。

軟硬件耦合

傳統(tǒng)的汽車ECU開發(fā),一般是由一個經(jīng)驗比較豐富的軟件架構師來搭建一個項目的軟件架構。做的比較好的軟件架構可能會考慮軟件分層,比如驅(qū)動層、服務層、應用層等,做的不好的軟件架構,軟件層級可能就沒有那么分明,在應用層甚至直接會嵌入硬件驅(qū)動相關的代碼。

多人同時開發(fā)效率低下

在AUTOSAR之前,ECU軟件開發(fā)一般按照功能模塊進行分工。不同模塊之間的數(shù)據(jù)交互需要負責相應模塊的工程師提前定義好接口,并在各自的模塊開發(fā)完成后進行聯(lián)合調(diào)試,調(diào)試過程中可能會發(fā)現(xiàn)定義接口時沒有考慮到的一些問題,此時需要重新設計接口并進行再一次的聯(lián)合調(diào)試。

軟件復用性低

由于傳統(tǒng)的ECU 軟件在開發(fā)時沒有清晰的層級劃分,軟硬件之間以及不同的功能模塊之間耦合性較大,由于MCU選型不一樣或者不同汽車主機廠的項目需求有差異,在把一套已經(jīng)開發(fā)完成的軟件移植到另一個項目時,會遇到比較大的困難。

在使用AUTOSAR之后會有哪些改變呢?

軟硬件隔離

下圖的左側是在使用AUTOSAR之前的狀態(tài),可以看到軟硬件之間的耦合性是很大的。右側是使用AUTOSAR之后的狀態(tài),軟硬件是被分隔開來的。如果更換MCU,只需要變更AUTOSAR架構中的一部分即可(BSW,即基礎軟件),而處于上層的應用軟件是可以直接復用的。

提高團隊開發(fā)效率

AUTOSAR對不同模塊之間的數(shù)據(jù)交互接口進行了統(tǒng)一定義(RTE),每個模塊只需要按照接口標準定義去開發(fā),當開發(fā)完成后可以直接進行聯(lián)合調(diào)試,因為接口定義出現(xiàn)問題的概率是很低的。

軟件復用性程度提高

由于軟硬件之間進行了良好的隔離,以及模塊之間的通信接口也是按標準開發(fā)的。一個開發(fā)好的軟件可以直接根據(jù)新項目的需求取用相應的模塊,移植到另一個項目上。由于上層的應用軟件不會涉及具體的硬件,即使更換MCU應用層也無需做相應的更改。

介紹完了AUTOSAR的好處,一起來看一下AUTOSAR的具體架構。


AUTOSAR的具體架構

下圖展示了AUTOSAR比較High Level的三個大的層級:應用軟件層、RTE和基礎軟件層。應用軟件層包含了汽車主機廠要求的和功能相關的軟件,RTE是應用層不同模塊之間以及應用層和基礎軟件層之間進行交互的橋梁,基礎軟件層則包含MCU及其外圍設備驅(qū)動、硬件抽象層以及為上層應用提供接口服務的服務層。

而基礎軟件層(BSW)可以再進一步劃分,如下圖的微處理器抽象層(MCAL)、ECU抽象層、服務層以及復雜驅(qū)動。

MCAL其實就是MCU的驅(qū)動軟件,對每個外設模塊的操作進行了寄存器操作的封裝,比如SPI的初始化只需要調(diào)用一個初始化函數(shù)即可,不用關心函數(shù)內(nèi)部是怎么實現(xiàn)的。

ECU抽象層相比MCAL多了一些板上硬件資源的驅(qū)動,比如外部看門狗、片外EEPROM或FLASH等,如果要使用這些硬件資源直接調(diào)用ECU抽象層的接口即可。

服務層是進一步的封裝和抽象,一般包括OS、電源狀態(tài)管理、整車網(wǎng)絡通信、診斷服務、存儲服務等。

復雜驅(qū)動主要包含一些不在AUTOSAR標準規(guī)范里的一些硬件設備的驅(qū)動,比如電機驅(qū)動、一些比較復雜的傳感器驅(qū)動等。

以上是對AUTOSAR架構的一個大體的介紹,針對每一層都可以展開進行詳細的介紹。如果大家有興趣,請關注汽車軟件后花園,我們后會有期。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容