伴隨著電動(dòng)化、智能化、網(wǎng)聯(lián)化等技術(shù)發(fā)展的時(shí)代背景,各行各業(yè)電子電氣架構(gòu)都在發(fā)生深度變革。新型架構(gòu)逐漸取代傳統(tǒng)架構(gòu),比如汽車、工程機(jī)械、儲(chǔ)能、船舶等領(lǐng)域,電子電氣架構(gòu)從傳統(tǒng)分布式向域集中式,甚至向著中央集中式發(fā)展,控制器功能呈現(xiàn)集中化、復(fù)雜化的特點(diǎn)。為了提升開(kāi)發(fā)效率、提高軟件的穩(wěn)定性以及便于平臺(tái)移植,基于 AutoSar 架構(gòu)開(kāi)發(fā)復(fù)雜軟件已成為行業(yè)共識(shí)。
另外,行業(yè)內(nèi)競(jìng)爭(zhēng)愈發(fā)激烈,開(kāi)發(fā)周期大大壓縮,加之軟件復(fù)雜度的提升,在快速迭代的情況下確保軟件質(zhì)量是一個(gè)重要課題。加之 ASPICE、ISO26262 等過(guò)程體系和法規(guī)標(biāo)準(zhǔn)的要求,如何開(kāi)發(fā)符合 AutoSar 架構(gòu)的應(yīng)用軟件、評(píng)估軟件質(zhì)量和性能、優(yōu)化軟件結(jié)構(gòu)、驗(yàn)證壓力場(chǎng)景下的 ECU 穩(wěn)定性成為各廠商面臨的新挑戰(zhàn)。
本文重點(diǎn)介紹符合 AutoSar 架構(gòu)的應(yīng)用軟件開(kāi)發(fā)、MBD 開(kāi)發(fā)模式下的軟件質(zhì)量評(píng)估與優(yōu)化方案、復(fù)雜場(chǎng)景下的 ECU 性能壓力測(cè)試方案。
符合 AutoSar 架構(gòu)的應(yīng)用軟件開(kāi)發(fā)介紹
對(duì)于 AutoSar 軟件架構(gòu),分為經(jīng)典平臺(tái) AutoSar CP 和自適應(yīng)平臺(tái) AutoSar AP,二者應(yīng)用場(chǎng)景存在一定差別:AutoSar CP 具有高安全、高實(shí)時(shí)性,其通常部署在微控制器 MCU 類型芯片或多核異構(gòu)芯片 M 核;AutoSar AP 具有動(dòng)態(tài)性和可擴(kuò)展性,適用于大數(shù)據(jù)并行處理和高性能計(jì)算等應(yīng)用場(chǎng)景,通常部署在 MPU 或多核異構(gòu)芯片 A 核。目前從行業(yè)內(nèi)來(lái)看,無(wú)論是域控制器還是中央 + 區(qū)域控制器,通常都是多核的,甚至是多核異構(gòu)的,不同核根據(jù)實(shí)際使用需求部署 AutoSar CP 或 AP,基礎(chǔ)軟件通常采用標(biāo)準(zhǔn)的 BSW 協(xié)議棧。下圖所示是 AutoSar 軟件架構(gòu)示例:
AutoSar 軟件架構(gòu)
那對(duì)于應(yīng)用層軟件來(lái)說(shuō),如果要開(kāi)發(fā)符合 AutoSar 架構(gòu)的軟件,需要考慮以下兩個(gè)重要問(wèn)題:
· 采用何種開(kāi)發(fā)工具鏈
· 采用何種開(kāi)發(fā)模式
對(duì)于應(yīng)用軟件開(kāi)發(fā)工具鏈,通常涉及 SWC 軟件架構(gòu)設(shè)計(jì)工具和軟件編程實(shí)現(xiàn)工具。SWC 軟件架構(gòu)設(shè)計(jì)工具主要對(duì)應(yīng)用層軟件架構(gòu)進(jìn)行實(shí)現(xiàn),定義 SWC、配置 SWC 的交互接口、配置 Runnable、導(dǎo)出 ARXML 文件等,一般不同品牌的協(xié)議棧都有對(duì)應(yīng)的 SWC 軟件架構(gòu)設(shè)計(jì)工具,經(jīng)緯恒潤(rùn)自研 AutoSar 協(xié)議棧提供工具鏈方案為 EAS-SWCDesigner。
EAS-SWCDesigner 界面
而軟件編程實(shí)現(xiàn)可基于圖形化編程自動(dòng)生成代碼或手寫(xiě)代碼的方式,AutoSar CP 和 AP 架構(gòu)應(yīng)用層軟件開(kāi)發(fā)實(shí)現(xiàn)方法略有差別,CP 架構(gòu)應(yīng)用層更多采用基于模型設(shè)計(jì)方法開(kāi)發(fā),工具鏈通常采用 Matlab/Simulink,其對(duì) CP 架構(gòu)應(yīng)用層開(kāi)發(fā)的支持比較完善且成熟,但是由于其對(duì) AP 架構(gòu)應(yīng)用軟件開(kāi)發(fā)支持還存在不完善的點(diǎn),故 AP 架構(gòu)應(yīng)用層軟件開(kāi)發(fā)目前更多還是基于手寫(xiě) C++ 代碼的方式,工具鏈基于一些代碼編輯工具比如 Vscode。
對(duì)于應(yīng)用軟件開(kāi)發(fā)模式,分為自上而下開(kāi)發(fā)、自下而上開(kāi)發(fā)和雙向開(kāi)發(fā)模式。自上而下開(kāi)發(fā)比較適用于正向開(kāi)發(fā)流程,在有 EE 架構(gòu)輸入的情況下采用該模式,這種模式的好處是可以繼承 EE 架構(gòu)的工作產(chǎn)品,但是缺點(diǎn)是工作鏈路會(huì)比較長(zhǎng),應(yīng)用層和底層軟件開(kāi)發(fā)都需要依耐 SWC 架構(gòu)設(shè)計(jì)導(dǎo)出的 ARXML 文件作為輸入,影響開(kāi)發(fā)迭代效率;自下而上開(kāi)發(fā)是直接在軟件編程工具實(shí)現(xiàn)軟件,然后配置 AutoSar 接口,再導(dǎo)出 ARXML,然后對(duì) ARXML 文件進(jìn)行合并,這種方式比較適用于沒(méi)有 EE 架構(gòu)輸入的情況,應(yīng)用軟件開(kāi)發(fā)工程師獨(dú)立配置 AutoSar 接口,這種模式的好處是不依耐 AutoSar 工具鏈,比較靈活,但是缺點(diǎn)是對(duì)每個(gè)應(yīng)用軟件開(kāi)發(fā)人員 AutoSar 知識(shí)要求高些;雙向開(kāi)發(fā)模式就是結(jié)合自上而下和自下而上開(kāi)發(fā)模式的優(yōu)點(diǎn),針對(duì)第一版軟件采用自上而下開(kāi)發(fā)模式,后續(xù)版本軟件更新迭代采用自下而上開(kāi)發(fā)模式。
應(yīng)用軟件開(kāi)發(fā)模式
MBD 開(kāi)發(fā)模式下的軟件質(zhì)量評(píng)估與優(yōu)化方案
MBD 全稱是 Model Based Design(基于模型設(shè)計(jì)),是一種以可視化模型開(kāi)發(fā)為主的開(kāi)發(fā)方式,區(qū)別于傳統(tǒng)的以文本編碼為媒介的代碼開(kāi)發(fā)。采用模型化的方式來(lái)描述控制算法設(shè)計(jì),無(wú)論是可讀性、可維護(hù)性、可移植性、測(cè)試驗(yàn)證的便利性等方面,相比于從前手工 C 代碼都有長(zhǎng)足的進(jìn)步。基于以上基于模型開(kāi)發(fā)的特點(diǎn)基于 Simulink 的模型化 + 自動(dòng)代碼生成的開(kāi)發(fā)方式在汽車電子行業(yè)正在逐漸演變成開(kāi)發(fā)的標(biāo)準(zhǔn)配置。接踵而來(lái)如何保證 MBD 開(kāi)發(fā)方式下軟件質(zhì)量問(wèn)題也成為現(xiàn)階段人們熱議的話題。
針對(duì)軟件質(zhì)量直接有效的手段便是開(kāi)展完備的測(cè)試或在軟件開(kāi)發(fā)過(guò)程中優(yōu)化軟件結(jié)構(gòu)減少問(wèn)題的引入。
如何開(kāi)展完備的模型測(cè)試?
模型驗(yàn)證方法可以分為靜態(tài)驗(yàn)證和動(dòng)態(tài)驗(yàn)證,模型靜態(tài)驗(yàn)證,是一種通過(guò) MAAB 和 dSPACE 等建模公司提供的建模規(guī)則指南來(lái)驗(yàn)證模型設(shè)計(jì)是否符合規(guī)則的測(cè)試方法。此外,還有一種模型度量元指標(biāo)檢查方法,可以分析模型的復(fù)雜程度,以此評(píng)判模型在可維護(hù)性、可移植性、可重用性等不同維度的質(zhì)量特性。綜上所述,在模型靜態(tài)驗(yàn)證部分,可以看出有兩種方法:建模規(guī)范規(guī)則檢查和模型度量元指標(biāo)檢查。與模型靜態(tài)驗(yàn)證不同,模型動(dòng)態(tài)驗(yàn)證可以通過(guò)比較在執(zhí)行實(shí)際模型時(shí)的輸出值來(lái)進(jìn)行驗(yàn)證。通過(guò)根據(jù)用戶輸入預(yù)期結(jié)果值對(duì)比實(shí)際模型結(jié)果值來(lái)動(dòng)態(tài)驗(yàn)證模型。通過(guò)檢查模型的覆蓋率,可以提高測(cè)試用例針對(duì)需求的覆蓋率以及測(cè)試用例的充分性。此外借助 ASPICE 過(guò)程管理的思維,在整個(gè)測(cè)試過(guò)程中加入過(guò)程管理思維,確保測(cè)試過(guò)程、測(cè)試環(huán)境、測(cè)試策略的可靠性以及測(cè)試用例的充分性、一致性、追溯性,以此確保模型質(zhì)量。
如何優(yōu)化軟件結(jié)構(gòu)?
現(xiàn)階段我們模型生成的代碼是否會(huì)存在以下問(wèn)題:
· 生成代碼一個(gè)函數(shù)可能會(huì)上萬(wàn)行代碼
· 看不懂 matlab 生成代碼后的變量的定義及過(guò)程轉(zhuǎn)化
· 要不要針對(duì)模型生成的代碼做修改
優(yōu)化軟件的前提是已經(jīng)開(kāi)展靜態(tài)測(cè)試優(yōu)化完畢模型結(jié)構(gòu)。確保模型結(jié)構(gòu)的規(guī)范性。針對(duì)每一個(gè)軟件設(shè)計(jì)單元生成獨(dú)立函數(shù)、每一個(gè)軟件組件生成與之相對(duì)應(yīng)的 C 文件可以確保模型生成代碼的結(jié)構(gòu)清晰。同時(shí)不對(duì)模型生成的代碼做任何的修改是 MBD 開(kāi)發(fā)過(guò)程中的軟件維護(hù)準(zhǔn)則。
綜上讓我們一起來(lái)期待恒潤(rùn)針對(duì) MBD 開(kāi)發(fā)模式下的軟件質(zhì)量評(píng)估與優(yōu)化的解決方案。
復(fù)雜場(chǎng)景下的 ECU 性能壓力測(cè)試方案
隨著控制器數(shù)量的激增和模塊交互復(fù)雜度的提升,只針對(duì)軟件基礎(chǔ)功能驗(yàn)證的效果存在一定的缺陷,越來(lái)越多的項(xiàng)目實(shí)踐表明,軟件的偶發(fā)性故障需要從軟件性能指標(biāo)、壓力場(chǎng)景來(lái)進(jìn)行補(bǔ)充驗(yàn)證,以確保軟件產(chǎn)品的質(zhì)量。
性能測(cè)試針對(duì) ECU 電控軟件的內(nèi)存(堆棧、RAM/ROM/FLASH)、CPU 負(fù)載進(jìn)行最差工況的分析,保證資源占用的合理性;壓力測(cè)試構(gòu)建通信、IO 驅(qū)動(dòng)、診斷、網(wǎng)絡(luò)管理等模塊的異常注入、總線故障、高頻觸發(fā)等場(chǎng)景,保證軟件功能在壓力場(chǎng)景下不存在致命風(fēng)險(xiǎn)。
基于 AbsInt 的靜態(tài)性能分析
? 客戶收益
· 評(píng)估資源使用率,指導(dǎo)芯片選型和工程優(yōu)化
· 保證軟件的任務(wù)、中斷預(yù)留堆棧空間和分配周期合理性
· 保證芯片內(nèi)存占用率和 CPU 負(fù)載在閾值范圍內(nèi)
· 開(kāi)展符合功能安全和 ASPICE 流程要求的測(cè)試
? 測(cè)試內(nèi)容
· 內(nèi)存:自動(dòng)化分析最差工況的堆棧用量、RAM/ROM/Flash 占用率
· WCET:分析最差工況下的執(zhí)行時(shí)間,測(cè)試周期穩(wěn)定性和任務(wù)實(shí)時(shí)性
· 調(diào)度仿真:模擬任務(wù)調(diào)度,建模仿真 CPU 負(fù)載率和任務(wù)占比
? 方案特點(diǎn)
· 借助 AbsInt 工具,針對(duì)工程二進(jìn)制可執(zhí)行文件進(jìn)行自動(dòng)化分析,無(wú)需依賴源碼
· 支持 PPC、V850、Tricore、ARM 等多種架構(gòu)芯片的堆棧、時(shí)間分析
· 分析遍歷工況,結(jié)果涵蓋程序的各個(gè)入口
· 圖形化展示最差工況下的執(zhí)行路徑和占比用量,指導(dǎo)性能優(yōu)化
· 不依賴測(cè)試用例,執(zhí)行效率高,項(xiàng)目周期短
· AbsInt 工具滿足 ASIL D 等級(jí)功能安全標(biāo)準(zhǔn)
基于 AbsInt 的測(cè)試流程
函數(shù)調(diào)用關(guān)系及用量顯示
數(shù)據(jù)化表格用量展示
基于 RVS 的動(dòng)態(tài)性能測(cè)試
? 客戶收益
· 在 PIL、HIL、車載環(huán)境下進(jìn)行時(shí)序分析,確保軟件行為安全
· 可視化監(jiān)測(cè)任務(wù)調(diào)度和 CPU 負(fù)載,為系統(tǒng)升級(jí)提供優(yōu)化參考
· 保證多任務(wù)和多核運(yùn)行的合理性,規(guī)避優(yōu)先級(jí)反轉(zhuǎn)、死鎖等時(shí)序問(wèn)題
· 開(kāi)展符合功能安全和 ASPICE 流程要求的測(cè)試
? 測(cè)試內(nèi)容
· WCET:分析任務(wù) / 中斷的最差工況執(zhí)行時(shí)間,測(cè)試周期穩(wěn)定性和響應(yīng)實(shí)時(shí)性
· 任務(wù)調(diào)度:評(píng)估 WCRT,監(jiān)測(cè)任務(wù)時(shí)序特征,圖形化顯示多核、多任務(wù)調(diào)度關(guān)系
· 負(fù)載率:基于實(shí)際工況對(duì) CPU 負(fù)載率進(jìn)行實(shí)時(shí)統(tǒng)計(jì)和分析,評(píng)估極限負(fù)載下的 CPU 負(fù)載率占用情況
? 方案特點(diǎn)
· 借助 RVS 分析套件進(jìn)行實(shí)時(shí)數(shù)據(jù)采集和分析,還原實(shí)際環(huán)境下的執(zhí)行工況
· 支持全量數(shù)據(jù)采集和長(zhǎng)時(shí)間監(jiān)測(cè)運(yùn)行,追蹤定位軟硬件交互情況
· 自定義程度高,項(xiàng)目復(fù)用性強(qiáng),可針對(duì)任意函數(shù)、模塊或代碼段進(jìn)行時(shí)序分析
· 支持集成多種處理器 + 編譯器環(huán)境,實(shí)現(xiàn) PIL/HIL/ 車載環(huán)境下分析
· RVS 工具可以支持產(chǎn)品功能安全認(rèn)證等級(jí) ASIL D
基于 RVS 的測(cè)試流程
時(shí)序調(diào)度分析
基于自動(dòng)化測(cè)試框架的壓力測(cè)試
? 客戶收益
· 保證通信、診斷、操作系統(tǒng)、IO 驅(qū)動(dòng)、網(wǎng)絡(luò)管理等模塊在壓力場(chǎng)景下不存在致命風(fēng)險(xiǎn)
· 作為功能驗(yàn)證的補(bǔ)充,發(fā)現(xiàn)軟件質(zhì)量潛在問(wèn)題,確保軟件魯棒性、穩(wěn)定性
· 構(gòu)建標(biāo)準(zhǔn)化的壓力測(cè)試用例模板,有助于形成符合功能安全要求的測(cè)試流程
· 測(cè)試用例搭載自動(dòng)化測(cè)試框架進(jìn)行測(cè)試執(zhí)行、用例管理、問(wèn)題追溯
? 測(cè)試內(nèi)容
· 針對(duì) NVM、IO 驅(qū)動(dòng)、CAN、LIN、ETH、COM 等模塊進(jìn)行壓力場(chǎng)景構(gòu)建
· 分析系統(tǒng)不同組件間的時(shí)延特性,驗(yàn)證模塊運(yùn)行時(shí)間穩(wěn)定性
· 驗(yàn)證在異常注入、高頻觸發(fā)、總線故障等因素影響下的功能穩(wěn)定性
· 驗(yàn)證極限工況下的核心功能有效性及軟件后續(xù)響應(yīng)的合理性
? 方案特點(diǎn)
· 借助自動(dòng)化測(cè)試框架執(zhí)行測(cè)試用例,測(cè)試周期短、測(cè)試效率高、測(cè)試復(fù)用性強(qiáng)
· 支持軟硬件交互,可監(jiān)測(cè)底層函數(shù)、上層報(bào)文、外部信號(hào)等
· 支持在 PIL/HIL 環(huán)境下開(kāi)展測(cè)試,可同步注入多種激勵(lì)進(jìn)行測(cè)試驗(yàn)證
測(cè)試流程示意
測(cè)試框架示意