從道路到 PC:使用虛擬 ECU 加速智能軟件增長(zhǎng)
我們都看過(guò)很多汽車(chē)廣告,展示了一輛汽車(chē)猛烈撞擊障礙物,以及它的安全特性如何挽救車(chē)內(nèi)碰撞測(cè)試假人的生命。這些演示僅展示了汽車(chē)進(jìn)行的測(cè)試的一部分,尤其是在其開(kāi)發(fā)結(jié)束時(shí)。早在一輛全新的汽車(chē)撞上障礙物之前,就必須對(duì)機(jī)器的每一個(gè)部件進(jìn)行全面測(cè)試。隨著汽車(chē)技術(shù)的進(jìn)步和車(chē)輛架構(gòu)變得越來(lái)越復(fù)雜,這只會(huì)變得更具挑戰(zhàn)性。
汽車(chē)開(kāi)發(fā)商在過(guò)去 100 年中取得了顯著進(jìn)步。從機(jī)械改進(jìn)到電子進(jìn)步,再到最近的軟件創(chuàng)新,一切都推動(dòng)了從系統(tǒng)到芯片的顛覆。這也增加了能夠驗(yàn)證、測(cè)試和模擬真實(shí)駕駛艙行為的軟件平臺(tái)的重要性。隨著我們?cè)絹?lái)越接近自動(dòng)駕駛汽車(chē),軟件定義車(chē)輛的成功正以驚人的速度增長(zhǎng),其功能和特性從根本上由軟件實(shí)現(xiàn)。
這導(dǎo)致汽車(chē)原始設(shè)備制造商及其供應(yīng)商在試圖跟上已經(jīng)競(jìng)爭(zhēng)激烈的市場(chǎng)環(huán)境中的進(jìn)步時(shí)變得越來(lái)越復(fù)雜。對(duì)于芯片設(shè)計(jì)人員和驗(yàn)證團(tuán)隊(duì)來(lái)說(shuō),現(xiàn)代汽車(chē)幾乎每一個(gè)部件的組件都需要經(jīng)過(guò)嚴(yán)格的測(cè)試和驗(yàn)證,以確保安全性、可靠性和質(zhì)量,并確保軟件在每個(gè)組件上都能按預(yù)期正常運(yùn)行——復(fù)合挑戰(zhàn)。結(jié)果是工程師的測(cè)試時(shí)間延長(zhǎng),開(kāi)發(fā)人員在整個(gè)開(kāi)發(fā)周期中的反饋時(shí)間更長(zhǎng)。
電子控制單元:具有局限性的核心組件
電子控制單元 (ECU) 是半導(dǎo)體芯片上的嵌入式系統(tǒng),運(yùn)行軟件以實(shí)現(xiàn)各種功能。它們提供多種功能,從發(fā)動(dòng)機(jī)控制和剎車(chē)燈等必需品,到用于展開(kāi)安全氣囊和鎖門(mén)的安全和安保功能,再到讓您自定義汽車(chē)座椅角度和溫度的舒適功能。
傳統(tǒng)上,直到今天,汽車(chē)軟件開(kāi)發(fā)都遇到了幾個(gè)瓶頸。除了處理正在進(jìn)行的軟件改進(jìn)之外,使用基于硬件的開(kāi)發(fā)方法意味著在您擁有可用于測(cè)試的更新的 .hex 文件、傳輸以十六進(jìn)制格式保存且通常由微控制器單元使用的數(shù)據(jù)之前,幾個(gè)團(tuán)隊(duì)之間的軟件循環(huán)和如果您在循環(huán)中有其他供應(yīng)商,則需要更多天或數(shù)周。一旦更新的文件上傳到電子控制單元,就需要進(jìn)一步的工具來(lái)運(yùn)行、測(cè)量和校準(zhǔn)軟件。
可能有 100 多個(gè)這樣的單元控制您駕駛的汽車(chē),最常見(jiàn)于以下系統(tǒng):
· 動(dòng)力總成
· 穩(wěn)定性控制
· 車(chē)身控制
· 剎車(chē)
· 操舵
· 高級(jí)駕駛輔助系統(tǒng)(ADAS)
隨著汽車(chē)制造商不斷創(chuàng)新車(chē)輛設(shè)計(jì)和功能,必須開(kāi)發(fā)新的 ECU。隨著每一次新的開(kāi)發(fā),測(cè)試這些 ECU 及其功能變得越來(lái)越困難。昂貴設(shè)備的資源成本和緊迫的工程師工作量是制造商的主要障礙(更不用說(shuō)測(cè)試過(guò)程中發(fā)現(xiàn)的錯(cuò)誤導(dǎo)致硬件損壞的后果)。工程師受限于他們可以通過(guò)原型運(yùn)行測(cè)試來(lái)實(shí)現(xiàn)什么,并且硬件在環(huán)仿真 (HiL) 的結(jié)果是不確定的,從而導(dǎo)致多個(gè)測(cè)試產(chǎn)生不同的結(jié)果。缺乏確認(rèn)的測(cè)試結(jié)果會(huì)導(dǎo)致更多的測(cè)試、時(shí)間損失和更多的成本。考慮到車(chē)輛擁有的數(shù)百個(gè) ECU 以及傳統(tǒng)的開(kāi)發(fā)方法,是不可行的。
通過(guò)虛擬化使代碼栩栩如生
解決方案?構(gòu)建稱(chēng)為虛擬 ECU 的基于軟件的測(cè)試環(huán)境,允許工程師將他們的開(kāi)發(fā)任務(wù)從道路和測(cè)試臺(tái)轉(zhuǎn)移到 PC 環(huán)境。
將此開(kāi)發(fā)虛擬化可顯著減少測(cè)試時(shí)間和成本。在不冒硬件暴露風(fēng)險(xiǎn)的情況下,開(kāi)發(fā)人員可以在幾分鐘內(nèi)進(jìn)行測(cè)試并收到反饋。這遵循左移方法,這是一種通過(guò)更快地優(yōu)先考慮軟件開(kāi)發(fā)并排除功能硬件模型開(kāi)發(fā)和驗(yàn)證軟件所需的等待時(shí)間來(lái)加速開(kāi)發(fā)的實(shí)踐。這種策略促使開(kāi)發(fā)人員在設(shè)計(jì)完成之前更早地發(fā)現(xiàn)問(wèn)題——允許更快地修復(fù)錯(cuò)誤(在將它們安裝到硬件中之前)以加快交付速度。
傳統(tǒng)汽車(chē)開(kāi)發(fā)過(guò)程的連續(xù)性意味著需要先開(kāi)發(fā) ECU,然后再開(kāi)發(fā)軟件,這對(duì)嚴(yán)格的上市時(shí)間安排造成壓力。使用Triple Shift Left方法,團(tuán)隊(duì)可以實(shí)施仿真和共享模型,以便及早在虛擬平臺(tái)上開(kāi)發(fā)軟件,從而促進(jìn)整個(gè)汽車(chē)供應(yīng)鏈的協(xié)作。根據(jù)最終用例和源代碼的可用性,可以將 ECU 軟件的不同部分移植到 PC 上,并在多個(gè)工作臺(tái)上同時(shí)進(jìn)行測(cè)試(并行)。
當(dāng)今的先進(jìn)車(chē)輛通常包含超過(guò) 1 億行代碼,需要 100 多個(gè) ECU 來(lái)實(shí)現(xiàn)功能。通過(guò)利用 Triple Shift Left 方法,團(tuán)隊(duì)可以在硬件可用之前通過(guò)虛擬化 ECU 顯著加快開(kāi)發(fā)和設(shè)計(jì)周期,所有這些都不會(huì)影響功能安全性、可靠性和質(zhì)量。
使用虛擬 ECU 在幾分鐘內(nèi)獲得反饋
借助 Synopsys Silver虛擬 ECU 平臺(tái),開(kāi)發(fā)人員可以通過(guò)啟動(dòng)虛擬化環(huán)境來(lái)構(gòu)建 ECU,以測(cè)試 ECU 軟件堆棧的各個(gè)方面。只需在 PC 上,您就可以使用物理 ECU 的應(yīng)用程序代碼來(lái)構(gòu)建虛擬 ECU,從而縮短開(kāi)發(fā)過(guò)程的多個(gè)方面。Silver 還作為一個(gè)強(qiáng)大的平臺(tái),通過(guò)仿真測(cè)試和驗(yàn)證聯(lián)網(wǎng) ECU、變速器、汽車(chē)部件和發(fā)動(dòng)機(jī)的交互。
在構(gòu)建虛擬 ECU 時(shí),開(kāi)發(fā)人員有多種選擇。大多數(shù)情況下,它們從 C 代碼庫(kù)生成虛擬 ECU,但它們可以從其他來(lái)源派生,包括模擬模型。負(fù)責(zé)一項(xiàng)任務(wù)(例如芯片模擬項(xiàng)目)的開(kāi)發(fā)人員通常無(wú)法完全訪(fǎng)問(wèn)應(yīng)用程序代碼,但仍可以使用 Silver 從編譯的二進(jìn)制代碼創(chuàng)建虛擬 ECU 并將其閃存到目標(biāo)上。構(gòu)建過(guò)程甚至可以自動(dòng)化。
讓我們看一個(gè) C 代碼項(xiàng)目虛擬 ECU 的示例。上圖左側(cè)是用戶(hù)編寫(xiě)的示例配置文件,指定編譯器(即 Visual Studio)和目錄、任務(wù)和輸入/輸出。用戶(hù)將其插入 Silver 中的 SBS 工具以及任何附加文件,例如 A2L 和 DBC 的規(guī)范,具體取決于 ECU。Silver 平臺(tái)然后從配置文件創(chuàng)建一個(gè)虛擬 ECU,并從物理 ECU 克隆應(yīng)用層,提供操作系統(tǒng)仿真、虛擬內(nèi)存、A2L 轉(zhuǎn)換、XCP 連接和閃存。
一旦構(gòu)建完成,虛擬 ECU 就會(huì)在整個(gè)開(kāi)發(fā)過(guò)程中為工程師提供各種功能,例如:
· 通過(guò)手動(dòng)測(cè)試和調(diào)試在系統(tǒng)環(huán)境中即時(shí)反饋
· 從模塊級(jí)到虛擬系統(tǒng)級(jí)的自動(dòng)化測(cè)試
· 大覆蓋測(cè)試和驗(yàn)證
· 優(yōu)化設(shè)計(jì)參數(shù)
· PC預(yù)校準(zhǔn)(與車(chē)內(nèi)校準(zhǔn)界面相同)
· 應(yīng)用程序的實(shí)時(shí)運(yùn)行:快速控制原型、混合虛擬和真實(shí)組件等。
為了克服軟件密集型車(chē)輛系統(tǒng)的復(fù)雜性,我們認(rèn)為通過(guò)將軟件開(kāi)發(fā)步驟從原型車(chē)、測(cè)試臺(tái)和 HiL(硬件在環(huán))轉(zhuǎn)移到功能開(kāi)發(fā)人員的 PC 來(lái)實(shí)現(xiàn)開(kāi)發(fā)過(guò)程的虛擬化至關(guān)重要. 持續(xù)集成也是虛擬 ECU 的一個(gè)關(guān)鍵方面。與多個(gè)持續(xù)集成工具(即 Jenkins)集成后,開(kāi)發(fā)人員可以持續(xù)測(cè)試代碼更改,并立即反饋更新是否有效。對(duì)于等待軟件更新完成后再安裝到車(chē)輛上的工程團(tuán)隊(duì)來(lái)說(shuō),這可以節(jié)省大量時(shí)間——防止硬件風(fēng)險(xiǎn)并加快測(cè)試過(guò)程。
展望未來(lái)
在軟件定義汽車(chē)時(shí)代,汽車(chē)行業(yè)有望在 ADAS 技術(shù)方面取得更多進(jìn)步,幾乎無(wú)限可能。每年,看到全自動(dòng)駕駛汽車(chē)在我們身邊行駛的承諾似乎都可以實(shí)現(xiàn)。
為了讓社會(huì)信任自動(dòng)駕駛汽車(chē),它們必須盡可能接近完美。防止錯(cuò)誤和系統(tǒng)故障的很大一部分責(zé)任落在了設(shè)計(jì)支持這些技術(shù)的底層軟件的開(kāi)發(fā)人員身上。虛擬 ECU 幫助他們做到這一點(diǎn)——更快、更便宜。通過(guò)虛擬化測(cè)試環(huán)境,工程師可以通過(guò)持續(xù)集成和最大部署效率來(lái)減少他們的開(kāi)發(fā)時(shí)間(和成本)。
作為汽車(chē)向自動(dòng)駕駛汽車(chē)發(fā)展的未來(lái),虛擬 ECU 將成為團(tuán)隊(duì)在無(wú)需額外硬件的情況下進(jìn)行驗(yàn)證和測(cè)試并加速汽車(chē)軟件開(kāi)發(fā)的關(guān)鍵推動(dòng)力。