“AUTOSAR (AUTomotive Open System ARchitecture) is a worldwide development partnership of automotive interested parties founded in 2003. It pursues the objective of creating and establishing an open and standardized software architecture for automotive electronic control units (ECUs) excluding infotainment. Goals include the scalability to different vehicle and platform variants, transferability of software, the consideration of availability and safety requirements, a collaboration between various partners, sustainable utilization of natural resources, and maintainability throughout the whole "Product Life Cycle"” --Wikipedia
以上就是AUTOSAR的官方定義,一個開放的系統(tǒng)架構,便于軟件的標準化設計以及跨硬件平臺的應用。
在汽車電子的發(fā)展過程中,由于價格、可靠度、速度的需求,大量了采用嵌入式系統(tǒng),但也面臨了軟件設計無一定標準,當系統(tǒng)日趨復雜時,設計、維護、升級就越加困難,因此倡導汽車軟件的標準化,一直是汽車業(yè)者的需求及心聲。從早期的OSEK/VDX,到近期的AUTOSAR,都是這類需求的產(chǎn)物。
AUTOSAR (車輛開放系統(tǒng)架構;Automotive Open System Architecture) 于2003年創(chuàng)立,系由車廠、零件供貨商、開發(fā)工具廠商組成,目前已有162個成員,目標為推動車用軟件標準化,它整合原有OSEK/VDX,運作活躍,目前版本已更新到4.2。
AUOSAR的特色,在于利用中間件來隔絕硬件更換的影響,如圖1;以往嵌入式系統(tǒng)的開發(fā)往往須遷就于硬件所提供的韌體或函式庫來進行程序?qū)懽?,如同圖1之左方,以致于當硬件更改時,既有的軟件必須改寫。AUTOSAR在軟硬件之間定義一個標準的接口,軟件是針對此接口寫作,且硬件有義務提供此接口,因此當硬件有需要更換時,透過AUTOSAR定義的標準接口,原本的軟件程序,可以不用修改,如同圖1右方所示。

圖1. AUTOSAR標準接口示意圖
透過標準接口的訂定,達成軟件的可重用性(re-use)及可交換性,除了既有開發(fā)的軟件可以不受硬件的限制,增加了可重用性(re-use),另在車廠(OEM)和供貨商(supplier)之間,由于大家都是遵照AUTOSAR的標準,車廠商可以選擇的供貨商增加了,相對的,供貨商的市場也擴大了,這就是AUTOSAR強調(diào)的「Cooperate on standards, compete on implementation」-在標準上合作、在實作上競爭,提高軟件的可交換性,使供需雙方都同時受益的高明策略。
AUTOSAR采用階層式設計,使應用軟件到硬件之間共有三個抽象層:微處理器抽象層(MCAL)、ECU抽象層(ECAL),及服務層,大大提高了軟件重復使用的程度,如圖2所示。
圖2. AUTOSAR軟件階層圖
AUTOSAR雖然立意良好,但架構相形復雜,開發(fā)過程中高度依賴工具,使開發(fā)成本大幅提高,也因參加成員眾多,標準變得十分龐雜,因應近年興起的主動輔助安全系統(tǒng)(ADAS),也還來不及將它收納其中,因此是否真能成為未來統(tǒng)一車輛電子的標準系統(tǒng),還有待觀察,但這仍是車輛業(yè)界中之重要主流,值得我們密切注意。
目前車輛中心(ARTC)正積極研發(fā)先進輔助安全系統(tǒng)(ADAS)及自主駕駛系統(tǒng)(ADS),同時也注意到開放式架構的重要性,并采取AUTOSAR透過標準接口隔絕硬件異動性的作法,以使我們研發(fā)的成果更能穩(wěn)健發(fā)展,更易標準化。
如何實現(xiàn)跨硬件平臺的應用呢?
其實,嵌入式軟件的設計無非就是寄存器的設置和應用邏輯的結合,和硬件平臺結合最緊密的部分就是寄存器的設置。在AUTOSAR里,寄存器應該如何設置是保存在arxml文件里的(有的工具商定義了別的文件類型名稱,但是仍然是當作arxml格式來用)。
讀者要明白,AUTOSAR的工具軟件基本就是兩個功能:
1, arxml文件的產(chǎn)生和編輯;
2,產(chǎn)生源代碼。
理想狀態(tài)下,1,如果兩個芯片的性能相近,那么我給A chip做的arxml文件應該做很小的修改甚至不修改就可以給B chip用;2, 同一款芯片,我用EB Tresos設置好的arxml文件(EB自己的文件格式不是arxml)應該可以直接import進DaVinci Configurator。
現(xiàn)階段這兩點都做不到。
工具軟件提供商一般都和芯片提供商緊密合作,這樣就可以保證做出合理的代碼模板,以及用戶的設置可以正確的翻譯成寄存器的設置。
軟件的標準化設計主要是使用盡量統(tǒng)一的函數(shù)名和port格式,以及使用方法相同。但是,在具體操作過程中,不同的用戶根據(jù)自己的需要和資源配置,都會做出不同的內(nèi)部流程設計。AUTOSAR本身是無法自洽的,所以創(chuàng)造性地提出了CDD的概念,這個東西可以當SWC使用,也可以當BSW用,可以有端口,也可以直接調(diào)用底層函數(shù)。此物一出,基本上就把AUTOSAR的初衷給毀了。你可以想象一個場景,就是把所有的SWC都定義成CDD,那AUTOSAR也就不用做了。