亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于SPARC V8的星載嵌入式軟件全數(shù)字仿真平臺設計與實現(xiàn)

        2020-02-27 12:33:42李瑞軍范延芳
        計算機測量與控制 2020年1期
        關鍵詞:外設管理器模擬器

        張 濤,李瑞軍,范延芳

        (北京空間飛行器總體設計部,北京 100094)

        0 引言

        近年來,隨著航天技術(shù)的快速發(fā)展,星載嵌入式軟件在型號中發(fā)揮著越來越重要的作用??臻g站、深空探測等為代表的復雜航天器呈現(xiàn)出智能化、網(wǎng)絡化的特點,越來越多的功能將通過軟件實現(xiàn),信息流、控制流交互復雜,任務、中斷、IO等時序要求及其嚴苛。面對軟件研制任務激增、研制周期縮短的挑戰(zhàn)和軟件高可靠性和安全性的需求,傳統(tǒng)的基于硬件的星載嵌入式軟件測試已逐漸不能適應新形勢的要求,存在以下問題:

        1)硬件設備定制開發(fā),致使型號研制成本高;軟件測試設備都是根據(jù)各個型號定制研發(fā)的,不同系列型號間難以復用;同時由于型號內(nèi)許多人員都有需求,重點型號和領域有時還需要配備多套設備,致使型號研制的成本非常高。

        2)星載嵌入式軟件測試依賴于硬件研制進度,無法實現(xiàn)軟硬件同步開發(fā)和早期驗證。航天器星載軟件測試嚴重受制于航天器單機設備和地面測試設備的研制,測試啟動較晚,導致許多接口和時序問題層層闖關,直到分系統(tǒng)級或者整星級測試的最后階段才暴露出來,對型號研制進度產(chǎn)生極大影響。

        3)傳統(tǒng)的基于硬件的軟件測試環(huán)境難以對運行狀態(tài)進行控制和監(jiān)視、故障注入困難,無法實現(xiàn)對各種飛行工況和異常工況的測試覆蓋。

        全數(shù)字仿真平臺針對真實硬件設備生產(chǎn)設計周期長,成本昂貴、使用資源緊張、狀態(tài)監(jiān)視和故障注入困難等缺陷,利用軟件仿真技術(shù),對真實的星載計算機進行虛擬化建模,從而逼真的模擬硬件目標系統(tǒng)[1]。原來運行于星載計算機的嵌入式軟件,可以不加修改直接在虛擬平臺上運行,并且其運行的動態(tài)特性與真實目標機上一致。利用全數(shù)字仿真平臺,可以在不具備目標硬件的情況下,進行星載嵌入式軟件開發(fā)、調(diào)試、測試和驗證。

        SPARC V8(scalable processor ARChitecture version 8)是采用精簡指令集的CPU指令集架構(gòu),其設計的指令集能提高執(zhí)行的效率以及優(yōu)化編譯器生成的代碼,從而使代碼執(zhí)行起來更為高效、快速[2]?;赟PARC V8架構(gòu)的處理器被廣泛應用于航天領域。運行于SPARC V8處理器的星載軟件在實時嵌入式操作系統(tǒng)的支持下,完成衛(wèi)星遙測、遙控、總線通信、姿軌控和自主管理等功能。本文提出了一種基于SPARC V8的全數(shù)字仿真平臺設計和實現(xiàn)方法, 能夠在不具備硬件環(huán)境的情況下,對星載嵌入式軟件進行調(diào)試、測試和仿真驗證。

        1 全數(shù)字仿真平臺架構(gòu)設計

        全數(shù)字仿真平臺架構(gòu)如圖1所示。主要包括ECLIPSE集成開發(fā)環(huán)境、虛擬目標機、虛擬外設模型、設備管理器以及其他輔助工具和配置文件。

        圖1 全數(shù)字仿真平臺架構(gòu)

        集成開發(fā)環(huán)境基于ECLIPSE平臺,結(jié)合CDT(C Developing Toolkit)插件、調(diào)試插件和模擬器插件,結(jié)合編譯器、調(diào)試器等工具,提供了模擬器配置、目標應用工程管理、目標應用源代碼編輯、可配置編譯和快捷調(diào)試、仿真器運行控制等功能。

        底層的虛擬目標機與虛擬外設模型構(gòu)成了功能趨近硬件的虛擬嵌入式硬件模型,提供了目標應用程序的仿真執(zhí)行環(huán)境。虛擬目標機支持SPARC V8 CPU處理器的指令集仿真,同時對CPU寄存器、存儲器、定時器、中斷控制器和串口等內(nèi)部結(jié)構(gòu)進行仿真。虛擬外設模型包括通用外設和用戶自定義外設,通用外設一般包含1553B總線,659總線芯片,用戶自定義外設一般包括遙測、遙控等專用FPGA邏輯芯片。CPU模型還內(nèi)嵌了GDB協(xié)議,與ECLIPSE的CDT插件調(diào)試模塊和目標架構(gòu)的GDB工具組成完整的調(diào)試環(huán)境。

        作為集成開發(fā)環(huán)境與底層模型的適配器,設備管理器收集IDE提供接口、自身提供接口以及虛擬CPU提供接口,向上對IDE提供模擬器控制接口,解析模擬器配置文件;向下可依據(jù)配置信息調(diào)用并管理相應虛擬設備,并為虛擬設備提供統(tǒng)一的模型接口。

        2 虛擬目標機設計與實現(xiàn)

        虛擬目標機是全數(shù)字仿真平臺的核心,為目標程序測試和驗證提供虛擬的硬件平臺。虛擬目標機通常包括SPARC V8 CPU模擬器、存儲器仿真、片上外設如中斷控制器、定時器等模型仿真。

        2.1 SPARC V8指令集模擬器

        SPARC V8 CPU模擬器使用了動態(tài)二進制翻譯器翻譯目標指令到本地X86指令,并在指令執(zhí)行時按照指令的功能操作相應的寄存器和觸發(fā)中斷或異常。

        2.1.1 寄存器模擬

        虛擬CPU內(nèi)核內(nèi)部維持了一個處理器狀態(tài)結(jié)構(gòu)體變量(記為CPUSTAT),成員包括寄存器變量定義和其他輔助變量定義。在虛擬CPU內(nèi)核初始化時保存變量CPUSTAT中各目標寄存器變量的偏移;在目標代碼執(zhí)行開始時將變量CPUSTAT指針存入固定的本地寄存器(記為LRx)中,LRx不會再被用作它途;在需要使用目標寄存器(記為TR)時,以LRx寄存器值為基地址加上保存的目標寄存器的偏移,則獲取目標寄存器在本地內(nèi)存中的地址,就可取得目標寄存器的值或向目標寄存器賦值。

        2.1.2 指令翻譯與執(zhí)行

        虛擬CPU內(nèi)核使用動態(tài)二進制翻譯技術(shù)將SPARC V8的指令翻譯成本地X86指令,包括目標代碼到中間代碼的前端翻譯和中間代碼到本地代碼的后端翻譯兩個翻譯過程,如圖2所示。

        圖2 動態(tài)二進制翻譯執(zhí)行

        動態(tài)二進制翻譯以基本塊為翻譯和執(zhí)行的基本單位,其中基本塊為一段一般以跳轉(zhuǎn)指令為結(jié)尾的一段目標代碼;采用邊翻譯邊執(zhí)行的策略,只有在執(zhí)行時翻譯代碼緩存中未發(fā)現(xiàn)待執(zhí)行基本塊才進行翻譯和緩存;前端翻譯中還進行內(nèi)存管理和異常處理等。

        2.2 片上外設模擬

        2.2.1 存儲器模擬

        存儲器的模擬是將虛擬目標存儲器直接綁定到相同大小的本地內(nèi)存上,虛擬目標機訪問存儲器實際是訪問綁定的本地內(nèi)存區(qū)域。同時,作為采用大端模式的處理器,在訪問存儲器數(shù)據(jù)時需要進行字節(jié)序的調(diào)整。

        2.2.2 中斷模擬

        中斷和陷阱是兩種異常處理機制。陷阱是由與特定指令相關的硬件引起的異常,在引起異常產(chǎn)生的指令運行期間觸發(fā);中斷是由處理器的外部事件產(chǎn)生并在指令執(zhí)行期間發(fā)生。

        對于陷阱的模擬是在相關指令翻譯時插入陷阱條件判斷邏輯,并在執(zhí)行時依條件觸發(fā)陷阱,陷阱觸發(fā)后虛擬CPU內(nèi)核進入異常處理邏輯;對于中斷的模擬是通過置標志位使基本塊退出執(zhí)行,虛擬CPU內(nèi)核進入異常處理邏輯。虛擬CPU內(nèi)核進入異常處理邏輯后,依照硬件邏輯操作相關寄存器并根據(jù)特定的異常向量表完成程序的跳轉(zhuǎn)。

        虛擬中斷控制器在初始化時以內(nèi)存映射MMIO(MEMORY-MAPPED IO)方式映射寄存器到虛擬CPU內(nèi)核地址空間的指定地址區(qū)域,在虛擬CPU內(nèi)核訪問虛擬中斷控制器的寄存器時觸發(fā)相應的寄存器處理邏輯。同時,分配虛擬中斷輸入引腳和中斷輸出引腳,并注冊中斷信號輸入回調(diào)。虛擬中斷輸入引腳根據(jù)硬件中斷引腳連接分別接入虛擬片上外設中斷引腳或虛擬外部中斷引腳,虛擬中斷輸出引腳分別接到虛擬CPU內(nèi)核的中斷引腳,如圖3所示。當中斷輸入信號到來時觸發(fā)注冊的中斷信號輸入回調(diào)函數(shù),根據(jù)寄存器編程配置進行中斷信號選擇輸出到虛擬CPU內(nèi)核。

        圖3 中斷控制器結(jié)構(gòu)示意圖

        2.2.3 定時器模擬

        定時器的寄存器模擬使用虛擬CPU內(nèi)核中的MMIO映射機制實現(xiàn)。當虛擬CPU內(nèi)核訪問到該虛擬定時器的寄存器地址區(qū)域時觸發(fā)MMIO的訪問回調(diào),在回調(diào)函數(shù)中處理寄存器的訪問邏輯。

        定時器的中斷模擬是在虛擬定時器創(chuàng)建時創(chuàng)建一個虛擬中斷引腳,并將其連接到虛擬中斷控制器相應引腳上。當虛擬定時器需要觸發(fā)中斷時,向虛擬中斷引腳設值則會觸發(fā)虛擬中斷控制器的中斷信號輸入回調(diào)函數(shù)。

        定時器的計時功能模擬依靠虛擬CPU內(nèi)核中的精確減計數(shù)器機制實現(xiàn)。虛擬CPU內(nèi)核中維護了一個減計數(shù)器集合,創(chuàng)建或刪除虛擬定時器時會操作該集合增加或刪減。虛擬CPU內(nèi)核中有獨立的線程循環(huán)檢查減計數(shù)器是否計數(shù)到0,到期后則觸發(fā)創(chuàng)建定時器時注冊的回調(diào)函數(shù)。

        2.2.4 串口模擬

        串口的寄存器模擬使用虛擬CPU內(nèi)核中的MMIO映射機制實現(xiàn)。當虛擬CPU內(nèi)核訪問到該虛擬串口的寄存器地址區(qū)域時觸發(fā)MMIO的訪問回調(diào),在回調(diào)函數(shù)中處理寄存器的訪問邏輯。

        串口的中斷模擬是在虛擬串口創(chuàng)建時創(chuàng)建一個虛擬中斷引腳,并將其連接到虛擬中斷控制器相應引腳上。當虛擬串口需要觸發(fā)中斷時,向虛擬中斷引腳設值則會觸發(fā)虛擬中斷控制器的中斷信號輸入回調(diào)函數(shù)。

        串口的數(shù)據(jù)流可以定向到虛端口,也可基于虛擬CPU內(nèi)核提供字符驅(qū)動選擇定向到本地虛擬串口、TCP端口或UDP端口。當數(shù)據(jù)流定向到虛端口時,可以在虛端口的連接端進行數(shù)據(jù)交互;定向到其他本地端口時,可以使用本地輔助工具進行數(shù)據(jù)交互。

        本地端口作為數(shù)據(jù)流傳輸方式時,發(fā)送數(shù)據(jù)通過相應本地端口數(shù)據(jù)發(fā)送接口發(fā)送。當循環(huán)檢查線程檢測到本地端口有數(shù)據(jù)時,會向虛擬串口詢問是否接收數(shù)據(jù),允許后將接收的數(shù)據(jù)返回給虛擬串口,虛擬串口操作相關寄存器并根據(jù)用戶編程配置決定是否向終端控制器投遞中斷信號。

        2.3 CPU內(nèi)核與片上外設通信機制

        對于虛擬CPU內(nèi)核主動要求外設動作的通信,虛擬CPU內(nèi)核訪問外設寄存器時觸發(fā)寄存器上的MMIO回調(diào)函數(shù),在回調(diào)函數(shù)中實現(xiàn)外設的功能。

        對于某些外設事件發(fā)生要通知虛擬CPU內(nèi)核,虛擬CPU內(nèi)核會主動循環(huán)檢查。虛擬CPU內(nèi)核內(nèi)部使用循環(huán)檢查線程來檢查虛擬定時器到期和虛擬串口數(shù)據(jù)到來等事件,檢測到這些事件后通知相關虛擬外設進行相應的處理,如寄存器改變和觸發(fā)中斷等操作。虛擬CPU內(nèi)核通過查詢相關寄存器或響應中斷得知事件源并進行相應處理。

        3 虛擬外設模型設計與實現(xiàn)

        虛擬外設模型用來搭建虛擬目標機的外圍仿真環(huán)境,實現(xiàn)虛擬目標機與外設模型的數(shù)據(jù)交互。為了保證被測軟件的真實性,虛擬外設模型的邏輯功能必須與硬件邏輯功能保持一致:即虛擬外設模型接收到虛擬目標機的輸入輸出請求時,需要根據(jù)硬件邏輯改變自己的狀態(tài)。虛擬外設模型可為虛擬目標機提供輸入激勵,如模擬上行遙控注入,也可以接收虛擬目標機輸出數(shù)據(jù),如接收下行遙測輸出。因此,虛擬外設模型建模是全數(shù)字仿真平臺開發(fā)的一個重要環(huán)節(jié)。

        3.1 虛擬外設模型的通用接口設計

        虛擬外設模型仿真接口作為虛擬目標機的擴展媒介,需要盡可能簡便直觀地將虛擬CPU內(nèi)核與外設模型間的不同操作隔離。模型仿真采用單個函數(shù)以消息類型方式分隔操作,提高接口的擴展性、易使用性,也保證各接口的單一性。

        虛擬外設模型導出函數(shù)接口如下:

        MainProc(MESSAGE Msg, UINT32 uParam)

        其中第一個參數(shù)Msg是消息類型,代表不同的操作,共有以下幾種消息類型:

        1)SETPROPERTY消息用于設備管理器解析模擬器配置文件中的外設模型的屬性;

        2)INIT消息用于設備管理器通知外設模型進行端口創(chuàng)建等初始化操作;

        3)RESET消息用于設備管理器通知外設模型復位操作;

        4)READ/WRITE消息用于設備管理器通知外設模型虛擬CPU內(nèi)核正在進行uParam參數(shù)指定的IO讀/寫操作;

        5)PINCONNECT消息用于設備管理器通知外設模型虛擬引腳有電平信號輸入;

        6)VWRITE消息用于通知外設模型大量邏輯數(shù)據(jù)輸入;

        7)CLOCK消息用于通知外設模型uParam指定的時鐘定時到期;

        8)TERMINATE消息用于通知外設模型虛擬目標機即將終止,進行終止前的資源釋放等操作。

        3.2 虛擬外設模型端口設計

        虛擬外設模型端口是全數(shù)字仿真系統(tǒng)中CPU內(nèi)核與其他設備模型通信以及模型間通信的接口,包括IO端口、虛端口和PIN引腳。

        3.2.1 IO端口設計

        IO端口是虛擬外設模型與虛擬CPU內(nèi)核間的通信媒介。IO端口的設計包括3個部分:

        1)IO端口初始化。在模型初始化時,IO端口初始化完成端口ID、名稱和類型初始化。

        2)IO端口配置。設備管理器會解析模擬器配置文件中IO端口配置,創(chuàng)建MMIO并在訪問回調(diào)函數(shù)中觸發(fā)READ、WRITE消息。IO端口配置默認寬度為4字節(jié),可配置其他尺寸表示寄存器區(qū)域。

        3)IO端口訪問。虛擬CPU內(nèi)核在訪問IO端口所處地址區(qū)域時會觸發(fā)READ、WRITE消息,在消息回調(diào)中進行IO的邏輯處理。

        3.2.2 虛端口設計

        虛端口是設備模型間大量數(shù)據(jù)的通信媒介。虛端口的設計包括3個部分:

        1)虛端口初始化。在模型初始化時,虛端口初始化完成端口ID、名稱和類型初始化。

        2)虛端口連接配置。設備管理器會解析模擬器配置文件中虛端口連接配置,保存虛端口連接關系。虛端口支持一對多連接配置。

        3)虛端口寫操作。在設備模型進行虛端口寫操作時,設備管理器會依據(jù)虛端口連接關系向所有連接端虛端口寫入數(shù)據(jù)。

        3.2.3 PIN引腳連接設計

        引腳是設備模型間電平信號的通信媒介。引腳的設計包括3個部分:

        1)引腳初始化。在模型初始化時,引腳初始化完成ID、名稱和類型初始化。

        2)引腳連接配置。設備管理器會解析模擬器配置文件中引腳連接配置,保存引腳連接關系。引腳支持一對多連接配置。

        3)引腳寫操作。在設備模型進行引腳寫操作時,設備管理器會依據(jù)引腳連接關系向所有連接端引腳寫入電平信號。

        4 設備管理器設計和平臺時序調(diào)度

        當全數(shù)字仿真平臺啟動時,設備管理器會解析模擬器配置文件,根據(jù)解析的信息啟動相應的模擬器并執(zhí)行指定的目標應用。設備管理器在模擬器啟動時的主要工作如下:

        1)解析全數(shù)字仿真平臺構(gòu)建所需的模擬設備,加載相應設備DLL。

        2)解析模型內(nèi)存、IO、虛端口、引腳配置,保存所有IO、虛端口和引腳連接關系。

        3)以RESET消息復位CPU及各虛擬外設。

        全數(shù)字仿真平臺啟動后,設備管理器在模擬器運行中的主要工作如下:

        1)在虛擬CPU訪問IO端口時,設備管理器創(chuàng)建IO端口時的回調(diào)函數(shù)會觸發(fā),在回調(diào)函數(shù)中向IO端口所屬設別發(fā)送READ/WRITE消息。

        2)在虛擬CPU或外設模型拉動引腳時,設備管理器查找引腳連接關系向連接端設備引腳發(fā)送PINCONNECT消息。

        3)在虛擬CPU或外設模型寫虛端口時,設備管理器查找虛端口連接關系向連接端虛端口發(fā)送VWRITE消息。

        4)當虛擬外設模型創(chuàng)建的定時器到期時,設備管理器在定時器到期回調(diào)函數(shù)中以CLOCK消息通知所屬設備到期定時器ID。

        為了盡可能保證虛擬目標機、虛擬外設間時序統(tǒng)一并與真實硬件時序保持一致,虛擬CPU內(nèi)核時鐘使用指令統(tǒng)計周期作為基礎。虛擬CPU核在翻譯指令時一般以跳轉(zhuǎn)指令為結(jié)尾作為一個基本塊,在每個基本塊翻譯時將基本塊內(nèi)所有指令的執(zhí)行周期、取指周期和其他周期求和計算出基本塊的總時鐘周期并保存。在目標代碼執(zhí)行時,對所有執(zhí)行的基本塊進行時鐘周期求和,再結(jié)合CPU內(nèi)核的主頻即得到所有執(zhí)行的目標代碼耗時,即得到模擬時間。

        虛擬CPU核內(nèi)部的減計數(shù)器功能就是基于模擬時間進行計數(shù)的,減計數(shù)器Tick為1ns。在減計數(shù)器創(chuàng)建時,根據(jù)目標計數(shù)值和當前模擬時間設置到期計數(shù)值,并安裝計數(shù)到期回調(diào)函數(shù)。虛擬CPU核使用循環(huán)檢查方式檢查當前模擬時間是否達到減計數(shù)器到期計數(shù)值,達到后觸發(fā)到期回調(diào)函數(shù)進行到期邏輯處理。如果減計數(shù)器是單次計時則到期后就刪除,否則減計數(shù)器的計數(shù)值復位并重新開始計數(shù)。仿真平臺內(nèi)部虛擬設備的定時功能均使用減計數(shù)器實現(xiàn),這就保證了所有虛擬設備的時間是統(tǒng)一的。

        5 應用實例

        本文設計與實現(xiàn)的全數(shù)字仿真平臺已在航天器多個型號的星載軟件測試中得到應用,該平臺可作為SPARC V8處理器的模擬運行平臺,支持RTEMS和VxWorks操作系統(tǒng),同時提供良好的人機界面,便于用戶快速搭建虛擬目標機和虛擬外設環(huán)境,進行星載嵌入式軟件運行仿真、調(diào)試驗證等工作。

        通過測試程序在硬件實物上運行結(jié)果與全數(shù)字仿真平臺上的運行結(jié)果,遙測、遙控、總線通信等功能均正確仿真,表1為某個進程相同斷點下目標機與全數(shù)字仿真環(huán)境寄存器和內(nèi)存的值,兩者保持一致,全數(shù)字仿真平臺運行結(jié)果正確。

        6 結(jié)束語

        本文設計并實現(xiàn)了一個基于SPARC V8的星載嵌入式軟件全數(shù)字仿真平臺,該平臺與基于硬件的測試平臺相比具有可重用性強、可快速搭建、成本低廉、高可控性、調(diào)試和測試手段豐富、支持故障注入等優(yōu)點。該全數(shù)字仿真平臺已在星載嵌入式軟件型號研制工作中得到了應用,可大大提高軟件的可靠性和安全性,從而保證型號軟件的質(zhì)量,推動航天事業(yè)的發(fā)展。

        表1 全數(shù)字仿真與目標機運行結(jié)果比對

        猜你喜歡
        外設管理器模擬器
        了不起的安檢模擬器
        盲盒模擬器
        劃船模擬器
        應急狀態(tài)啟動磁盤管理器
        Windows文件緩沖處理技術(shù)概述
        動態(tài)飛行模擬器及其發(fā)展概述
        高集成度2.5A備份電源管理器簡化鋰離子電池備份系統(tǒng)
        快速導出QQ群消息
        電腦迷(2014年2期)2014-04-29 19:21:13
        Microchip推出具備雙ADC外設的全新器件,擴展其低成本8位PIC?單片機產(chǎn)品線
        貼身呵護 必不可少的PSP外設
        把女邻居弄到潮喷的性经历 | 无码aⅴ在线观看| 极品少妇被猛的白浆直喷白浆| 婷婷丁香社区| 天堂Av无码Av一区二区三区| 久久精品av在线视频| 亚洲日韩小电影在线观看| 野花社区视频www官网| 亚洲精品夜夜夜| 丁香九月综合激情| 亚洲成人精品在线一区二区 | 国产精成人品| 中文字幕无码免费久久99| 亚洲AV秘 片一区二区三区| 亚洲国产av一区二区不卡| 国产成人av乱码在线观看| 日韩精品无码一区二区三区视频| 亚洲乱在线播放| 精品国产麻豆免费人成网站| 又黄又刺激的网站久久| 天天碰免费上传视频| 狠狠色婷婷久久一区二区| 老汉tv永久视频福利在线观看| 成人免费播放片高清在线观看| 亚洲精品国产电影| 亚洲精品无码久久久久| 色婷婷狠狠97成为人免费| 少妇下面好紧好多水真爽| 四虎影视成人永久免费观看视频| 中文字幕在线免费| 日韩十八禁在线观看视频| 国产丝袜长腿美臀在线观看| 国内精品伊人久久久久网站| 久久青青热| 久久亚洲aⅴ精品网站婷婷| 一二三四在线观看视频韩国| 色妞色视频一区二区三区四区| 中文字幕国产91| 国产在线视频一区二区三| 日韩av午夜在线观看| 美女胸又www又黄的网站 |