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