當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]使用基于模型的設(shè)計進(jìn)行早期驗證和確認(rèn)

MATLAB 簡化了線性控制設(shè)計,但是在實際應(yīng)用中,系統(tǒng)很少是線性的。因此,即使在設(shè)計了控制器后,對其進(jìn)行測試和調(diào)整仍然意味著需要構(gòu)建系統(tǒng)的硬件原型,并對算法進(jìn)行編碼?;蛘撸驗闆]有樣機而無法進(jìn)行測試,只有等到開發(fā)流程后期才能開展測試活動。

 

為了將算法應(yīng)用到硬件之前驗證這些算法,工程師們借助數(shù)值技術(shù)來仿真控制算法對系統(tǒng)(也稱為“對象”)的控制行為。控制工程師們學(xué)習(xí)編寫 C 或 Fortran 程序來嘗試構(gòu)建系統(tǒng)模型,借用他們認(rèn)為可能會適用于其系統(tǒng)類型的數(shù)值積分例程,在系統(tǒng)模型程序中復(fù)制其控制算法,并仿真整個系統(tǒng)。如果要使系統(tǒng)完全正常工作,那么整個仿真-開發(fā)流程需要耗費大量時間并且極具挑戰(zhàn)性。

 

The MathWorks 在 1990 年發(fā)布了Simulink,一種用于對動態(tài)系統(tǒng)進(jìn)行建模和仿真的軟件環(huán)境。在控制設(shè)計中使用 Simulink 可帶來兩大好處。首先,該軟件提供了一種直觀的框圖環(huán)境,可用于對算法和對象以及可能影響系統(tǒng)行為的非線性實際效果進(jìn)行建模。其次,該軟件包括一個基于一流數(shù)值積分方法創(chuàng)建的仿真引擎。這些核心功能極大地簡化了控制工程師通過仿真來驗證控制算法的工作。但是控制工程師們?nèi)匀槐仨氃谧詈髮λ惴ㄟM(jìn)行編碼,以在硬件樣機或?qū)嶋H系統(tǒng)上測試這些算法。

 

大約五年后,隨著 Simulink 模型自動代碼生成的推出,此流程變得簡單得多。對于調(diào)試和測試在原型系統(tǒng)中運行的代碼,控制工程師們不必再擔(dān)心將算法模型轉(zhuǎn)換為代碼時出現(xiàn)錯誤。

 

控制工程發(fā)展的下一步曾是個很大的挑戰(zhàn):產(chǎn)品級的代碼生成??焖僭痛a通常包含許多調(diào)試?yán)獭?shù)據(jù)收集代碼、主機-目標(biāo)通信代碼以及用于交互測試的其他補充代碼。一般而言,這些代碼的優(yōu)化程度不足以將其運用在可交付使用的系統(tǒng)中。代碼生成工具經(jīng)過改進(jìn)后,可以生成高效率的代碼,足以部署到產(chǎn)品級嵌入式系統(tǒng)中。今天,許多行業(yè)都認(rèn)為從控制模型自動生成產(chǎn)品級代碼是最佳的做法。

Model-Based Design(基于模型的設(shè)計)

 

處理器速度和內(nèi)存的快速增加有助于在桌面上開發(fā)建模、仿真和代碼生成工具,同樣也使嵌入式軟件開發(fā)人員可以改進(jìn)嵌入式控制器的功能和復(fù)雜性。此步驟繼而推動了這樣一種需求:即使用文本編輯器和調(diào)試器的傳統(tǒng)代碼開發(fā)技術(shù)不再是一種局限,未來的設(shè)計將以模型為中心。這種以模型為中心的開發(fā)方法稱為 Model-Based Design(基于模型的設(shè)計)(圖 1)。


圖1:以模型為中心的開發(fā)方法稱為 Model-Based Design(基于模型的設(shè)計)。

 

通過基于模型的設(shè)計,團隊可根據(jù)書面需求使用模型開發(fā)其設(shè)計。由于采用了仿真引擎,因此這些模型成為“可執(zhí)行的規(guī)范”。對于開發(fā)和檢查規(guī)范的團隊而言,“規(guī)范可執(zhí)行”是個極大的好處。檢查完高級模型后,可使用設(shè)計詳細(xì)信息修改模型,以便將其轉(zhuǎn)換為代碼。從詳細(xì)設(shè)計模型自動生成代碼極大優(yōu)化了實現(xiàn)過程,并避免了從設(shè)計到代碼轉(zhuǎn)換過程中引入錯誤的可能。

傳統(tǒng)的嵌入式控制系統(tǒng)的開發(fā)過程和V 型圖一致(圖 2)。

 


圖2:傳統(tǒng)的嵌入式控制系統(tǒng)的開發(fā)過程和V 型圖一致。 [!--empirenews.page--]

 

此過程使所有驗證和測試都位于 V 型圖右側(cè),即完成設(shè)計和實現(xiàn)之后。對于基于 C 代碼的傳統(tǒng)嵌入式控制開發(fā)流程,集成測試通常在其他形式且級別逐漸提高的測試(例如硬件在環(huán)測試以及全系統(tǒng)測試)之前。雖然此開發(fā)順序有助于組織復(fù)雜的系統(tǒng)設(shè)計,但還是有一些缺點:該順序直到開發(fā)末期才考慮驗證和測試,而此時修復(fù)所找到的任何錯誤都要付出最高代價且最耗時;用戶必須實現(xiàn)所有組件后才能測試系統(tǒng);并且該順序未能考慮開發(fā)過程中的迭代。

 

通過基于模型的設(shè)計,可以將驗證作為并行活動,貫穿整個開發(fā)流程(圖 3)。

 


圖3:通過基于模型的設(shè)計,可以將驗證作為并行活動,貫穿整個開發(fā)流程。

 

在開發(fā)流程的每一步進(jìn)行測試和驗證,意味著可在引入錯誤之處發(fā)現(xiàn)這些錯誤。與傳統(tǒng)的 V 型圖流程相比,可以更快地重復(fù)、修復(fù)和驗證設(shè)計。那么該如何著手實現(xiàn)早期驗證,從而減少在開發(fā)末期花費在測試和調(diào)試設(shè)計上的時間呢?下文概述了一些最佳做法。

模型驗證和確認(rèn)

 

基于模型的設(shè)計實現(xiàn)驗證和確認(rèn)的主要方式是通過在仿真的過程中進(jìn)行測試。雖然許多組織都進(jìn)行某種形式的建模,但是大多是以專門的方式應(yīng)用仿真,因此無法在最大程度上實現(xiàn)潛在的驗證好處。單靠仿真無法發(fā)現(xiàn)所有錯誤;但這是一個巨大的進(jìn)步,您幾乎在開始設(shè)計模型時就可以進(jìn)行仿真。建模環(huán)境中的迭代快速且方便。

 

對各個組件進(jìn)行建模非常有用,可能是完成復(fù)雜設(shè)計所必需的;然而,不要因為這種優(yōu)勢,就不再對將在其中運行組件的系統(tǒng)或環(huán)境進(jìn)行建模。通過在單一環(huán)境中對整個系統(tǒng)進(jìn)行建模,您可以快速了解組件功能與其他組件的交互方式,以及集成組件在已部署的系統(tǒng)或環(huán)境中的行為方式??赡軙l(fā)現(xiàn)對組件或其他方面的遺漏需求。通過使系統(tǒng)模型還原為迭代一個組件時的狀態(tài),可以評估設(shè)計迭代對系統(tǒng)功能的影響。

 

與設(shè)計和開發(fā)同時進(jìn)行測試有助于檢測出潛在問題,并可顯著減少修復(fù)這些問題的成本和時間。通過在開發(fā)模型期間考慮測試,可使設(shè)計更適合于進(jìn)行測試,從而確保可對設(shè)計進(jìn)行完整測試。此原則的應(yīng)用范圍遠(yuǎn)不止嵌入式系統(tǒng)領(lǐng)域,但是嵌入式系統(tǒng)開發(fā)人員卻常常忽視了此原則。原因是用戶以為可以在軟件中完成任何事情,也可能是文檔化的開發(fā)流程忽視了此原則。然而,與新型靈活的軟件開發(fā)流程一樣,在設(shè)計模型之前或與設(shè)計模型并行開發(fā)測試是最佳做法。

 

幾乎每種測試方案都涉及到某些變數(shù):輸入、對象參數(shù)、環(huán)境因素或其他要素。時間和開支通常限制了測試方案的靈活度;然而,通過在仿真環(huán)境中進(jìn)行測試,您可以更加快速且并行(如果處理能力夠用)地仿真測試案例。在仿真中探查整個參數(shù)空間還可以縮小要實時運行的關(guān)鍵測試的范圍。

 

每個組織都有針對設(shè)計和實現(xiàn)的標(biāo)準(zhǔn)或最佳做法。這其中有許多標(biāo)準(zhǔn)并未形成文檔,但是卻被關(guān)鍵人員銘記在心。使標(biāo)準(zhǔn)書面化并將標(biāo)準(zhǔn)檢查加入模型開發(fā)流程是很簡單的做法,但卻可以產(chǎn)生巨大的影響,因為這樣做可盡早減少“愚蠢”錯誤的數(shù)量,確保模型在團隊成員之間共享時更具可讀性,并且更加容易在將來進(jìn)行維護。對標(biāo)準(zhǔn)進(jìn)行建??梢苑浅:唵危ㄈ珧炞C所有輸入和輸出是否已連接),也可以非常復(fù)雜(如是否滿足行業(yè)標(biāo)準(zhǔn))。關(guān)鍵在于開發(fā)一致的檢查,然后在整個組織中推動對這些檢查的遵從性。

 

確定測試組件何時能夠滿足需要通常不僅是一門科學(xué),更是一門藝術(shù),因為您通常要根據(jù)設(shè)計或測試工程師的判斷來確定。對于軟件組件,許多團隊使用代碼覆蓋率作為更客觀的標(biāo)準(zhǔn)來衡量測試的完整性。您同樣可以將模型覆蓋率用于模型測試。覆蓋率用于衡量您在測試過程中測試了模型中(或源代碼中)的多少邏輯。修改的條件/決策覆蓋率是一種針對覆蓋率的嚴(yán)格衡量標(biāo)準(zhǔn),得到廣泛接受。

 

大多數(shù)質(zhì)量標(biāo)準(zhǔn)的核心原則是進(jìn)行文檔化。把需求,流程。結(jié)果記錄下來。如果不進(jìn)行記錄,則不可能跟蹤做過的事情;不可能向別人(如客戶)證明您滿足了他們的需求;也不可能重復(fù)您的結(jié)果。雖然記錄通常很單調(diào)乏味,但是有許多工具可通過生成標(biāo)準(zhǔn)報告,來幫助自動記錄活動。在您以后發(fā)現(xiàn)問題或希望重復(fù)使用設(shè)計時,良好的記錄可幫助您節(jié)省時間,這也是非常重要的。

 

代碼驗證

 

這些做法是在模型級別開始早期驗證的良好起點。最后,需要實現(xiàn)并部署到產(chǎn)品化硬件上。此時,代碼驗證成為重點?;谀P偷脑O(shè)計可以提供哪些幫助呢?

 

自動代碼生成是一種非常有用的方法。通過在模型級別驗證您的設(shè)計,然后直接從模型生成代碼,您只需要驗證模型和代碼是否等效。這是一種理想狀態(tài)的工作流程。在實際情況中,有時不可能從模型生成需要的所有代碼。您可能使用傳統(tǒng)流程開發(fā)了一些中間件和設(shè)備驅(qū)動程序代碼,或是可能將舊有代碼用于某些功能。對于這些情況,可通過一些其他的最佳做法來驗證代碼。

 

用戶幾乎可以在任何位置測試硬件;然而,硬件通常沒有與仿真中的測試有連接。許多因素都可能導(dǎo)致這種沒有聯(lián)系的情況:在硬件上運行測試的小組與對設(shè)計建模的小組不是同一批人,在實驗室中運行的軟件與設(shè)計中的軟件也不相同。然而,當(dāng)您在模型上運行的測試與在實驗室中運行的測試相同時,您就可以確切地了解設(shè)計在實驗室中的執(zhí)行情況。若要驗證代碼是否等效于設(shè)計模型,您可以將相同的測試工具用于模型測試,來測試已編譯并在嵌入式目標(biāo)上運行的模型軟件實現(xiàn)。同時對組件設(shè)計模型和嵌入式目標(biāo)上的代碼運行測試是一種協(xié)同仿真步驟,稱為 PIL(處理器在環(huán))測試?,F(xiàn)在,可以使用一些工具在軟件上執(zhí)行測試(開發(fā)人員在主機(如 PC)上創(chuàng)建的測試),同時也在嵌入式處理器上運行測試。將嵌入式代碼與原始模型的測試結(jié)果進(jìn)行比較,可幫助您確保組件的行為在編譯和下載后保持不變,并確保代碼可正確運行。

 

嵌入式代碼中的運行時錯誤特別難以發(fā)現(xiàn),一旦發(fā)現(xiàn)后,又難以進(jìn)行調(diào)試。這類例子包括溢出和下溢、被零除和其他算術(shù)錯誤、超出范圍的數(shù)組訪問、非法取消引用的指針、對非初始化數(shù)據(jù)的只讀訪問以及危險的類型轉(zhuǎn)換等。直到最近,基本上只有三種選擇可用于檢測嵌入式軟件中的運行時錯誤:代碼檢查、靜態(tài)分析器和試錯法動態(tài)測試。代碼檢查所需的人工工作量很大,通常不適用于大型的復(fù)雜應(yīng)用程序。靜態(tài)分析器可發(fā)現(xiàn)的問題相對較少,更重要的是,無法診斷大多數(shù)源代碼。動態(tài)(或“白盒”)測試要求您編寫并執(zhí)行大量測試用例。如果測試失敗,可能難以調(diào)試問題。基于形式驗證的代碼驗證工具可以證明不存在運行時錯誤,并可為代碼的可靠性提供強有力的保證。當(dāng)在開發(fā)流程中使用代碼驗證工具進(jìn)行測試時,這些工具還可提供其他技術(shù),用于發(fā)現(xiàn)在后期測試階段中難以發(fā)現(xiàn)并需要花費很高代價進(jìn)行更正的設(shè)計和實現(xiàn)錯誤。

 

系統(tǒng)建模和仿真工具(如 Simulink)可幫助優(yōu)化設(shè)計和驗證復(fù)雜算法的任務(wù),而無需昂貴的硬件。摒棄手工編碼、難以維護的仿真后,控制設(shè)計人員可以快速開發(fā)復(fù)雜算法和系統(tǒng)模型,并在將算法應(yīng)用到硬件上之前測試這些算法。經(jīng)過多年經(jīng)驗的積累,現(xiàn)在已形成了可提供自動代碼生成的方法,以支持原型系統(tǒng)中的實時測試并在以后用于可部署的嵌入式代碼。現(xiàn)在,基于模型的設(shè)計已廣泛應(yīng)用于各種領(lǐng)域,包括控制、圖像處理、音頻、通信和信號處理。

 

基于模型的設(shè)計的一個主要好處在于,我們有機會隨所有其他開發(fā)步驟(尤其是在開發(fā)流程早期)一起,并行地進(jìn)行嚴(yán)格驗證和確認(rèn)?;谀P偷脑O(shè)計的采用者通過不懈的實踐已發(fā)現(xiàn)了一系列最佳做法,使用這些最佳做法可以在最大程度上獲得這種設(shè)計帶來的好處。這些做法(特別是隨模型一起開發(fā)測試并在代碼和硬件上重復(fù)使用模型測試)可以顯著降低開發(fā)項目由于在流程后期發(fā)現(xiàn)錯誤而導(dǎo)致未能達(dá)到質(zhì)量或交付目標(biāo)的風(fēng)險。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉