概念:四種基於模型的嵌入式軟體開發、測試與驗證方法

来源:https://www.cnblogs.com/digiproto/archive/2023/04/07/17297031.html
-Advertisement-
Play Games

​ 嵌入式軟體(如航空電子和汽車系統)的設計、開發、測試和驗證正變得越來越複雜。傳統的文檔驅動式環境中,一旦開發人員之間缺乏協調,軟體程式生命周期的質量和成本就會受到嚴重影響,顯然已經無法應對日益複雜的嵌入式軟體生產。 正確使用基於模型的設計(Model-Based Design,以下簡稱MBD)方 ...


嵌入式軟體(如航空電子和汽車系統)的設計、開發、測試和驗證正變得越來越複雜。傳統的文檔驅動式環境中,一旦開發人員之間缺乏協調,軟體程式生命周期的質量和成本就會受到嚴重影響,顯然已經無法應對日益複雜的嵌入式軟體生產。

正確使用基於模型的設計(Model-Based Design,以下簡稱MBD)方法可以有效規避此類問題:通過MBD提供的統一設計環境,開發人員可在軟體的整個生命周期中使用同一套模型來進行需求驗證、數據分析、模型可視化、測試和驗證,併進行最終的產品部署(無論是否有自動代碼生成)。

1.MBD是什麼?

MBD是一種圍繞嵌入式軟體虛擬原型搭建展開的項目開發方法,其技術發展是為了剋服應用於閉環控制系統(Closed-loop Control System)或DSP(Digital Signal Processing,數字信號處理)的嵌入式軟體設計中常見的困難和複雜問題。

在大多數實際場景中,此類嵌入式軟體的設計與測試需要在物理原型和系統可用之前就開始。由於整個項目開發過程往往需要多個團隊的廣泛參與,如果直至後期才發現設計和需求的錯誤,就會導致項目周期整體延遲、成本大大增加——使用MBD就是為了在項目早期階段解決這些問題,以減少後期返工。

MBD還與模擬、圖形化的生產能力模型相關聯,能夠對軟體開發所涉及的每個階段加強驗證與確認過程。對嵌入式CPU(Central Processing Unit,中央處理器)或DSP上的代碼進行驗證是一個關鍵步驟,不僅能夠檢測演算法設計轉換至C代碼過程中的缺陷,還能針對代碼編譯、二進位代碼優化以及CPU/DSP體繫結構的限制等問題採取先發制人的措施。

▲基於模型的設計(MBD)概述

 

2.基於模型的開發和測試

在使用MBD方法時,設計團隊往往通過開發模型來分析和制定高層次的需求以及更為細緻的底層需求。此類模型可具備解決方案的主要架構,但通常獨立於嵌入式目標平臺。模型所實現的主要需求能夠在模擬過程中以精確的方式得到證明,並能說明可演繹的頂層需求,通常被指定為可執行的規範。

應用MBD的設計和測試團隊之間共用模型組件和相關工作,有助於進一步確認嵌入式軟體代碼是否符合硬體的具體要求,併在較短時間內對代碼進行更為集中的測試和Bug修正。

MBD的驗證、確認、測試模型和軟體的測試機制(任務)通常被分為下列四項:

模型在環(Model-in-Loop,MIL):驗證演算法模型是否滿足功能需求;

軟體在環(Software-in-Loop,SIL):驗證【模型】與【模型代碼實現】之間的一致性;

處理器在環(Processor-in-Loop,PIL):驗證【模型】與【模型代碼實現在目標處理器上運行】之間的一致性;

硬體在環(Hardware-in-Loop,HIL):在實際系統上驗證代碼與需求功能之間的一致性。

 

1. MIL - 模型在環測試

從集成層面來看,基於系統本身的模型尤為重要。在MIL層面測試嵌入式系統設計意味著模型及其環境在建模框架中進行模擬模擬,無需任何物理硬體組件的介入。這使得在開發周期的初始階段進行測試成為可能,並能驗證開發早期階段的需求。代碼驗證的基準主要在於通過模擬收集到的信息。

▲ MIL測試

2. SIL - 軟體在環測試

SIL層面,模型會根據嵌入式平臺的最終目標進行進一步調整。控制器模型一般使用C或C++編寫(可以是自動生成的代碼),插入到模擬環境中與模擬的被控對象一起評估。

這種驗證方式對於驗證由自動生成代碼和手寫代碼(代碼需要集成併在嵌入式目標平臺上執行)組成的軟體組件尤其有用。SIL測試通常會重覆使用MIL測試中的數據和模型結構,以檢查模擬中的代碼行為是否正確。通常,嵌入式軟體和模擬環境模型在同一臺機器上運行。

▲ SIL測試

 

3. PIL - 處理器在環測試

PIL與MIL、SIL的不同之處在於其代碼在目標微控制器或DSP上執行:將已編譯的目標代碼載入到目標處理器或DSP上,然後在被控對象模型上運行模擬以進行驗證。PIL可執行大量V&V測試套件,以評估嵌入式CPU/DSP運行控制器演算法的能力。如果SIL和PIL結果之間存在差異,可對PIL目標代碼針對定點精度、記憶體占用或編譯器優化標誌等部分進行微調。

▲PIL測試

 PIL可以彌補模擬軟體中執行的控制器模型設計和在目標機上執行的實際控制器代碼之間的差距,不僅能夠識別出可能源自編譯器的錯誤,還支持調試演算法功能和評估嵌入式微控制器或DSP的性能,並可提供軟體系統的重要測量數據,如記憶體使用和執行時間。這些數據可用來在模擬環境中微調控制器功能,並應用於嵌入式硬體設計的早期階段。

▲PIL實際應用

4. HIL - 硬體在環測試

PIL測試結束後的下一步動作,通常會使用實際系統(或實驗室原型)或運行被控對象模型的實時模擬器來替換被控對象模型。例如,如果工程師正在設計直流電機速度控制器,那麼控制器代碼將部署在微控制器或DSP板上,然後通過IO(輸入輸出)介面連接到真正的直流電動機。

由於HIL測試允許在實時環境中以可管理的方式調試和評估功能測試/運行測試,因此實現可靠的HIL測試通常需要用到大量的自動化測試、日誌以及硬體的介面組件。相對而言,PIL的設置相對容易,需要的硬體和軟體資源也會更少。

▲ HIL測試

 

四個測試手段的對比如下:

SkyEye,中文全稱天目全數字實時模擬軟體,是基於可視化建模的硬體行為級模擬平臺,支持用戶通過拖拽的方式對硬體進行行為級別的模擬和建模。SkyEye採用“面向對象”的設計思想,將虛擬目標系統上的所有組件都設計為獨立的模塊,支持通過手動修改和界面圖形拖拽的方式快速生成虛擬目標系統的“硬體配置文件”,從而快速構建虛擬目標系統,達到載入和運行二進位目標程式併進行模擬測試的目的。

SkyEye目前支持模擬的處理器架構有:ARM、DSP、POWERPC、SPARC、X86、MIPS、MCS-51、TriCore等,可支持SIL和PIL模擬測試,對嵌入式實時軟體開發極具價值。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、前言 在2.0的架構設計中,引入了插件的概念,目的就是為瞭解決代碼臃腫問題,隨著系統功能越來越多,System層的代碼也越來越多,之前是以文件夾的方式區分功能模塊,這樣的話代碼就過於集中,想找到某一個功能模塊的代碼就要翻好幾個文件夾,不利於以後的開發和維護。所以在新的架構中,我將部分功能模塊通過 ...
  • 在WPF中TextBlock的Text有時內容只需要改變個別數字,而不需要所以內容都修改,這時候就要使用StringFormat, 如: <TextBlock Text="I have xxx friends"/> 這裡面的xxx是個變數,那在Binding時應該怎樣寫呢 <TextBlock Te ...
  • 項目結構如下圖所示: admin和demo是兩個api服務。gateway是一個ocelot網關服務。 第一步在ocelot.json添加如下配置: 第二步:在ocelot項目修改以下幾處: demo api和admin api不需要修改什麼,只要以前正常打開,現在就可以在網關服務的swagger上 ...
  • 1、避免在迴圈中進行查詢操作: 避免在迴圈中進行查詢操作,可以將查詢結果緩存到記憶體中,然後對記憶體中的數據進行操作,可以提高性能。這種方式適合集合數據量少的數據,否則利大於弊。 // 不建議的方式:在迴圈中進行查詢操作 foreach (var item in itemList) { var resu ...
  • 一:背景 1. 講故事 上周看了一位訓練營朋友的dump,據朋友說他的程式卡死了,看完之後發現是一例經典的死鎖問題,蠻有意思,這個案例算是學習 .NET高級調試 入門級的案例,這裡和大家分享一下。 二:WinDbg 分析 1. 程式為什麼會卡死 因為是窗體程式,所以看主線程的線程棧就好了,如果卡在 ...
  • 最近小編同事面試遇到了一道面試題,題目是有個int數組,把輸入包含的指定元素刪除。這道題主要考察C#基礎知識和編碼動手能力。小編將以如下幾種方法實現,供大家參考。(註:文末還有擴展問題。) 1、使用臨時數組copy後替換 這種方法涉及創建一個比原始數組小一個元素的新數組。然後,將原始數組複製到新數組 ...
  • #1、熟悉Linux的文件系統結構 Linux的文件系統結構其實是一個樹形的分層組織結構,如下圖: Linux系統目錄結構及目錄路徑: ##1.1、文件系統層次結構標準 Linux是開源的操作系統,各個Linux發行機構都可以按照自己的需求對Linux系統的文件系統進行相應的裁剪,所以各個Linux ...
  • 如文章標題,我們安裝的Linux開發環境是**:Windows-VMware-Ubuntu環境** 配置,即在windows系統下安裝VMware虛擬機,之後在VMware中配置安裝Linux系統的常用發行版——Ubuntu系統。 沒有在一臺伺服器或者一臺電腦上直接安裝linux系統(比如直接主機安 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...