由蓋世汽車(chē)、AUTOSAR組織、上海車(chē)展三方聯(lián)合主辦的SDVF2021第二屆軟件定義汽車(chē)高峰論壇暨AUTOSAR2021中國(guó)日于4月19-21日在上海舉辦,本次活動(dòng)也是2021上海車(chē)展的同期活動(dòng)之一,同時(shí)也是AUTOSAR組織在中國(guó)區(qū)唯一官方會(huì)議。本次會(huì)議邀請(qǐng)到了聯(lián)合汽車(chē)電子域控制器系統(tǒng)開(kāi)發(fā)經(jīng)理 施思明先生在本次論壇進(jìn)行了題為《基于域控制器,使用AUTOSAR Adaptive構(gòu)建SOA軟件平臺(tái)》的主題演講,以下是他在本次演講的主要內(nèi)容:
整個(gè)議題有四塊:1、關(guān)于SOA。2、基于AP的SOA軟件開(kāi)發(fā)方法。3、基于AP的SOA軟件開(kāi)發(fā)工具。4、基于AP搭建開(kāi)發(fā)式軟件平臺(tái)。
第一點(diǎn)是SOA,我們都知道SOA現(xiàn)在大家有各種各樣的文章去討論,SOA是一種設(shè)計(jì)模式和思想,其產(chǎn)物就是面向服務(wù)的架構(gòu),在這個(gè)架構(gòu)之中服務(wù)會(huì)具備如下特點(diǎn)。它是典型的結(jié)果導(dǎo)向的東西,符合如下主要特點(diǎn)就認(rèn)為這個(gè)軟件架構(gòu)就是面向服務(wù)的軟件架構(gòu),特點(diǎn)包含了這么幾個(gè):可重用,松耦合,隱藏邏輯,可組合,自主(獨(dú)立運(yùn)行),可被發(fā)現(xiàn)。
HowSOA,怎么樣做SOA這個(gè)事情?下面已經(jīng)給了一個(gè)標(biāo)準(zhǔn)型的答案,這也不是完整的答案,但是這是一個(gè)基礎(chǔ),也就是說(shuō)我們引入了AP中間件,面向服務(wù)的組件之后,整個(gè)軟件架構(gòu)會(huì)符合面向服務(wù)的架構(gòu)的情況。我們做一個(gè)對(duì)比,傳統(tǒng)嵌入式軟件,如果我們狹義定義的話(huà),是基于CP的軟件架構(gòu),右側(cè)是AP軟件架構(gòu)。在CP軟件架構(gòu)上面是一個(gè)整體軟件,在整體軟件下面是否符合SOA剛才提到的那些特性呢?基本符合,但是有些沒(méi)有辦法做到,比如說(shuō)自主(可獨(dú)立運(yùn)行),依托于不同的平臺(tái)完成自身的邏輯。還有可被發(fā)現(xiàn),我們認(rèn)為它是靜態(tài)可被發(fā)現(xiàn)的組件單元。右手邊當(dāng)引入AP之后,我們發(fā)現(xiàn)SOA特性能夠完全被滿(mǎn)足和覆蓋。
為了便于理解,我們看一個(gè)場(chǎng)景,也就是說(shuō)在這個(gè)場(chǎng)景之下,在整車(chē)EE架構(gòu)上面現(xiàn)在有三個(gè)ECU。第一個(gè)是開(kāi)發(fā)了ECU1(A和B),ECU2和3開(kāi)發(fā)了C和E兩個(gè)模塊,我們先看一下它的開(kāi)發(fā)過(guò)程,如圖所示。在開(kāi)發(fā)上面都是以單獨(dú)的SW-C進(jìn)行設(shè)計(jì),在編譯和集成環(huán)境下面會(huì)為整個(gè)ECU進(jìn)行編譯,我們稱(chēng)之為Monolithic,在部署層面我們會(huì)把SW-C融入到底層應(yīng)用,是固定在某一個(gè)特定的ECU環(huán)境下面,也要做一些相應(yīng)的配置。
在這種場(chǎng)景下面,當(dāng)我們走到SOP之后,當(dāng)我們需要新增一個(gè)軟件的時(shí)候,我們把它叫做WSW-C D,當(dāng)然我們要去開(kāi)發(fā)這個(gè)軟件,接下來(lái)要重新編輯整車(chē)CAN拓?fù)?,為D提供相應(yīng)的輸入,之后在開(kāi)發(fā)階段重新配置ECU的RTE層。在集成編譯階段以整體ECU控制器軟件為單元再整體編譯1和2上面整體軟件,在部署上面也需要部署整體ECU軟件。
第二個(gè)場(chǎng)景是我們想SW-C D這個(gè)軟件移植到ECU3控制器平臺(tái)上面,我們要做的事情就是重新編輯整車(chē)CAN矩陣,重新進(jìn)行OTA相關(guān)的軟件到2和3控制器上面。
對(duì)比看一下,在引入了AP之后,在SOA話(huà)題上面怎么去做這樣一個(gè)事情,面對(duì)同樣的場(chǎng)景。首先在ECU上面叫做服務(wù)組件,在AA上面會(huì)向中間件發(fā)布已有的服務(wù)組建,在設(shè)計(jì)階段,包括設(shè)計(jì)和編譯,集成部署,整體過(guò)程中都是獨(dú)立的軟件,自主的,它可以獨(dú)立的進(jìn)行編譯以及獨(dú)立的動(dòng)態(tài)的進(jìn)行部署,當(dāng)我們新增一個(gè)消費(fèi)端的時(shí)候,我們會(huì)在ECU2上面快速OTA這個(gè)鍵單獨(dú)可編譯這個(gè)鍵并且完成可開(kāi)發(fā),整體是即插即用的。同樣在第二個(gè)場(chǎng)景下面,當(dāng)想把AA功能新的功能移植到ECU3的時(shí)候,實(shí)際上可以看到在開(kāi)發(fā)和編譯階段沒(méi)有work,在部署階段可以通過(guò)動(dòng)態(tài)配置文件做到軟件模塊的移植,體現(xiàn)了熱插拔的狀態(tài),也就是插上即可以用。
總結(jié)一下整體的好處或者應(yīng)用在汽車(chē)?yán)锩鍿OA會(huì)發(fā)生什么。左手是我們認(rèn)為正在進(jìn)行的,也是聯(lián)合電子正在嘗試的,無(wú)論是開(kāi)發(fā)階段,開(kāi)發(fā)過(guò)程,開(kāi)發(fā)流程,還是軟件的更新迭代周期。在開(kāi)發(fā)流程上面,我們發(fā)現(xiàn)未來(lái)的工具令會(huì)趨于同質(zhì),廠(chǎng)商定制化程度會(huì)更加低,這是比較明確的感受。開(kāi)發(fā)環(huán)境會(huì)更加開(kāi)放,趨于IT企業(yè)的開(kāi)發(fā)模式。在軟件迭代和更新周期方面,剛才大家也看到了更新軟件成本會(huì)降低,無(wú)論是開(kāi)發(fā)階段,還是批產(chǎn)之后,具體體現(xiàn)在不需要改動(dòng)信號(hào)矩陣和相關(guān)軟件,在批產(chǎn)后支持軟件快速獨(dú)立更新,新功能是即插即用,就像我們手機(jī)下載一個(gè)APP直接是可以運(yùn)行的。
右手邊我們叫賦能軟件定義汽車(chē),SOA分層架構(gòu)賦能以場(chǎng)景為導(dǎo)向的模塊化進(jìn)行開(kāi)發(fā),在整車(chē)級(jí)實(shí)現(xiàn)軟件復(fù)用。原子服務(wù)可以開(kāi)放汽車(chē)各領(lǐng)域的系統(tǒng)能力,我們認(rèn)為SOA這件事情在Potential這里是有真正價(jià)值和意義的。
剛才我們說(shuō)到了SOA好處,接下來(lái)看一下流程方法和工具。SOA是面向用戶(hù)驅(qū)動(dòng)型的場(chǎng)景,怎么樣經(jīng)過(guò)服務(wù)架構(gòu)的設(shè)計(jì),軟件架構(gòu)的設(shè)計(jì),最后部署于各個(gè)預(yù)控制器甚至傳感執(zhí)行層的控制器,再進(jìn)入到傳統(tǒng)軟件開(kāi)發(fā)的過(guò)程。整體介紹還是會(huì)從場(chǎng)景開(kāi)始到最后軟件部署的階段。
每一個(gè)小箭頭代表著中間的過(guò)程,中間的過(guò)程分了三步(工作流程,過(guò)程中使用的工具,產(chǎn)出)。首先第一步是從場(chǎng)景到業(yè)務(wù)過(guò)程的狀態(tài),其實(shí)我們要將一件事情講清楚,其實(shí)最重要的點(diǎn)是對(duì)汽車(chē)系統(tǒng)能力的認(rèn)識(shí)。我舉一個(gè)語(yǔ)音雨刮的例子,我們要知道這個(gè)雨刮是怎么運(yùn)動(dòng)的,語(yǔ)音輸入在哪里,這個(gè)系統(tǒng)能力是非常重要的。聯(lián)合電子在這塊非常有經(jīng)驗(yàn),尤其在動(dòng)力和車(chē)身領(lǐng)域有豐富的業(yè)務(wù)場(chǎng)景的知識(shí)和經(jīng)驗(yàn),做過(guò)非常多的批產(chǎn)項(xiàng)目。
第二塊是從業(yè)務(wù)過(guò)程到服務(wù)架構(gòu)的設(shè)計(jì),這也是現(xiàn)在各個(gè)OEM的焦點(diǎn),服務(wù)究竟是怎么劃分的?服務(wù)劃分的結(jié)果如何評(píng)價(jià)它的好壞?它的價(jià)值是如何體現(xiàn)的?這個(gè)后面會(huì)有一個(gè)展開(kāi)的介紹。我們認(rèn)為在能力點(diǎn)這個(gè)角度來(lái)講,它同樣需要一個(gè)系統(tǒng)能力,也就是對(duì)這個(gè)業(yè)務(wù)背景的認(rèn)知,以及對(duì)SOA這件事情的了解程度。
再往下從服務(wù)到服務(wù)組件,我們都知道面向服務(wù)是一種開(kāi)發(fā)概念,它開(kāi)發(fā)出來(lái)的這些接口和服務(wù)都是我們自己面向業(yè)務(wù)過(guò)程的想法,這些想法怎么落地呢?怎么變成真正可以在控制器里面運(yùn)行的軟件單元,我們認(rèn)為是在這一步去做執(zhí)行,從Service到Service Component。我們要去定義SWC的范圍, SWC與服務(wù)接口的綁定關(guān)系,以及SWC和可執(zhí)行單元的綁定關(guān)系等。
最后一步?jīng)]有展開(kāi)講,因?yàn)槲覀兌贾浪膭澐诌^(guò)程是從整車(chē)開(kāi)始的,從整車(chē)業(yè)務(wù)場(chǎng)景開(kāi)始的,最后一步講的是服務(wù)的部署。在整車(chē)級(jí)服務(wù)的復(fù)用架構(gòu)和軟件架構(gòu)完成設(shè)計(jì)之后,我們會(huì)將服務(wù)放在域控制器里面。這個(gè)步驟, OEM是具有主導(dǎo)權(quán)的. 在最后服務(wù)部署方面的內(nèi)容,我們認(rèn)為EEA的成分非常高,所以就不在這里做具體的展開(kāi)了。
第三點(diǎn)是稍微分享一下面向服務(wù)的軟件開(kāi)發(fā)環(huán)境。在剛才開(kāi)發(fā)方法結(jié)束之后,其實(shí)我們已經(jīng)得到了各個(gè)預(yù)控制器或者子系統(tǒng)上面服務(wù)開(kāi)發(fā)的內(nèi)容,這些內(nèi)容需要在真實(shí)的各個(gè)子系統(tǒng)上面去做相應(yīng)落地的過(guò)程。它和傳統(tǒng)的軟件開(kāi)發(fā)過(guò)程,我們說(shuō)的CP上面SW-C開(kāi)發(fā)上面沒(méi)有本質(zhì)的區(qū)別,但是會(huì)有一些小點(diǎn)上面的不同,比如說(shuō)怎么樣用大家熟知的MATLAB算法開(kāi)發(fā)單元,甚至于手寫(xiě),這些功能組件如何具體的落地到,做成類(lèi)似于手機(jī)上面可以運(yùn)行的APP,這塊內(nèi)容可能是傳統(tǒng)軟件目前還沒(méi)有面對(duì)到的問(wèn)題。在這塊聯(lián)合電子還是提供了一整套的軟件實(shí)現(xiàn)的工具,幫助從架構(gòu)階段,產(chǎn)生文件之后的內(nèi)容到最后軟件實(shí)現(xiàn)測(cè)試并且部署在域控制上面,稍微值得一提的是中間這個(gè)部分,聯(lián)合電子面對(duì)服務(wù)化的軟件還是沒(méi)有用傳統(tǒng)的項(xiàng)目管理方式去做管理,是搬了安卓的思想和概念,在這樣一個(gè)思考下面,我們將每個(gè)服務(wù)單元都做成了一個(gè)倉(cāng)庫(kù),每個(gè)服務(wù)單元都是自身的一個(gè)倉(cāng)庫(kù),這也是和傳統(tǒng)軟件比較大的不同點(diǎn)。
最后介紹一下目前正在搭建的軟件開(kāi)放平臺(tái),這個(gè)搭建過(guò)程。
我們內(nèi)部將這個(gè)軟件平臺(tái)叫做聯(lián)合電子軟件平臺(tái),專(zhuān)注于為汽車(chē)合作伙伴提供互聯(lián)軟件創(chuàng)新的開(kāi)發(fā)以及相關(guān)的軟件產(chǎn)品。它大概分成三段內(nèi)容:車(chē)端優(yōu)質(zhì)應(yīng)用,車(chē)輛功能中間件,面向服務(wù)開(kāi)發(fā)方法(環(huán)境)便于大家快速應(yīng)用落地的工具。
看一下軟件平臺(tái)從下至上的層級(jí),首先我們是應(yīng)用了AUTOSAR軟件,在這上面會(huì)提供AUTOSAR服務(wù),這里介紹了通信中間件.它相當(dāng)于是完成了CP到AP的協(xié)同,在未來(lái)預(yù)控制器架構(gòu)下面,這里舉了區(qū)域性控制器架構(gòu),在這上面部署CP操作系統(tǒng)在計(jì)算單元上面部署CP和AP系統(tǒng),總體來(lái)講將AP中間件組件布置在MPU上面,這樣區(qū)域性環(huán)境上面都可以有相應(yīng)的簡(jiǎn)單的靜態(tài)式的服務(wù)和我們的AP進(jìn)行相應(yīng)的打通,和我們的AP進(jìn)行相應(yīng)的服務(wù)呼應(yīng)和打通,方便基于不同的電子電氣架構(gòu)去做不同的部署。
在這個(gè)基礎(chǔ)件之上,我們可以提供原子服務(wù)。傳統(tǒng)我們提供ECU,TCU和BMS等部件,未來(lái)我們不光提供控制器,還提供核心技術(shù),舉個(gè)例子比如說(shuō)電池變速箱控制,雨刮的控制邏輯,包括車(chē)輛動(dòng)力系統(tǒng)縱向橫向模型等等,這些傳統(tǒng)的功能都會(huì)通過(guò)使用AUTOSAR中間件向外開(kāi)放相應(yīng)的系統(tǒng)能力,將它做成標(biāo)準(zhǔn)的服務(wù)接口,向不同的合作伙伴甚至于第三方合作伙伴開(kāi)放。
第二塊我們同樣會(huì)提供優(yōu)質(zhì)的應(yīng)用,像開(kāi)發(fā)方法論上面看到的,我們?cè)谲?chē)控,也就是在車(chē)輛動(dòng)力和車(chē)身領(lǐng)域兩塊優(yōu)質(zhì)的應(yīng)用場(chǎng)景和優(yōu)質(zhì)的面向服務(wù),提升用戶(hù)體驗(yàn)的場(chǎng)景,我們會(huì)有相應(yīng)的考量,并且以SOA服務(wù)的方式展現(xiàn)。這里有一個(gè)語(yǔ)音雨刮的功能,我們通過(guò)語(yǔ)音雨刮場(chǎng)景的分解得到雨刮模式仲裁和決策,由此基于面向服務(wù)調(diào)用下方的原子服務(wù)的接口。
右手邊也是聯(lián)合電子正在和各個(gè)OEM合作的功能模塊,像預(yù)測(cè)性的動(dòng)力域的行駛里程解決駕駛員里程焦慮的問(wèn)題,還有整車(chē)能量分配(能量管理),這些都涉及到方方面面的元素,包括地圖,預(yù)測(cè)的信息,車(chē)輛動(dòng)力系統(tǒng)執(zhí)行單元,算法策略等等,我們也會(huì)通過(guò)預(yù)控制器軟件平臺(tái)架構(gòu)以服務(wù)形式展開(kāi),并且與OEM一起部署在相應(yīng)的服務(wù)提供方,也就是域控制器上面。
最后我們想說(shuō)整個(gè)應(yīng)用場(chǎng)景,從上至下隨著軟件定義汽車(chē)序幕拉開(kāi),隨著我們不斷迭代場(chǎng)景的延伸以及擴(kuò)展,我們希望建立在車(chē)控領(lǐng)域的小生態(tài),這個(gè)小生態(tài)可以幫助第三方伙伴以及OEM等合作伙伴, 通過(guò)提供厚厚的車(chē)輛功能的中間件。這個(gè)中間件可以以快速靈活敏捷的架構(gòu)和方式去滿(mǎn)足企業(yè)對(duì)不同場(chǎng)景迭代的需求,快速的去響應(yīng)這樣的需求。