彭 博,袁三男,沃煜敏
(上海電力大學 電子與信息工程學院,上海 200120)
隨著軍用領域系統的功能日漸強大,結構愈發復雜,軟件已逐漸成為武器級系統中關鍵的組成部分,許多重要、復雜的功能都是由軟件來實現的[1]。軍用系統嵌入式軟件能否安全可靠的運行直接關系到機載設備(如衛星、飛機、飛行器等)系統裝備演練任務的成敗,使得嵌入式技術在苛刻性環境中需要滿足更高的條件。而傳統的開發工具很難有效應對這些苛刻性系統的設計、調試、集成、測試及維護,導致嵌入式系統在開發及驗證過程中存在如下瓶頸:
周期性:嵌入式軟件開發過程中,需等待相匹配的硬件設備,才可以開展后續的開發與調試工作,導致整個項目的周期拖長;
困難性:在軟件開發調試階段,受影響于硬件設備的時間與成本問題,導致軟件無法在正常節點內完成開發與調試;遇到系統及設計異常問題時,很難正常開展測試和驗證工作[2];
安全性:有些系統(如武器裝備)在沒有通過充分的軟件驗證,就直接進行軟硬件集成會具有一定的危險性,導致設備損壞甚至人員傷亡;
低效性:在測試系統性能和解決Bug時,硬件設備只能在1∶1的實時環境中進行,一定程度上增大測試難度,導致項目周期長、可靠性低,甚至面臨失敗的危險;
基于上述問題所導致的不良現象,在衛星等系統的各部分實物生產之前,需要為控制系統的方案設計和技術設計提供一個盡可能真實的虛擬仿真系統;這個虛擬的目標系統是以數字孿生為基礎設計的仿真模型,模擬出與真實硬件相同的功能,而后根據此模型設計出本文介紹的虛擬仿真系統,以及在該系統中實現的控制軟件開發、調試、測試、閉環仿真驗證和故障注入測試等功能,使控制系統設計結果的正確性與合理性能夠在該平臺上得到驗證。
數字孿生的概念最早出現于美國國防部提出的Digital Twin技術,用于航空航天飛行器的健康維護與保障[3]。2012年NASA 給出了數字孿生的概念描述:數字孿生是指充分利用物理模型、傳感器等數據,對物理實體的組成、特征、功能和性能進行數字化定義和建模的過程;它作為虛擬空間中對實體產品的鏡像,反映了相對應物理實體產品的全生命周期過程[4]。 Gartner在2018年和2019年的十大戰略科技發展趨勢中把數字孿生定位為重要技術之一。
2012年,電子科技大學的羅天成以QEMU為模擬器工具,設計實現了一個基于虛擬機技術的飛控計算機虛擬仿真系統[5];該虛擬平臺為該型號機載飛控軟件的測試開發提供了便利的支持環境。2018年,電子科技大學的歐陽潤宇基于真實飛控計算機,搭建了能在設計初期對飛控計算機架構設計方案進行驗證分析的虛擬化驗證平臺,為系統的可靠性分析提供了一種嶄新的方法[6]。
近年來,數字孿生成為推動創新和成果的強大技術,它的發展得到我國的政策支持,不僅是5G賦能產業鏈上的重要一環,與5 G三大場景之一的萬物互聯需求強耦合,還可以應用到電網中,使得電網智能化轉型的速度得到迅速提升。目前,數字孿生技術的重要程度已經和云計算、AI、5 G等一樣,上升到國家高度。
本文基于數字孿生技術,建立對星載設備的實物進行結構和功能模擬的數字孿生模型,設計出可以嵌入CPU模擬器、片上外設、通信板卡、電源等設備的全數字虛擬仿真系統。其中,基于數字孿生技術對主設備上掛載的從設備進行功能性模擬的動力學模型如圖1所示;該模型仿真有虛擬仿真系統中加載的各種單機設備寄存器以及數據的輸入輸出接口等,是對真實單機設備的數字仿真,其中輸出端out是處理器模塊輸出到數據庫的數據,輸入端in是處理器模塊接收來自數據庫的數據;各個仿真的單機數據再經過虛擬仿真系統解析后,將轉換成16位整型數據,并顯示到系統界面之中;對動力學模型的輸入輸出端解析出的結構和數據如圖2所示。

圖1 基于數字孿生驅動的動力學模型

圖2 虛擬仿真系統解析出的動力學模型IO接口圖
該系統不僅完成了對各種型號中涉及的CPU、內存、看門狗、中斷控制器等硬件設備的功能模擬,還添加了超實時仿真系統,能夠對主控計算機軟件進行快速全面的系統測試,實現全數字高速閉環仿真運行,適用于軍事武器裝備以及高校實驗項目等各個領域的系統級仿真。
本文所設計的虛擬仿真系統運用數字孿生驅動真實目標機的方法,實現與真實目標機相同的功能;該系統包含虛擬目標機和超實時仿真軟件等部分;其中,虛擬目標機是用于對不同處理器、外圍設備和動力學模型中單機設備的數字仿真,實現故障模擬與注入功能;超實時仿真軟件用于協同控制以及超實時環境下的系統仿真[7]。其內部子系統協同工作的結構如圖3所示。

圖3 虛擬仿真系統模塊化結構圖
本文設計的虛擬仿真系統較傳統仿真系統而言,獨創性地添加了可以達到實時仿真速率20倍以上的超實時運行模式,并可以進行在線調試、在線故障注入、以及封裝多種通信協議的通用性數字軟總線等特色功能。下面將對本文所設計的仿真系統核心部分做詳細介紹。
虛擬目標機是在保持高速交叉仿真完整嵌入式系統的基礎上設計的虛擬開發與驗證平臺,獨創性地將圖形化建模的思想引入虛擬系統的搭建過程中,可以用作系統級的開發、調試、測試和驗證。
虛擬目標機的界面通過MFC多文檔模式框架進行編寫,主要由CPU模擬器、虛擬芯片、虛擬內存等核心部件構成;其中,CPU模擬器模擬目標CPU的內核及其行為,如模擬PowerPC處理器的指令集仿真,將目標機的指令轉換到宿主機上執行,從而實現直接通過宿主機執行目標機上的代碼[8];虛擬芯片是對硬件板卡中設備進行數字化處理,封裝成可以直接調用的函數庫,包括串口、并口、中斷控制器、各種通信總線控制器等;虛擬內存是對用于存儲的RAM區、Flash以及系統寄存器的數字仿真。
虛擬目標機結合被控仿真對象以及其他仿真子系統一起構成虛擬目標系統;各個功能組件通過已經封裝的內部總線進行通信,確定好主框架后,通過C++為編程語言對虛擬目標機的各個組件進行功能實現。例如操作、編輯模式的切換,可執行固件程序的加載,對目標碼文件的解釋執行,解釋函數、全局變量的地址分配情況等;解析目標碼與源碼的對應關系,并在此基礎上對調試功能的開發、運行以及加載模型代碼等功能。
基本功能實現后,再編寫通用設備模型。設備模型是虛擬目標機的組成和搭建的基本單元,通過調用VC++運行庫集合包(Runtime Library/Pack)以及代碼編寫來實現,是對CPU外圍電路、單機寄存器、通信電路板等設備進行的模塊化處理;然后生成虛擬目標機可兼容的DLL文件;最后通過圖形化、積木式拖拽功能的開發,實現對內部各個模型進行快速關聯與連線,使其相互間通過虛擬總線進行通信,從而完成對物理設備的純數字仿真。虛擬目標機對物理設備的數字化處理以及進行模塊化編程如圖4所示。

圖4 虛擬目標機環境示意圖
通用處理器模塊主要提供計算資源、程序/數據存儲器、硬件看門狗功能、1553B總線、內總線管理等功能。處理器模塊仿真的硬件行為包括CPU芯片、存儲器芯片、內總線隔離驅動線路、FPGA芯片、1553B總線接口芯片和其他邏輯電路等。在虛擬目標機中數字化仿真通用處理器模塊時,需要設計匹配的指令集,通過指令集去控制處理器實現相應功能,指令仿真方法采用模擬處理器的執行,從仿真內存中取指令。
以PowerPC處理器為例,指令集以字段的形式分析內部指令,通過主機處理器模擬執行過程中的行為,然后將運行結果回寫到相應的虛擬仿真寄存器中;最后運用緩存技術,得到較高的執行性能[9];整個計算流程采用C語言完成,并由VC++編譯器編譯。
PowerPC處理器的仿真設計包含整數單元、浮點單元、指令集、動態編譯和解釋執行五部分;其中,指令集是處理器單元中用來計算和控制計算機系統的一套指令的集合;整點運算性能和浮點運算性能是用來反映CPU處理數據的能力;解釋執行即傳統系統中使用的實時運行模式,其執行速度較慢[10];動態編譯采用LLVM提供的接口進行指令的操作處理,即超實時仿真系統中設計的超實時運行模式。
整數單元是專為可靠性要求高的空間和軍事應用設計,且支持錯誤檢測;其采用了精簡指令集RISC結構,可以使得指令執行速度更為精準。為保證指令執行速度,整數單元設計采用四級流水線技術,允許并行執行多條指令,整體過程分為4個部分:取指、解碼、執行和寫回,所有階段實行并行工作方式,即一次性可以處理多達四條不同的指令。浮點單元也使用四階段的指令流水線工作,可以同時滿足單精度和雙精度浮點指令。
在整個處理器模塊開發過程中,時常存在有錯誤指令的情況;針對此現象,不僅可以通過定位具體函數模塊找出對應的出錯指令解決問題,還可以通過動態編譯技術對整個處理器架構和指令集進行優化。
故障注入是一種可靠性驗證技術,通過受控實驗向系統中刻意引入故障,并觀察系統中存在故障時的行為[11]。
故障注入技術分為多種,此次虛擬仿真系統采用的是基于軟件的故障注入以及對嵌入式系統與處理器相關的故障注入;基于軟件的故障注入,是在軟件級生成錯誤,從而模擬硬件級的故障行為;其注入方式有很多種,如修改內存或寄存器數據,通過應用軟件生成故障或者通過底層軟件如操作系統運行故障[12];具體實現主要是通過操作各下位單機的被測仿真模型接口實現對接口功能性及各分系統間的數據鏈路的故障模擬,如寄存器故障、存儲器故障、CPU總線故障等。具體實現流程如圖5所示。

圖5 故障注入邏輯流程圖
故障模擬是在日常開發時,為了保證硬軟件的準確性以及代碼的健壯性,需要模擬各種故障測試[13];通過修改虛擬目標機的內存、寄存器和圖形化接口仿真軟件中模擬的數據內容完成對軟件的故障注入測試,以確保在這些故障出現時軟件仍能正確工作。在系統全速運行時虛擬仿真系統實時監控外圍設備各單機發生故障的狀態顯示如圖6所示,它不僅可以監控仿真單機發生故障的狀態,還可以監控發生故障后接收的異常數據,從而可以作為系統調試與維護時的有效輔助,使得虛擬仿真系統中主控計算機軟件可以進行快速全面的系統測試,突出了其在各個領域中的實用性。

圖6 虛擬仿真系統監控的故障狀態
本文提供對處理器全部引腳的模擬及故障注入,通過硬件方式實現對被測系統進行最低程度的干涉,以加速測評系統容錯機制;通過觀測和分析系統對所注入故障的反應,從而提供可靠的數據,保證系統容錯機制。
超實時仿真系統軟件的功能基于C++語言開發,界面通過MFC添加控件實現,各個控件之間以及虛擬目標機和其他開發工具之間的通信通過封裝好的虛擬總線完成。超實時仿真系統內部邏輯采用固定增量推進法推進仿真時間,由系統定時器控制仿真時間推進;仿真時間的推進可以加快系統運行速度,從而達到超實時仿真的目的[14],
經過實測,超實時仿真系統的仿真速率可以達到20倍以上的超實時仿真測試要求。例如,以PowerPC處理器為例,設處理器運行性能為MMIPS(百萬條指令/秒),PowerPC處理器主頻是NMHz,則處于該處理器中的仿真倍數N的計算公式為P=M/N,可以使整個仿真目標系統在執行過程中,達到20倍以上的超實時仿真測試要求。在虛擬仿真系統中,可以對相關處理器進行性能監控,不僅可以監視出優化后的性能指標,還可以實時顯示出特定性能下的超實時倍數;PowerPC處理器實際運行性能監控如圖7所示,在主頻設置為10 MHz的情況下,其性能指數可達到400 MIPS,根據超實時仿真倍數計算方法可知,此時超實時速率可達到基于硬件時鐘的40倍。

圖7 PowerPC處理器性能監控
在具體工作任務中,多個仿真實體之間需要進行協同仿真,即對多個仿真對象之間進行時序同步。在其過程中,為了加快仿真速度,多個實體之間采用并行運行的方式實現相互間通過封裝好的數字軟總線進行指令收發與數據傳輸。與此同時,為了驗證開發工具輸出數據及超實時運行速率的準確性,超實時仿真工具還可以通過JTAG連接硬件設備嵌入式目標機和仿真測試設備,從而與硬件板卡直接通信,得出真實的實驗數據。不僅如此虛擬仿真系統還可以直接通過虛擬總線連接到服務器與硬件設備,更好地增加了虛擬工具與物理設備的聯動性。其整體結構如圖8所示。

圖8 超實時仿真子系統示意圖
虛擬仿真系統中設計的通信中間件協議,是基于分布式數據通訊總線協議的實時分布式網絡中間件而設計的,以實時數據分布式服務作為聯合試驗的基礎通信設施,進行對象管理和時間管理等功能;能夠實現大型異構仿真系統的靈活集成、配置、部署及運行;底層采用發布/訂閱方式通信總線,提供實時、可靠、穩定、高效的數據通信[15]。
由于不同項目所使用的處理器以及硬件設備不同,從而需要依據特定需求設計出虛擬仿真系統與外部設備模型之間的通信協議,即模擬SPI、RS422、1553b、AD等通信設備的硬件板卡,實現數字軟總線標準化。比如仿真AD/DA的通信機制時,首先實現AD和DA寄存器以及相關控制寄存器的邏輯功能;然后進行AD轉換,把接收到動力學模型中的模擬量數據轉換成數字量并存儲到對應的AD寄存器中;最后完成對DA轉換的操作,即把軟件要發送的數字量轉換成模擬量,通過數字軟總線定義的接口發送給動力學模型,最終完成對AD/DA通信過程的數字仿真;在具體實驗中對AD采集寄存器讀取的數據以及計算出的采樣結果如表1所示,其中計算公式為D=A/(10/4096)+ 0×800,D是輸出結果,即轉化后的數字量,A是采樣值,即模擬量。

表1 具體寄存器模擬信號采集對照表
在進行分布式虛擬總線標準化時,模擬的各個通信設備原理類似,下面以1553b通信板卡進行數字化處理為例。1553b系統采用模塊化設計,主要仿真模擬1553b通信板卡芯片功能,包括芯片上的寄存器,內存空間,中斷等[16]。系統由一個BC終端、2個RT終端和一個BM終端構成,提供所需要的總線和終端模塊。首先模擬出芯片在BC模式和RT模式的寄存器和內存空間,而后根據芯片手冊實現通信板卡芯片中所有寄存器的功能,最后在通過相關通信協議實現對所使用寄存器和內存RAM區域的讀寫操作、各個節點之間的數據收發,以及消息的解析和邏輯流程的模擬仿真,中斷模擬仿真等,對應的總體結構如圖9所示。當用戶使用本文提出的虛擬仿真系統時,必須遵循對應的通信協議,從而大大提升了用戶的使用效率。

圖9 1553B物理總線拓撲關系邏輯圖
內置調試器為嵌入式軟件在虛擬開發過程提供調試環境,支持多種調試手段對代碼問題進行快速定位,虛擬目標機調試器的設計過程如下:
1)對ELF、COFF、HEX等格式的固件可執行文件的調試信息(一般為Stabs,DWARF2/3的符號)進行解析,提取出變量分配地址、函數分配代碼段地址,函數對應的源碼的路徑及目標碼對應源碼的行數信息。
2)解釋二進制目標碼。按照CPU指令的存儲格式解析二進制目標碼到匯編偽代碼。
3)在調試界面添加畫布,把匯編指令和源碼打印到畫布中。用戶可根據自己需要和目標系統執行情況查看各種調試信息。
基于調試器的基本功能,實現對目標板控制功能的仿真,進一步完成在源碼和目標碼上設置斷點,通過在調試環境中添加時間判斷,根據不同的事件調用不同的接口函數的方式,實現各種控制功能,如:斷點、單步執行、進函數、出函數、執行過函數、復位、停止等基本調試控制,并支持在任何時刻暫停程序[17];相關功能以及在線調試過程中操作的寄存器對應的地址和數據如圖10所示。
在搭建好虛擬仿真系統的開發環境后,編寫用于模擬硬件功能的外設模型,通過圖形化編程的方法對整個系統進行數字化仿真;而后由超實時仿真工具發出指令,協同控制虛擬目標機向動力學模型收發數據,對仿真結果進行數據監視、錯誤排查以及超實時加速仿真等功能。
作為虛擬仿真系統的重要組成部分,以虛擬目標機為載體,首先編寫處理器與片上外設模型,模擬動力學模型中涉及的各種單機設備寄存器通道、通用處理器模塊、存儲器、AD/DA采集、二次電源燈等功能。各個設備模型之間通過節點連接建立聯系,其中虛擬內核用于加載主處理器的DLL文件,并向外圍設備發送指令,而后外圍設備再通過虛擬總線控制ROM、RAM等內存空間進行讀寫操作,以及串口輸出、模數轉換、LED等控件的功能實現;還可以通過中斷觸發控制動力學模型包含的各個單機設備所處的狀態,最終把實驗結果通過串口打印輸出,也可以通過堆棧區監控數據。
虛擬仿真系統的超實時仿真子系統采用了嵌入式系統調試技術、HIL(硬件在環)半實物仿真技術、基于模型開發技術、系統測試與驗證技術及分布式數據總線技術,可廣泛應用于高安全性、高可靠性系統研制的各個階段及各種開發模式之中;不僅支持傳統的模式開發,還支持迭代開發。該系統適用于各研制階段的開發、仿真與驗證;下面將對兩種應用場景展開介紹。
在應用場景一中,將虛擬目標機與真實物理外設進行連接,外接如1553B、AD/DA、CAN等通信板卡實物,采用HIL硬件在環仿真技術對復雜設備控制器的開發與測試過程進行全數字化模擬,然后通過真實通信板卡和仿真工具輸出精準數據給HIL硬件在環仿真與測試系統,最后把解析出的測試序列回傳給虛擬目標機之中,由此得出的數據和時序可以用于后續的全數字化虛擬仿真系統中測試驗證;采用這種模式可實現對虛擬目標系統的硬件在環仿真與驗證,適合于在系統研制初期對系統設計方案進行試驗與評估,以及系統研制中期的實驗數據驗證與調試。虛擬仿真系統的應用場景一的系統結構如圖11所示。

圖11 場景一系統結構圖
在應用場景二中,由虛擬仿真系統中模擬的虛擬外設下發指令給被控對象模型,待被控對象接收到命令后,再輸出數據給圖形化界面測試系統,用于數據記錄與分析;而后,經過實測的序列以激勵的形式回讀給虛擬目標機之中,完成虛擬仿真系統與外部系統的閉環聯合調試;其中所有的功能組件由封裝的數字軟總線進行交互與調度,最終實現基于虛擬仿真系統的全數字化仿真驗證,適合于在系統研制后期對系統得出的實驗結果進行分析與驗證,以及在系統交付后的維護與調優。虛擬仿真系統的應用場景二的系統結構如圖12所示。

圖12 場景二系統結構圖
本文設計的虛擬仿真系統適用于很多領域,以在航天領域的建設為例,被用于面向衛星任務地面操控系統的聯調聯試與任務仿真訓練,配合總體地面單位完成衛星發射任務,以及在各分系統之間的集成與測試、陣地部署,與外部系統集成聯試等演練任務中起到了重要的作用。
虛擬仿真系統對衛星的具體應用方面,首先對星載計算機做數字化處理,搭建衛星的虛擬化運行環境,然后模擬處理器模塊、內存空間、定時器、中斷、IO接口等硬件設備以及掛載的單機設備[18],最后在搭建好星載設備運行所需要的數字化仿真環境后,加載超實時仿真系統,使用固定增量推進法快速推動星上時間與動力學模型時間,使得軌道動力學的推進步長加快達到快速推進目的;待系統推進到設定的時間后,同時更新星上系統鐘、動力學模型系統鐘、軌道信息、姿態信息等到最新狀態,從而實現虛擬衛星的快速連續運行,達到幾十倍于物理測試環境下的快速測試。做到提前測試衛星姿態與軌道的運行狀態,以及對衛星的發射、軌控等策略的運用、分析和預案進行有效性與合理性的保障,降低了任務的風險,有效保證了任務的圓滿成功。
虛實結合技術是一種將實物設備與數字模型進行聯合試驗的系統及方法,以驗證數字模型的正確性;常應用于武器裝備的性能試驗、故障排查等方面[19]。
本文通過虛實結合技術將虛擬仿真系統中模擬的處理器和周邊設備的性能指標、與動力學模型交互的數據、通過總線進行傳輸的數據以及在超實時仿真倍數下進行的快速仿真結果進行準確性驗證。進行數據驗證時,把超實時仿真軟件的仿真速率調整至一倍速,運行測試程序,再把測試程序運行在物理設備上,通過在某個進程中設置相同的斷點,監控兩種開發環境中讀取到的寄存器和內存的值,比較兩者數據可以得出虛擬仿真系統中的仿真結果與真實實物中得出實驗結果一致,監控的結果如表2所示。

表2 虛擬仿真系統與真實目標機實驗結果對比
為了確保數據驗證的可靠性,首先要保證虛擬設備模擬器與真實設備協同時的實時性;在與真實時間基準相同的環境下進行單倍數指令采集,尤其是仿真外部激勵行為,通過虛擬CPU執行cycle數的方式確保虛擬設備模擬器與真實設備協同時的實時性[20]。比如外部GPS秒脈沖信號仿真、周期定時、外部中斷觸發等,在結合宿主機本身資源的情況下,諸如bios時鐘進行輔助精確定時等。
在通過虛擬總線進行數據傳輸時,考慮到設計的通用化,將主要體現在對于各種類型通信板卡的統型設計,其核心為虛擬目標機與板卡通過集成API接口調用的通用化設計,結合可配置計算機預留的多種擴展接口,根據實際資源情況進行靈活搭配,實現虛實結合完成系統驗證。
其中模擬1553B總線的標準內部處理邏輯時,通過Alta 1553硬件驅動板提供的二次開發API接口實現與真實1553B節點的數據傳輸,從而實現虛實結合的半實物仿真環境的部署,核心是通過調用1553板卡驅動程序,完成虛擬環境和真實設備之間的橋接。
虛擬仿真系統的運行環境在X86主機下,可以同時仿真出搭載不同處理器的設備;其每秒仿真的指令條數比真實物理環境下快很多倍,也可以使超實時倍數設置成等比模式,達到與實際硬件平臺相同節拍速度。根據第二章給出的論證,在保證數據真實性的前提下,本文所設計虛擬仿真系統的超實時倍數可以達到實時運行速率的20倍以上。
目前,大部分虛擬仿真系統在仿制處理器指令時會選擇解釋執行模式,即實時運行;它的執行速率較慢,執行流程分為取址、譯碼、執行三部分[21]。
而本次虛擬仿真系統選擇的是動態編譯模式,即超實時運行,它在虛擬仿真系統中引入編譯器技術中的動態二進制編譯機制;其運行速率較快,可以大幅度提高仿真速度[22]。動態編譯執行流程分為6步:1)根據PC地址從內存中取出一組目標指令;2)將該組目標指令翻譯成中間語言IR指令;3)使用底層虛擬機(LLVM)編譯和優化技術生成X86本地代碼;4)把編譯過的指令塊放入Cache中;5)執行該指令塊代碼,調用處理器運行函數;6)從Cache中查找下一個指令塊,若找到則繼續執行,沒有則繼續從內存中取出一組目標指令,重復上述操作[23]。執行流程如圖13所示。

圖13 動態編譯執行流程
該平臺可以對接入分布式總線的仿真實體引入同步命令及應答機制,實現仿真計算機與模型之間的運行時序與真實目標機中運行一致,使誤差小于一個節拍。在保證誤差范圍內,不僅可以通過改善硬件設備環境的性能,提升虛擬仿真系統的超實時倍數,還可以通過增加代碼的魯棒性等方式,具體方法介紹如下:
1)運用動態二進制翻譯技術:以目標平臺的二進制碼為輸入,通過調用LLVM的API接口,把目標平臺二進制碼翻譯成LLVM中間代碼。整個翻譯過程中將中間代碼拆分成Tag和Translate兩個部分并進行兩遍掃描。第一遍是預先分析代碼的性質,并把每一條目標代碼指令的信息保存到一個Tag表中;第二遍掃描的時候對代碼進行翻譯[23]。這種掃描過程為真正的翻譯提供了必要的信息,簡化了系統的復雜度,從而把一個復雜的系統拆分為兩個相對簡單的系統,一定程度上降低了開發難度和風險;
2)快速內存訪問:內存訪問的快慢會影響整個系統的速度;對內存的操作可以通過使用LLVM中間語言實現,實現方法類似于對數組的操作;首先通過指針計算語句計算一段地址的數據在模擬內存中的偏移量,然后計算讀寫地址在模擬內存中的偏移量,通過load/store指令讀寫,從而在一定程度上簡化了內存操作的過程。該模式下的運行時間比外調C函數庫的方式實現內存訪問速度提高了數倍以上;
3)在多個線程訪問同一個全局資源時使用原子操作,能夠確保所有線程不會在同一時間內訪問相同的資源;也就確保了在同一時刻只有唯一的線程對這個資源進行訪問[24]。由于原子操作更加接近底層,因此相比于以互斥對象對共享資源的訪問的保護,具有更高的效率;
4)在開發虛擬仿真系統和外設模型時,盡量使用位運算代替乘法和除法運算;對于存取函數以及其它函數體比較短或者性能關鍵的函數,盡可能多的使用內聯函數,使目標代碼更加高效;
通過上述設計方案及改進方法,不僅完善了虛擬仿真系統的實用性、標準性、真實性及高效率地提升仿真結果,還提升了虛擬仿真系統測試時的超實時倍數,極大提高了對數字裝備的準確結果輸出及快速測試,這也是本文虛擬仿真系統的一個重要功能。
本文以虛擬仿真系統的開發過程為研究對象,基于數字孿生技術添加了數字軟總線、在線調試功能以及故障模擬與注入等功能,為嵌入式軟件開發提供一個全生命周期的純數字系統開發和驗證平臺,適用于PowerPC等通用處理器的系統之中,可以應用于航空航天領域等諸多領域之中。不同于目前常用的全物理環境和半物理仿真環境,基于該平臺可以很好地解決現有嵌入式軟件開發及驗證過程中存在的問題,如各種軍事裝備在投入使用前進行測試、演習與故障排除時,提前判別流程是否合理;出差錯時,如何去補救;如何尋找合適的解決方案以及備用方案等問題。不僅如此,本文還引入了超實時仿真系統的概念,以及提升超時倍數的方法,用于減少對目標計算機測試環節的依賴,增大測試效率,從而大大縮短開發測試的周期,可以應用到軟件研制的各個階段,實現軟硬件的平行開發,具有硬件系統不具備的諸多優勢,是硬件開發、測試環節的有效補充。