SWC軟件部署前言
整個(gè)軟件的模塊的部署需要對(duì)需求、軟件架構(gòu)、硬件、中間件平臺(tái)Autosar,AP/CP都有較為深入的了解。其中流程分為三個(gè)主要的階段:
首先,系統(tǒng)架構(gòu)設(shè)計(jì)階段:
專業(yè)針對(duì)最終實(shí)現(xiàn)的功能分配模塊,總體討論ECU融合方案、分配原則,形成初版針對(duì)控制器的需求。
其次,系統(tǒng)需求及軟件架構(gòu)設(shè)計(jì)階段:
通過(guò)討論功能需求涉及的產(chǎn)品能力PC、測(cè)試用例Usecase,生成對(duì)應(yīng)的軟件模塊Module和軟件元素SWC。
隨后,軟件架構(gòu)設(shè)計(jì)階段:
進(jìn)行分配原則、非功能性需求討論、SWC分配方案編寫、專業(yè)討論并更新控制器需求,搭建PreEvision/EA模型。
如上,最終基于軟件架構(gòu),Module核SWC要分配到各個(gè)控制器中,區(qū)域控制器VIU中分配到MCU或MPU,MPU中分配到A核、R核,都需要詳細(xì)的定義。
SWC的軟件部署實(shí)例分析
本文以高級(jí)自動(dòng)駕駛輔助功能NOA為例,詳細(xì)講解實(shí)現(xiàn)該功能需要如何定位并細(xì)化軟件部署過(guò)程。
如前所述,所有的部署從本質(zhì)上就是識(shí)別到所能承載軟件組件運(yùn)行能力的核資源,并進(jìn)行軟件集中嵌入該硬核資源的過(guò)程。主要包括如下幾個(gè)關(guān)鍵步驟:
1)識(shí)別部署需求
這個(gè)階段設(shè)計(jì)對(duì)部署對(duì)象,即需要部署的是哪個(gè)功能對(duì)應(yīng)的SWC,該部署過(guò)程需要消耗多少部署資源,比如多少核計(jì)算能力;相關(guān)模塊的快速識(shí)別,比如如何快速識(shí)別出可用于部署的核資源;同時(shí)利用設(shè)備抽象的概念分理處頂層軟件抽象處理模塊FDD、底層設(shè)備抽象處理模塊EDD的顆粒度及部署方案。其中軟件模塊部署需求中,需要重點(diǎn)界定出AP端、CP端各自的特性,比如CP端非快速啟動(dòng)、快速啟動(dòng)、低功耗等相關(guān)特性。
2)搭建物理架構(gòu)視角的功能鏈路
功能ID功能名稱子功能非功能性需求
XxxHWP高速跟車、巡航、自動(dòng)減速、車道保持、自動(dòng)上下匝道、高速路口減速停車執(zhí)行器響應(yīng)能力
傳感器識(shí)別距離
端對(duì)端響應(yīng)時(shí)間
傳感器時(shí)間同步
功能安全等級(jí)
XxxTJP擁堵跟車、巡航、跟停、起步、自動(dòng)減速、車道保持
XxxALC/ALCA撥桿換道、自動(dòng)換道、推薦換道
XxxSafeStop換道安全停車、本車道安全停車
XxxAES自動(dòng)轉(zhuǎn)向避讓、自動(dòng)換道避讓
主要是根據(jù)功能項(xiàng)梳理物理架構(gòu)視角功能連路圖,同時(shí)提取非功能性需求。
整個(gè)物理架構(gòu)視角開(kāi)發(fā)的功能邏輯鏈路實(shí)際是類似于時(shí)序圖中的對(duì)應(yīng)部分,是考慮將整個(gè)功能在工作過(guò)程中的數(shù)據(jù)流進(jìn)行梳理。
如上圖表示了對(duì)NOP功能的開(kāi)啟與激活中的自動(dòng)轉(zhuǎn)向避障控制邏輯PC時(shí)序圖,各應(yīng)用模塊的產(chǎn)品能力主要涉及對(duì)整個(gè)NOP系統(tǒng)自動(dòng)轉(zhuǎn)向控制的能力和交互過(guò)程,在我們進(jìn)行軟件組件SWC部署中,首先需要繪制類似上圖中的功能交互圖,從圖中提取我們需要實(shí)現(xiàn)的子模塊PC,并為每個(gè)PC設(shè)計(jì)對(duì)應(yīng)的SWC即可獲得我們需要的總體SWC。
3)梳理SWC軟件模塊
根據(jù)功能需求劃分出來(lái)的SWC包含如下模塊,各SWC分別位于SOA軟件架構(gòu)的不同分層中,對(duì)于軟件SWC到硬件核的部署過(guò)程來(lái)說(shuō),需要根據(jù)其不同的功能子項(xiàng)合理的分配到對(duì)應(yīng)的控制器中。
4)SWC部署到整車控制器
SWC的整個(gè)部署過(guò)程應(yīng)盡量遵循如下原則:
(01)高等級(jí)的SWC盡可能地部署到對(duì)應(yīng)的計(jì)算平臺(tái)中;
(02)與傳感器、執(zhí)行器緊密耦合的SWC部署到S&A中;
(03)與彼此緊密耦合地SWC部署到一起;
(04)休眠后需要工作的SWC考慮功耗問(wèn)題部署到CP端;
(05)功能安全相關(guān)的SWC按照ASIL等級(jí)拆解后歸類部署;
(06)信息安全相關(guān)的SWC根據(jù)具體安全級(jí)別需求歸類部署;
(07)與快速啟動(dòng)相關(guān)的SWC部署到CP實(shí)時(shí)核資源中;
(08)與強(qiáng)實(shí)時(shí)性要求相關(guān)的SWC部署到CP實(shí)時(shí)核資源中;
(09)功能鏈路交互避免過(guò)于復(fù)雜,接口過(guò)多;
(10)功能特性相同的SWC盡可能部署到同一個(gè)資源上;
(11)功能鏈路時(shí)間長(zhǎng)度要滿足用戶體驗(yàn);
(12)高等級(jí)的SWC盡可能部署到AP端;
(13)資源預(yù)留度盡可能多。
從整車功能層分配到控制器的角度可以對(duì)如上的SWC軟件模塊進(jìn)行總體的功能分配。以自動(dòng)駕駛系統(tǒng)高性能計(jì)算平臺(tái)為軸心,外圍存在其軟件模塊相關(guān)的各個(gè)區(qū)域控制單元。我們以SOA架構(gòu)中各個(gè)軟件子模塊為部署的原子模塊,為了實(shí)現(xiàn)各個(gè)模塊信息間的通信和控制,我們可以實(shí)現(xiàn)如下的軟件模塊部署。
轉(zhuǎn)向、制動(dòng)、驅(qū)動(dòng)、懸架等底盤控制單元,由于其功能安全較高,實(shí)時(shí)性要求較強(qiáng),且往往與執(zhí)行器緊密耦合,這類控制SWC可以考慮部署在高性能整車控制單元VDC中。其余如原BCM功能的車身控制及相關(guān)的傳感執(zhí)行器、模式控制單元SWC可部署在低功能安全等級(jí)PDC中。其余,如電源控制SWC由專門的電源控制單元PMIC進(jìn)行硬件搭載。
5)SWC部署到HPC內(nèi)核資源
進(jìn)一步的,我們以高性能計(jì)算平臺(tái),針對(duì)性的對(duì)HPC中的云端單元,從SWC角度分配其功能到內(nèi)核層面??紤]到不同ADAS功能子模塊在SWC中需要遵循的原則,整個(gè)部署過(guò)程應(yīng)盡量確保從架構(gòu)實(shí)現(xiàn)、可靠性、高效率、功能安全、信息安全等方面進(jìn)行全方位考量。
這里我們需要重點(diǎn)說(shuō)明下關(guān)于通用ARM芯片常提到的R核與A核在部署過(guò)程中的關(guān)系原則。R核是指實(shí)時(shí)性能高只支持物理地址,并支持內(nèi)存管理,用于實(shí)時(shí)性領(lǐng)域。比如,我們?cè)谲浖渴疬^(guò)程中,通常將與制動(dòng)、轉(zhuǎn)向等功能安全等級(jí)高、實(shí)時(shí)性也高的軟件SWC模塊布置在R核中。同時(shí),針對(duì)部分實(shí)時(shí)性操作系統(tǒng)RTOS也布置于R核上進(jìn)行運(yùn)行。
A核算力高支持虛擬地址和內(nèi)存管理,用于應(yīng)用領(lǐng)域,實(shí)時(shí)性比R核差些,考慮ADAS功能應(yīng)用層規(guī)控軟件功能安全級(jí)別有所區(qū)別,主要涉及系統(tǒng)管理、應(yīng)用接口、環(huán)境、軌跡預(yù)測(cè)、規(guī)劃決策、執(zhí)行控制/顯示等相應(yīng)的模塊。因此,可以將與ADAS應(yīng)用層相關(guān)的軟件功能部分布置在A核上。
如下表示了典型的基礎(chǔ)軟件的部署方案涉及對(duì)如下幾個(gè)重點(diǎn)模塊的布局,這里我們以TDA4中主要的核資源核軟件Module為主要考慮點(diǎn)。
其中Framework負(fù)責(zé)為ServiceAPP和Module提供運(yùn)行環(huán)境,并負(fù)責(zé)實(shí)體間通信,讓ServiceAPP和Module專注于功能邏輯,以及監(jiān)視運(yùn)行環(huán)境的狀態(tài)。因此,我們將服務(wù)管理、節(jié)點(diǎn)管理、錯(cuò)誤管理、模式管理幾個(gè)“上層服務(wù)”應(yīng)用布置在該應(yīng)用軟件模塊中。ServiceManager主要用于大通服務(wù)提供端和服務(wù)客戶端的連接通道,同時(shí)提供服務(wù)監(jiān)控;NodeManager主要用于進(jìn)行進(jìn)程和節(jié)點(diǎn)的生命周期管理、節(jié)點(diǎn)間的Com通道以及節(jié)點(diǎn)監(jiān)控;ErrorManagement主要用于進(jìn)行ADS系統(tǒng)及子系統(tǒng)的錯(cuò)誤管理并發(fā)送錯(cuò)誤報(bào)告;ModeManagement主要用于子系統(tǒng)的錯(cuò)誤處理、降級(jí)管理等。
同時(shí),如上這類框架性服務(wù)連同通信管理、執(zhí)行管理、平臺(tái)健康管理、狀態(tài)管理幾項(xiàng)都主要布局在TDA4服務(wù)級(jí)的A核中。
EAL相關(guān)的軟件模塊主要負(fù)責(zé)封裝底層環(huán)境,包括底層硬件和OS、整車環(huán)境及云端等,提供相應(yīng)的傳感器底層I/O服務(wù)、總線通信服務(wù),實(shí)現(xiàn)軟硬件分離。因此,通常講設(shè)備抽象模塊EDD模塊部署在EAL之上。
Core表示一種核心模塊,主要是提供頂層應(yīng)用框架與底層EAL的通用服務(wù),并為ADS系統(tǒng)提供通用功能,同時(shí)為這些通用服務(wù)定義真正的外部環(huán)境和部署結(jié)構(gòu)。
Module表示支持自動(dòng)駕駛開(kāi)發(fā)的基礎(chǔ)模塊,包含通常的感知、融合、規(guī)劃、決策等幾個(gè)模塊。
這類軟件模塊處理任務(wù)包含:
資源管理:系統(tǒng)、總線、傳感器、存儲(chǔ)、資源配置等管理;
HPC信息處理:DNN處理、CV處理、并行處理、算法嵌入等;
協(xié)調(diào)端系統(tǒng):傳感器信息、車身信息、駕駛信息等;
ADS功能服務(wù):數(shù)據(jù)記錄、診斷等
從如上功能單元不難看出絕大部分Core資源所涉及的軟件模塊具備較高的功能安全等級(jí)和強(qiáng)實(shí)時(shí)性要求。同時(shí)從運(yùn)算角度將,可以將其中的軟件部署拆分成兩個(gè)部分,其一是針對(duì)圖像處理、深度學(xué)習(xí)模塊的感知單元,這部分往往在功能安全上要求從ASILB起步,而后端規(guī)劃控制和決策執(zhí)行,則是更加傾向于更高級(jí)別功能安全等級(jí)。多數(shù)規(guī)控模塊要求達(dá)到ASILD級(jí)別功能安全,且由于涉及與執(zhí)行器之間的交互,很多情況下本身系統(tǒng)上層的交互信號(hào)安全等級(jí)也較高,可達(dá)到ASILD級(jí)別,同時(shí)考慮自動(dòng)駕駛本身安全性需求,需要執(zhí)行控制過(guò)程往往具備強(qiáng)實(shí)時(shí)性。因此,感知、融合這類前端計(jì)算量大,安全等級(jí)一般的SWC可部署于A核中間,而后端規(guī)控、執(zhí)行安全等級(jí)、實(shí)時(shí)性都較高,可以考慮布置在R核中。為了減少對(duì)于后端MCU的計(jì)算壓力,可以將軌跡規(guī)劃和決策放在前端SOC的R核中,而執(zhí)行控制、反饋調(diào)節(jié)等MPC過(guò)程可以考慮放在外圍MCU中。
如下圖表示了功能軟件主要部署的幾個(gè)大模塊,以TDA4作為SOC表示的對(duì)系統(tǒng)功能需求相應(yīng)的A核和R核部署方法。
審核編輯 :李倩
-
模塊
+關(guān)注
關(guān)注
7文章
2788瀏覽量
50380 -
SOA
+關(guān)注
關(guān)注
1文章
301瀏覽量
28211 -
軟件組件
+關(guān)注
關(guān)注
0文章
4瀏覽量
8141
原文標(biāo)題:SOA中的軟件模塊在硬件中的最優(yōu)化部署方法論(二):SOA的軟件組件部署實(shí)例分析
文章出處:【微信號(hào):阿寶1990,微信公眾號(hào):阿寶1990】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
基于SOA的系統(tǒng)軟件測(cè)試平臺(tái)需求分析
OptiSystem應(yīng)用:寬帶SOA特性
如何對(duì)SOA進(jìn)行軟硬件部署
對(duì)于SOA的簡(jiǎn)單介紹分析
SOA是什么_SOA主要的開(kāi)發(fā)方法和工具分析

soa和微服務(wù)的區(qū)別

如何使用SOA進(jìn)行汽車軟件本體的研究

模板軟件架構(gòu)SOA詳解

SOA是軟件定義汽車最關(guān)鍵的環(huán)節(jié)
SOA面向服務(wù)架構(gòu)介紹
一文詳解汽車SOA主要功能模塊及開(kāi)發(fā)流程
自動(dòng)駕駛領(lǐng)域的SOA軟件架構(gòu)設(shè)計(jì)應(yīng)用分析

使用Jenkins和單個(gè)模板部署多個(gè)Kubernetes組件

評(píng)論