嵌入式軟體(如航空電子和汽車系統)的設計、開發、測試和驗證正變得越來越複雜。傳統的文檔驅動式環境中,一旦開發人員之間缺乏協調,軟體程式生命周期的質量和成本就會受到嚴重影響,顯然已經無法應對日益複雜的嵌入式軟體生產。 正確使用基於模型的設計(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模擬測試,對嵌入式實時軟體開發極具價值。