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

来源: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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...