什么是汽車基礎(chǔ)軟件
基礎(chǔ)軟件(Basic Software)似乎是汽車行業(yè)獨有的一個軟件分類,有時候也叫底層軟件(Low Level Software)或者底層技術(shù)(Base Tech)。汽車行業(yè)分工細(xì)致,上下游產(chǎn)業(yè)鏈豐富,很多并非從事基礎(chǔ)軟件相關(guān)工作的汽車工程師對汽車基礎(chǔ)軟件并不是很了解。本文嘗試針對初學(xué)者作簡單的介紹和探討,基礎(chǔ)軟件大佬請自動略過或批評指正。
那究竟什么是汽車基礎(chǔ)軟件呢?這是很多初接觸者經(jīng)常會問的問題。如果以傳統(tǒng)計算機(jī)行業(yè)術(shù)語類比,基礎(chǔ)軟件應(yīng)該最接近于計算機(jī)中的驅(qū)動軟件。抽象來看,兩者都是硬件或操作系統(tǒng)和應(yīng)用軟件之間的橋梁。舉個類比的例子,我們平時電腦上用Word打印文件是一個很簡單的操作。
電腦連接一個新的打印機(jī)時,我們往往要安裝一個新的打印機(jī)驅(qū)動程序,但是Word軟件本身并不需要更改或重新安裝。這里的打印機(jī)就像是汽車行業(yè)中眾多的硬件,Word軟件就像是汽車行業(yè)中豐富的應(yīng)用軟件(Application Software, ASW),而這里的打印機(jī)驅(qū)動軟件就最像是汽車行業(yè)中的基礎(chǔ)軟件,解耦軟硬件,讓應(yīng)用軟件可以適配不同的硬件。
圖1:打印機(jī)驅(qū)動軟件(類似汽車行業(yè)基礎(chǔ)軟件)示意圖
而如果要進(jìn)一步深究基礎(chǔ)軟件的精確定義,那只能搬出汽車基礎(chǔ)軟件屆大佬組織AUTOSAR中的定義描述: ——“The Basic Software (BSW) provides the infrastructural (schematic dependent and schematic independent) functionalities of an“Electronic Control Unit.” 這個定義似乎也比較抽象和泛化,但這也許正是基礎(chǔ)軟件的外延。因為在汽車行業(yè),似乎除了功能應(yīng)用軟件,其他軟件部分在不同場景下都可以稱為基礎(chǔ)軟件。有些時候基礎(chǔ)軟件也延伸為基礎(chǔ)技術(shù)或者平臺服務(wù)等名字,這時候其往往還包含了一部分傳統(tǒng)意義上的應(yīng)用軟件模塊。
因為“基礎(chǔ)”這個定義本身就是相對的,在不同語境下有不同的內(nèi)涵。就像很多產(chǎn)業(yè)工人會自稱基層,很多高級工程師也自稱基層,很多高級經(jīng)理也自稱基層。以下圖經(jīng)典AUTOSAR架構(gòu)為例,狹義的基礎(chǔ)軟件就是硬件和運行時環(huán)境(RTE)之間的這部分軟件,但在某些討論背景下,例如討論OTA升級功能時,基礎(chǔ)軟件和基礎(chǔ)技術(shù)的外延往往會延伸到包括RTE和部分應(yīng)用軟件(對應(yīng)AUTOSAR中的SWC)。
圖2:狹義和廣義基礎(chǔ)軟件示意圖
為什么要做汽車基礎(chǔ)軟件
基礎(chǔ)軟件往往是從demo走向量產(chǎn)的關(guān)鍵難題,也往往是OEM從企業(yè)或者整車層面定義得最多最詳盡最復(fù)雜的需求。傳統(tǒng)外資OEM像大眾、寶馬、福特、通用等公司都會定義詳細(xì)的基礎(chǔ)軟件需求,往往高達(dá)上百篇文檔,上十萬條需求。
基于這些詳細(xì)的基礎(chǔ)軟件需求,留給Tier1的空間其實很小,有點像OEM已經(jīng)把整個設(shè)計圖紙都定義好了,就是讓Tier1“代工”把基礎(chǔ)軟件實現(xiàn)出來。這背后也是這類強(qiáng)勢OEM的一種戰(zhàn)略要求:掌握汽車軟件的核心技術(shù)能力,讓車上所有控制器及其軟件都按自己的要求標(biāo)準(zhǔn)化、平臺化,方便統(tǒng)一調(diào)度,也方便切換不同的供應(yīng)商,進(jìn)一步加固自己在行業(yè)的核心地位。
汽車上的軟件越來越多,而這并不僅僅是多了幾百萬行代碼那么簡單。這背后實際上是要求汽車具備更豐富而完善的軟件基礎(chǔ)設(shè)施(infrastructure),涵蓋從開發(fā)到部署到維護(hù)的整個過程。將基礎(chǔ)軟件獨立地分離出來一個類別,并集中精力地設(shè)計開發(fā),可以帶來以下明顯的好處:
1.軟硬件解耦
這是基礎(chǔ)軟件最突出的使命和優(yōu)勢。就如開頭舉的Word軟件和打印機(jī)的例子,用戶需求肯定包括Word軟件要適配不同的打印機(jī)硬件,而有了驅(qū)動程序后,Word應(yīng)用軟件就可以和打印機(jī)硬件解耦。設(shè)計Word軟件的工程師可以專注于應(yīng)用軟件本身,打印機(jī)廠家也可以專注于打印機(jī)本身的設(shè)計,專注各自領(lǐng)域并把事情做好。這對汽車上數(shù)百個軟硬件復(fù)合的用戶功能來說也是一樣。在“缺芯”時代,正是由于基礎(chǔ)軟件的存在,才讓那么多汽車廠家可以有效地找尋替代料,切換芯片供應(yīng)商,保障供應(yīng)。
2.提高魯棒性
“穩(wěn)定”、“安全”、“可靠”等特性對于汽車行業(yè)來說都具有特殊的意義,對汽車軟件尤甚。汽車畢竟事關(guān)駕駛員和乘客的生命安全,而且往往會行駛十幾年,攀山涉水,環(huán)境變量復(fù)雜。通過細(xì)分基礎(chǔ)軟件,可以讓各個開發(fā)方專注領(lǐng)域內(nèi)的設(shè)計開發(fā),完善各自領(lǐng)域內(nèi)的軟件開發(fā)規(guī)范和流程,保障軟件質(zhì)量。同時,標(biāo)準(zhǔn)化的模塊和接口以及其標(biāo)準(zhǔn)化的屬性,都可以讓產(chǎn)品在頂層設(shè)計時就充分考慮到軟件的可靠性。
3.提高復(fù)用性
汽車基礎(chǔ)軟件的獨立,實質(zhì)上是帶著“高內(nèi)聚”和“低耦合”的面向?qū)ο蟮乃枷搿?biāo)準(zhǔn)化的模塊和接口可以給基礎(chǔ)軟件帶來很強(qiáng)的復(fù)用性?;谶@個優(yōu)勢,對成熟的基礎(chǔ)軟件模塊,供應(yīng)商都是提供相應(yīng)的配置開發(fā)工具,由汽車軟件工程師按照不同項目配置不同參數(shù),再由工具自動生成源碼。
所以汽車基礎(chǔ)軟件往往是第一次實現(xiàn)的時候需要很多人力物力,例如某新勢力供應(yīng)商第一次獲得傳統(tǒng)OEM的項目定點時。但是該供應(yīng)商如果再做該OEM的后續(xù)項目時,哪怕是開發(fā)全新的應(yīng)用功能,也可以很輕松地復(fù)用之前項目的大部分基礎(chǔ)軟件代碼。
但是汽車基礎(chǔ)軟件也有其面臨的挑戰(zhàn),一個是上文提到的第一次實現(xiàn)時需要大量人力物力投入,另一個是分層思想和軟硬件解耦帶來的效率損失。
前者的一個現(xiàn)實體現(xiàn)就是很多汽車新勢力公司都不愿意投入巨量資源到基礎(chǔ)軟件的開發(fā)中,相比之下快速交付產(chǎn)品更為重要。后者則更多是產(chǎn)品設(shè)計理念的取舍。例如按網(wǎng)絡(luò)披露的消息,特斯拉在自研FSD芯片的基礎(chǔ)上,就采用了很多軟硬件一體化的設(shè)計思想,并沒有過多地開發(fā)層次化、標(biāo)準(zhǔn)化的基礎(chǔ)軟件,以提高硬件利用率和減少軟件時延。
這種選擇,在我看來就有點像選用瑞士軍刀還是選用完備的刀具套裝:各有利弊,得根據(jù)具體情況選擇,沒有必然結(jié)論。按行業(yè)觀察,基礎(chǔ)軟件對于新勢力來說很多時候是一種“技術(shù)羈絆”,而對很多傳統(tǒng)汽車豪強(qiáng)來說則是他們的“技術(shù)積累”。
怎么做汽車基礎(chǔ)軟件
既然汽車基礎(chǔ)軟件事實上大量存在于汽車行業(yè)的軟件開發(fā)項目中,那么實際上大家都是怎么開發(fā)的呢? 談到怎么實施的問題,就不得不提到AUTOSAR(Automotive Open System Architecture),它定義的主要范圍就是基礎(chǔ)軟件。AUTOSAR匯聚了眾多汽車行業(yè)頂尖軟件大牛的智慧,是基于行業(yè)最佳實踐而總結(jié)提煉的精華,并且應(yīng)用了大量層次結(jié)構(gòu)和面向?qū)ο蟮乃枷肜砟?,也是汽車行業(yè)基礎(chǔ)軟件的事實標(biāo)準(zhǔn)。它在行業(yè)內(nèi)的統(tǒng)治地位,通過下圖所示的組織成員就可見一斑。
目前AUTOSAR分為Classic Platform AUTOSAR(CP)和Adaptive Platform AUTOSAR(AP)兩個平臺。CP是面向功能的FOA架構(gòu)(Function-Oriented Architecture),目前廣泛應(yīng)用于傳統(tǒng)嵌入式處理器中,如發(fā)動機(jī)控制器、電機(jī)控制器、ADAS域控制器中的MCU等。而AP則是面向服務(wù)的SOA架構(gòu)(Servic-Oriented Architecture),應(yīng)用于針對高計算能力、高帶寬通信、分布式部署的智能駕駛域控制器和座艙控制器的SOC上。
下圖是AUTOSAR通信協(xié)議棧的示意圖。接下來我們以它為例子,看一下通信的具體實施。我們先從上往下看一下信號從應(yīng)用層軟件產(chǎn)生到發(fā)送到物理總線的過程。信號由應(yīng)用層軟件創(chuàng)建后,通過RTE發(fā)送至COM模塊,它下面的軟件不能區(qū)分信號,只能理解PDU。因此COM將信號打包成PDU,進(jìn)一步傳輸給PDU Router。
PDU Router按照不同的傳輸協(xié)議將其傳輸給下游。如果PDU長度過大,則會先傳給CAN TP或者FlexRay TP,將一條長的PDU分割成若干條滿足協(xié)議要求的PDU。以CAN為例,CAN TP分割完P(guān)DU后會將其傳給CAN Interface(CAN If)模塊。
CAN If是ECU抽象層中的一個模塊,它負(fù)責(zé)傳輸請求、傳輸確認(rèn)和PDU模式控制等服務(wù)。CAN If往上的軟件和接口都是對具體的CAN收發(fā)器硬件不感知的。然后CAN If會調(diào)用底層的CAN Driver模塊,以控制和訪問實際的CAN收發(fā)器硬件。CAN Driver為它上層的軟件提供了硬件訪問接口,亦即硬件抽象。FlexRay和LIN的數(shù)據(jù)下行也是同理。而當(dāng)數(shù)據(jù)從物理總線接收再反饋到應(yīng)用軟件則是同理的逆向過程。
圖5:AUTOSAR通信協(xié)議棧示意圖
這個通信分層的架構(gòu),可以讓各層軟件各司其職,讓應(yīng)用層等軟件屏蔽底層軟硬件實現(xiàn)。例如不管是CAN、FlexRay、LIN還是以太網(wǎng)傳輸上來的PDU,都會匯總到PDU Router,再到COM,統(tǒng)一管理內(nèi)存,這樣應(yīng)用層軟件獲取信號就可以只關(guān)注其端口號,而無需考慮它究竟從哪類總線傳上來的,因為這對應(yīng)用軟件來說也沒有意義。
而在實際操作層面,AUTOSAR基礎(chǔ)軟件標(biāo)準(zhǔn)化帶來了高度的可復(fù)用性,成熟的工具鏈也往往可以讓汽車軟件工程師不用埋頭寫基礎(chǔ)代碼,而是通過配置來高效地生成可靠的軟件代碼。通過AUTOSAR的標(biāo)準(zhǔn)接口文件(*.arxml)可以很方便地在不同工具之間交互配置數(shù)據(jù)。
以下圖的Vector工具鏈為例,OEM可以通過PREEvision設(shè)計整車EE架構(gòu),定義通信數(shù)據(jù)等,然后導(dǎo)出基于ECU抽象的*.arxml文件提供給供應(yīng)商。通過DaVinci Developer等工具可以導(dǎo)出應(yīng)用層SWC的*.arxml文件。基于模型的應(yīng)用層軟件工具(例如Matlab)可以利用該應(yīng)用層接口文件生成滿足AUTOSAR標(biāo)準(zhǔn)的應(yīng)用層源碼(*.c和*.h文件)。
而基礎(chǔ)軟件部分則可以通過導(dǎo)入ECU抽象的*.arxml文件和ODX診斷數(shù)據(jù)庫等文件,在DaVinci Configurator中進(jìn)行詳細(xì)配置,生成RTE和各個BSW模塊的源碼(*.c和*.h文件)?;A(chǔ)軟件、RTE和應(yīng)用軟件的源碼合在同一個工程項目中后,就可以通過編譯器生成可以刷寫到ECU上的可執(zhí)行代碼(如*.hex或*.elf)。這個高效配置的工作流,既可以讓開發(fā)者專注關(guān)鍵功能設(shè)計,又能保障生成的源碼質(zhì)量,是汽車基礎(chǔ)軟件優(yōu)勢的一個實踐體現(xiàn)。
圖6:Vector的AUTOSAR基礎(chǔ)軟件配置工作流示意圖
審核編輯:劉清
-
控制器
+關(guān)注
關(guān)注
112文章
16105瀏覽量
177080 -
OEM
+關(guān)注
關(guān)注
4文章
400瀏覽量
50241 -
AUTOSAR
+關(guān)注
關(guān)注
10文章
349瀏覽量
21446 -
OTA
+關(guān)注
關(guān)注
7文章
566瀏覽量
35106 -
ASW
+關(guān)注
關(guān)注
0文章
9瀏覽量
11892
原文標(biāo)題:一文初識汽車行業(yè)基礎(chǔ)軟件
文章出處:【微信號:智能汽車電子與軟件,微信公眾號:智能汽車電子與軟件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論