我們總說汽車軟件不同于互聯(lián)網(wǎng)軟件,要區(qū)別對待,也有很多說法,比如:
汽車軟件的實時性要求更高
汽車軟件的安全性要求更高
汽車軟件所用編程語言不同
汽車軟件操作系統(tǒng)不同
汽車軟件的開發(fā)環(huán)境與工具鏈不同
......
這些都沒錯,但又不怎么對。
一來是,在座艙、智駕、后臺軟件大舉進入以及電子電氣架構(gòu)不斷演化后,汽車軟件的內(nèi)涵已經(jīng)有了比較大的擴展。
二來呢,這些都屬于技術特性,技術差異點只能說明汽車的“軟件”和互聯(lián)網(wǎng)的“軟件”,而非“汽車軟件”與“互聯(lián)網(wǎng)軟件”。
我們希望能從整體的角度來看汽車軟件,這就引出了今天的話題——集成,它也是汽車軟件獨特性的核心體現(xiàn)。
具體來看,集成可以分為以下5個層次:
將軟件單元集成到一起
將軟件集成到硬件上
將硬件集成到機械殼體上
將ECU集成到子系統(tǒng)中
將子系統(tǒng)集成到整車上
1
第一層:將軟件單元集成到一起
當我們講軟件集成時,軟件自身的集成是其最典型和最狹義的含義。
簡單說,軟件集成就是將經(jīng)過驗證的軟件單元集成為完整軟件,操作層面的表現(xiàn)為將不同的.c或.h文件以及一些config文件通過集成工具集成構(gòu)建成軟件包。
當然,由于實際項目的復雜性,集成會作為整個軟件項目管理鏈條的一個環(huán)節(jié)。
第一,開發(fā)工程師接受ALM工作流工具上的缺陷、變更或任務等的驅(qū)動,進行本地代碼的修改,之后將代碼push到代碼倉庫,把代碼備好。
第二,集成工程師也最好通過工作流工具接受集成任務,任務中要明確集成的分支策略、交付目的、時間計劃、各單元信息等,而后基于這些輸入要完成軟件的構(gòu)建。
第三,集成工程師自然也需要對自身工作質(zhì)量做一個確認,所以要完成靜態(tài)或動態(tài)集成測試,相關結(jié)果可能會包括編譯器的警告信息、代碼掃描結(jié)果、資源消耗數(shù)據(jù)、堆棧分析內(nèi)容、代碼評審及冒煙測試情況等。
第四,集成工程師將包括可執(zhí)行文件、測試報告、配置信息、問題清單、releasenotes 等一系列必要材料打包對外發(fā)布。
2
第二層:將軟件集成到硬件上
當完整的軟件包就緒后,我們需要將軟件集成到硬件上,準確來說是將軟件刷寫到MCU等芯片里。
理論上講,集成都是通過接口來完成的,軟硬件集成也就是通過軟硬件接口來進行,具體表現(xiàn)就是物理的芯片引腳和邏輯的傳輸數(shù)據(jù)的軟件接口,具體方法如下:
常規(guī)的產(chǎn)線或打樣室刷新的方式基本是通過芯片引腳直接燒錄
如果硬件已經(jīng)裝在車上了,就可以通過OBD或USB口刷新
非現(xiàn)場則可以通過遠程OTA刷新
另外,如果開發(fā)過程比較理想,這些接口應該在系統(tǒng)架構(gòu)的部分進行過定義。
3
第三層:將硬件集成到機械殼體上
到這里,我們會得到一塊有軟件的電路板。
進一步地,還需要電路板與機械外殼、接插件、屏幕等的集成,只不過這步集成更多有著機械裝配的意味,落在現(xiàn)實工作里就是打一批樣件了,結(jié)果就是形成我們所說的ECU或者控制模塊。
由于汽車電子需要面臨各類復雜嚴苛的駕駛環(huán)境,所以這部分仍然對軟件功能的發(fā)揮有很大影響,很典型的例子是內(nèi)部傳感器對安裝環(huán)境有模態(tài)和尺寸要求。
4
第四層:將ECU集成到子系統(tǒng)中
ECU至少需要和一套傳感器及一套執(zhí)行器一起構(gòu)成一套具備特定功能的系統(tǒng),我們姑且稱之為子系統(tǒng),比如,驅(qū)動系統(tǒng)、剎車系統(tǒng)、轉(zhuǎn)向系統(tǒng)、被動安全系統(tǒng)、照明系統(tǒng)、輔助駕駛系統(tǒng)等。
對于這個層級的集成,操作上就是通過線束連接ECU、傳感器、執(zhí)行器這三者,并且將ECU固定在整車上。后兩者通常來源于不同組織,所以特定集成的意義就更明確。
至于集成效果,是需要通過在整車環(huán)境中完成布置確認、模態(tài)分析、傳感信號校驗、電子對手件聯(lián)調(diào)、子系統(tǒng)功能確認、產(chǎn)線確認以及EMC、振動、沖擊、水淋、鹽霧、高低溫等一系列的考驗的。
對于軟件來說,尤其要考慮對手件聯(lián)調(diào),越來越多的電子功能需要多模塊協(xié)同,最常見的診斷、通信問題就是該環(huán)節(jié)頻繁識別出來的。
另外,很多在子系統(tǒng)性能也是需要在整車環(huán)境下進行軟件標定匹配的。
5
第五層:將子系統(tǒng)集成到整車上
傳統(tǒng)汽車的各個子系統(tǒng)或者域通常是分離的,相互之間大體隔絕,所以涉及到的是裝配,而非集成這個概念。
但是,電子電氣架構(gòu)在不斷走向跨子系統(tǒng)、跨域、域融合、中央集中,現(xiàn)在車輛子系統(tǒng)之間的邊界越來越模糊,越來越多的功能特性需要聚焦在更整車、更終端才能得到驗證與確認。
6
寫在最后
整體來說,在汽車行業(yè)里做軟件,要意識到,所有的代碼其實都是最終服務于整車里的表現(xiàn)。
另外一點,汽車的多層次集成其實是有歷史原因的,主要是來源于汽車零部件全球模塊化分工及采購這種模式。
這種分工與標準化的好處不言自明,但也增加了很多集成點,集成點多了就會造成溝通協(xié)調(diào)復雜或者解決方案整合困難等弊端,而這也是我們做汽車軟件要充分考量的。
往長遠看,我們現(xiàn)在從架構(gòu)層面追求的中央化正在不斷地減少集成點,同樣也就會弱化集成的價值與必要性。
編輯:黃飛
評論
查看更多