計(jì)算機(jī)數(shù)字化仿真測(cè)試設(shè)計(jì)
時(shí)間:2022-06-04 05:53:00
導(dǎo)語(yǔ):計(jì)算機(jī)數(shù)字化仿真測(cè)試設(shè)計(jì)一文來(lái)源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。
1概述
目前,嵌入式計(jì)算機(jī)系統(tǒng)向著網(wǎng)絡(luò)化、平臺(tái)化和智能化發(fā)展,原由多個(gè)計(jì)算機(jī)分別完成的任務(wù)功能集由單一綜合化、集成化的計(jì)算機(jī)系統(tǒng)來(lái)完成[1]。原各計(jì)算機(jī)完成的使命任務(wù)由綜合化計(jì)算機(jī)上相應(yīng)的硬件模塊和軟件來(lái)完成,模塊之間的通信由綜合化計(jì)算機(jī)的高速總線來(lái)完成,而且,許多模塊還包括FPGA、DSP等。該類嵌入式計(jì)算機(jī)系統(tǒng)的大多數(shù)為強(qiáng)實(shí)時(shí)、具有關(guān)鍵或重要安全的等級(jí),基于分區(qū)高安全可靠操作系統(tǒng)來(lái)開(kāi)發(fā),軟件固化或動(dòng)態(tài)加載到相應(yīng)的模塊上,基于總線消息驅(qū)動(dòng)的執(zhí)行。由于綜合化嵌入式計(jì)算機(jī)系統(tǒng)各硬件模塊上的軟件基于高速總線自動(dòng)交互以及各模塊軟件間的運(yùn)行時(shí)序復(fù)雜,傳統(tǒng)的測(cè)試方法已難以確保各模塊軟件間的交互和時(shí)序、功能協(xié)調(diào)性、一致性的驗(yàn)證,各種安全型故障模式難以實(shí)施充分性的測(cè)試,軟件安全性測(cè)試要求的路徑測(cè)試難以完成。為了確保綜合化計(jì)算機(jī)系統(tǒng)的軟件安全性、可靠性、互操作性和功能處理的正確性,本文提出相應(yīng)的數(shù)字化仿真測(cè)試系統(tǒng),以保證測(cè)試的充分性。
2系統(tǒng)框架
數(shù)字化仿真測(cè)試系統(tǒng)由嵌入式計(jì)算機(jī)數(shù)字化仿真系統(tǒng)、仿真測(cè)試支撐框架、仿真測(cè)試控制臺(tái)及系統(tǒng)數(shù)據(jù)庫(kù)組成,其系統(tǒng)框架如圖1所示。其中,嵌入式計(jì)算機(jī)數(shù)字化仿真系統(tǒng)包括嵌入式系統(tǒng)硬件結(jié)構(gòu)仿真、嵌入式仿真系統(tǒng)運(yùn)行控制及嵌入式操作系統(tǒng)[2]。嵌入式系統(tǒng)硬件結(jié)構(gòu)仿真以構(gòu)件技術(shù)模擬硬件系統(tǒng)中的基本芯片單元,包括CPU、寄存器、存儲(chǔ)器、定時(shí)器等,組裝這些仿真構(gòu)件形成有具體功能的模塊;嵌入式仿真系統(tǒng)運(yùn)行控制模塊監(jiān)控所有的仿真構(gòu)件、構(gòu)件接口及各個(gè)總線,動(dòng)態(tài)維護(hù)整個(gè)系統(tǒng)的運(yùn)行,實(shí)現(xiàn)信號(hào)路由,時(shí)鐘管理及仿真構(gòu)件的管理。通過(guò)仿真構(gòu)件、仿真系統(tǒng)運(yùn)行控制模塊及嵌入式操作系統(tǒng)這個(gè)3個(gè)部分搭建起與真實(shí)硬件系統(tǒng)功能相同的仿真系統(tǒng)。下文以此測(cè)試框架為基礎(chǔ),重點(diǎn)研究數(shù)字化仿真運(yùn)行環(huán)境相關(guān)模塊的設(shè)計(jì)。
3數(shù)字化仿真環(huán)境的設(shè)計(jì)
3.1體系結(jié)構(gòu)
數(shù)字化仿真環(huán)境由仿真運(yùn)行控制器、仿真環(huán)境配置器、時(shí)鐘管理模塊、信號(hào)路由模塊及仿真構(gòu)件對(duì)象集組成,如圖2所示。圖2數(shù)字化仿真系統(tǒng)體系結(jié)構(gòu)仿真環(huán)境啟動(dòng)后,仿真控制模塊根據(jù)仿真環(huán)境配置器的配置結(jié)果,加載構(gòu)件的DLL庫(kù)文件,創(chuàng)建這些即將在仿真環(huán)境中運(yùn)行的對(duì)象;同時(shí)實(shí)例化信號(hào)路由器對(duì)象及仿真時(shí)鐘管理對(duì)象,信號(hào)路由器對(duì)象維護(hù)所有構(gòu)件的引腳連接關(guān)系,動(dòng)態(tài)地管理信號(hào)的傳輸。仿真時(shí)鐘管理對(duì)象以仿真構(gòu)件中最高的時(shí)鐘精度為基本的仿真時(shí)鐘周期,對(duì)所有監(jiān)控的構(gòu)件進(jìn)行時(shí)鐘同步。仿真控制模塊以線程的方式啟動(dòng)構(gòu)件對(duì)象、時(shí)鐘管理對(duì)象及信號(hào)路由對(duì)象,使它們可以并發(fā)運(yùn)行。
3.2芯片級(jí)仿真
嵌入式硬件系統(tǒng)在靜態(tài)結(jié)構(gòu)上由連接和邏輯功能部件組成[3]。邏輯功能部件包括微控制器芯片、存儲(chǔ)器芯片、AD轉(zhuǎn)換器及各種傳感器,這些部件功能獨(dú)立,運(yùn)行時(shí)相互間的影響較小。因此,可以將硬件芯片設(shè)計(jì)為低耦合、高內(nèi)聚的仿真構(gòu)件。仿真構(gòu)件是數(shù)字化仿真系統(tǒng)的基礎(chǔ),對(duì)整個(gè)系統(tǒng)的性能及擴(kuò)展性影響較大。因此,采用構(gòu)件化的技術(shù)實(shí)現(xiàn),便于用戶對(duì)構(gòu)件庫(kù)的擴(kuò)充并且增加了仿真構(gòu)件的復(fù)用性。仿真構(gòu)件在邏輯結(jié)構(gòu)上可以劃分為屬性集合功能集。屬性集為芯片的GUI特性以及芯片的引腳特性。GUI特性用于支持仿真構(gòu)件的可視化及模塊化配置,引腳特性描述芯片的各引腳傳輸信號(hào)的類型。具有模擬和數(shù)字2種。功能集是對(duì)芯片的邏輯功能的仿真實(shí)現(xiàn),這些功能的運(yùn)行會(huì)對(duì)仿真構(gòu)件的GUI特性及芯片引腳特性做出相應(yīng)的改變。
3.3模塊級(jí)仿真
在芯片級(jí)仿真的基礎(chǔ)上,產(chǎn)生了用于搭建虛擬系統(tǒng)的各種仿真構(gòu)件,包括微控制器構(gòu)件、存儲(chǔ)器構(gòu)件、寄存器構(gòu)件及串口通信構(gòu)件等。而嵌入式是硬件系統(tǒng)由各個(gè)模塊組成,因此需要對(duì)仿真構(gòu)件進(jìn)行模塊化配置。本文設(shè)計(jì)了仿真環(huán)境配置器用于進(jìn)行仿真構(gòu)件的模塊化配置,生成模塊化的虛擬系統(tǒng)。仿真環(huán)境配置器圖形配置模塊和環(huán)境配置模塊2個(gè)部分組成,如圖3所示。其中,圖形配置模塊為用戶提供可視化的仿真構(gòu)件配置途徑;環(huán)境配置模塊生成模塊化的配置文件,便于仿真環(huán)境動(dòng)態(tài)運(yùn)行時(shí),對(duì)仿真構(gòu)件的調(diào)度與配置。圖3仿真環(huán)境配置器結(jié)構(gòu)用戶在進(jìn)行虛擬系統(tǒng)的模塊化配置時(shí),根據(jù)目標(biāo)硬件系統(tǒng)的藍(lán)圖,在仿真構(gòu)件庫(kù)中選擇對(duì)應(yīng)的仿真構(gòu)件,將其拖至配置區(qū)。在配置區(qū)可以獲取構(gòu)件的基本信息,并根據(jù)設(shè)計(jì)需求,修改構(gòu)件的部分外部特性及電氣屬性,得到與真實(shí)目標(biāo)系統(tǒng)中硬件部件一致的仿真構(gòu)件。得到需要的所有仿真構(gòu)件后,可以用拖放的方式改變構(gòu)件的圖形外觀大小及占用區(qū)域,使它們能合理的分布在配置區(qū)中。然后根據(jù)設(shè)計(jì)需求連接構(gòu)件的引腳,搭建起數(shù)字化的目標(biāo)系統(tǒng)硬件仿真平臺(tái)。設(shè)計(jì)中采用事件驅(qū)動(dòng)的方式,驅(qū)動(dòng)配置器的運(yùn)行,實(shí)現(xiàn)系統(tǒng)的配置功能,如圖4所示。其中,箭頭代表事件。
3.4仿真運(yùn)行控制
仿真運(yùn)行控制器是數(shù)字化仿真系統(tǒng)的核心部分,其性能決定了數(shù)字化仿真系統(tǒng)與真實(shí)硬件系統(tǒng)的逼真程度。仿真運(yùn)行控制器協(xié)調(diào)仿真構(gòu)件集的運(yùn)行;根據(jù)用戶的配置結(jié)果,在宿主機(jī)操作系統(tǒng)上對(duì)硬件系統(tǒng)進(jìn)行虛擬化;為仿真環(huán)境中各模塊的運(yùn)行提供仿真時(shí)鐘,保證運(yùn)行時(shí)序的正確;另外仿真運(yùn)行控制器為調(diào)試工具及測(cè)試工具與仿真硬件系統(tǒng)的交互提供支持。其體系結(jié)構(gòu)如圖5所示。仿真運(yùn)行控制器信號(hào)路由模塊仿真控制模塊仿真構(gòu)件對(duì)象時(shí)鐘管理模塊工具對(duì)象圖5仿真運(yùn)行控制器體系結(jié)構(gòu)仿真環(huán)境啟動(dòng)后,仿真運(yùn)行控制器創(chuàng)建運(yùn)行控制器對(duì)象和仿真環(huán)境配置器對(duì)象。依次加載工具、構(gòu)件的DLL庫(kù)文件,創(chuàng)建這些即將在仿真環(huán)境中運(yùn)行的對(duì)象。然后實(shí)例化維護(hù)仿真時(shí)鐘的時(shí)鐘管理對(duì)象及維護(hù)信號(hào)傳輸?shù)男盘?hào)路由對(duì)象,使它為環(huán)境運(yùn)行提供服務(wù)。接著以線程的形式啟動(dòng)工具、仿真構(gòu)件、時(shí)鐘管理對(duì)象及信號(hào)路由器對(duì)象,進(jìn)入它們的主工作流程。仿真運(yùn)行控制器的設(shè)計(jì)采用面向?qū)ο蟮木幊趟枷耄泄δ芏加蓪?duì)象完成,每個(gè)模塊對(duì)應(yīng)一個(gè)主對(duì)象,只能通過(guò)對(duì)象對(duì)外輸出的方法訪問(wèn)模塊的屬性。控制模塊是仿真運(yùn)行控制器的主體,以對(duì)象形式管理內(nèi)部屬性和方法,但它主要操作外部對(duì)象獲取信息或控制其運(yùn)行,這些部分無(wú)法直接訪問(wèn)或操作它,只有在外部啟動(dòng)仿真運(yùn)行環(huán)境時(shí)在主線程中創(chuàng)建和實(shí)例化。
3.5仿真時(shí)鐘的實(shí)現(xiàn)
虛擬的仿真系統(tǒng)是基于仿真構(gòu)件的集合,構(gòu)件采用消息驅(qū)動(dòng)的方式運(yùn)行,為了保證系統(tǒng)運(yùn)行時(shí)序的正確性,需要提供時(shí)鐘同步機(jī)制[4]。本文設(shè)計(jì)時(shí)鐘管理模塊,為仿真運(yùn)行環(huán)境中的各個(gè)構(gòu)件提供仿真時(shí)鐘,保證時(shí)序的正確性。仿真時(shí)鐘的一個(gè)tick設(shè)定為仿真環(huán)境中最小的時(shí)鐘周期。仿真運(yùn)行開(kāi)始,時(shí)鐘管理模塊向所有監(jiān)控的構(gòu)件傳輸仿真時(shí)鐘t0,各個(gè)構(gòu)件接收到時(shí)鐘t0后啟動(dòng)構(gòu)件運(yùn)行單元,執(zhí)行一個(gè)時(shí)鐘周期的任務(wù),任務(wù)完成后通知時(shí)鐘管理模塊;時(shí)鐘管理模塊接收到所有監(jiān)控的構(gòu)件任務(wù)完成消息后繼續(xù)傳輸仿真時(shí)鐘t1。整個(gè)虛擬的仿真環(huán)境以此方式順序執(zhí)行。另外,時(shí)鐘管理模塊要能夠?yàn)橄到y(tǒng)其他部件提供定時(shí)功能。為了保證系統(tǒng)的效率,采用如下所述的Δ時(shí)間鏈算法:要提高查找效率需要良好的數(shù)據(jù)結(jié)構(gòu)支持,算法中采用散列表來(lái)記錄所有的構(gòu)件的定時(shí)請(qǐng)求及定時(shí)到達(dá)請(qǐng)求,如圖6所示。NULL指向定時(shí)消息列表NULL指向定時(shí)消息列表指向定時(shí)消息列表指向定時(shí)消息列表NULLNULL散列基倍數(shù)構(gòu)件ID線程ID定時(shí)器IDNEXT散列基倍數(shù)構(gòu)件ID線程ID定時(shí)器IDNULL散列指針圖6定時(shí)消息散列表散列表的主鏈為循環(huán)鏈表,其每個(gè)節(jié)點(diǎn)可以掛接子鏈表,用于記錄定時(shí)請(qǐng)求時(shí)刻同時(shí)到達(dá)的構(gòu)件信息;主鏈表的長(zhǎng)度為散列基數(shù),當(dāng)定時(shí)請(qǐng)求時(shí)間較長(zhǎng),超出散列基數(shù)時(shí),則將其換算成散列基數(shù)的倍數(shù)與余數(shù)的和,倍數(shù)記錄在鏈表節(jié)點(diǎn)中,按照余數(shù)將鏈表節(jié)點(diǎn)插入到對(duì)應(yīng)的子鏈表中。這樣所有的定時(shí)請(qǐng)求都可以記錄在循環(huán)散列表中,處理定時(shí)請(qǐng)求的操作即為循環(huán)往復(fù)地訪問(wèn)散列表,每次循環(huán)中,將子鏈表節(jié)點(diǎn)中的倍數(shù)遞減,若倍數(shù)遞減至0,則對(duì)應(yīng)的定時(shí)時(shí)刻到達(dá),通知相應(yīng)的構(gòu)件。具體表述如下(為便于描述,使用了部分符號(hào)):Ticks指定時(shí)時(shí)間的長(zhǎng)度;BaseSum代表散列基數(shù);MultipleSum是散列基數(shù)的倍數(shù);ComplimentSum代表在當(dāng)前循環(huán)中時(shí)鐘還要計(jì)數(shù)多少刻度才觸發(fā)該定時(shí)事件;指針TimerInfPointer指向當(dāng)前待喚醒的定時(shí)消息列表。若新定時(shí)請(qǐng)求到達(dá),時(shí)鐘管理模塊記錄構(gòu)件的基本信息,然后計(jì)算其在散列表中的位置,計(jì)算過(guò)程為:MultipleSum=(Ticks+TimerInfPointer)/BaseSumComplimentSum=(Ticks+TimerInfPointer)modBaseSum按ComplimentSum將此節(jié)點(diǎn)插入到對(duì)應(yīng)的子鏈表中,子鏈表中的各節(jié)點(diǎn)按照其MultipleSum的值進(jìn)行排序。仿真時(shí)鐘每計(jì)數(shù)一次,則檢查當(dāng)前散列指針指向的子鏈表,子鏈表節(jié)點(diǎn)中的MultipleSum為0,則定時(shí)時(shí)刻到達(dá),通知相應(yīng)的構(gòu)件,然后將該子鏈表中剩余節(jié)點(diǎn)的MultipleSum減1,將散列指針TimerInfPointer移向下一個(gè)單元,繼續(xù)處理下一個(gè)時(shí)刻到達(dá)的定時(shí)請(qǐng)求。
3.6信號(hào)路由的設(shè)計(jì)
目標(biāo)板上的硬件部件通過(guò)發(fā)送和接收物理信號(hào)的方式,實(shí)現(xiàn)對(duì)外的控制和接收外來(lái)的觸發(fā)事件。物理信號(hào)在硬件系統(tǒng)中靠電壓驅(qū)動(dòng),其路徑由導(dǎo)體(導(dǎo)線)引導(dǎo)[2]。在數(shù)字化仿真環(huán)境中信號(hào)傳輸通過(guò)消息驅(qū)動(dòng)來(lái)實(shí)現(xiàn),為了保證信號(hào)傳輸路徑的正確性,本文設(shè)計(jì)路由模塊來(lái)維護(hù)系統(tǒng)的通信。仿真系統(tǒng)動(dòng)態(tài)運(yùn)行時(shí),仿真構(gòu)件是一個(gè)獨(dú)立的運(yùn)行實(shí)體,它只需要關(guān)心如何把數(shù)據(jù)輸送到自己的引腳上,實(shí)際的傳輸過(guò)程由信號(hào)路由器來(lái)實(shí)現(xiàn)。信號(hào)路由器要傳送信號(hào),首先要找到信號(hào)流向通路,即仿真構(gòu)件之間的引腳連接關(guān)系,這些相互間的連接關(guān)系在配置硬件平臺(tái)時(shí)已經(jīng)確定,因此,信號(hào)路由器需要在系統(tǒng)配置完成后,根據(jù)構(gòu)件間的引腳連接關(guān)建立起仿真系統(tǒng)的引腳信號(hào)路由表,當(dāng)構(gòu)件從引腳輸出信號(hào)時(shí),信號(hào)路由器查詢路由表,找到與該引腳連接的所有構(gòu)件引腳,將信號(hào)組裝成消息發(fā)送到目標(biāo)構(gòu)件。具體設(shè)計(jì)中,路由表使用多級(jí)鏈表實(shí)現(xiàn),如圖7所示。
當(dāng)構(gòu)件發(fā)出傳輸信號(hào)請(qǐng)求時(shí),信號(hào)路由器依次處理該構(gòu)件的每個(gè)引腳,檢查每個(gè)引腳的連接關(guān)系,如果連接對(duì)象合法,則針對(duì)該連接對(duì)象創(chuàng)建一個(gè)消息結(jié)構(gòu)保存這個(gè)引腳上待傳輸?shù)男盘?hào),把它掛接到連接對(duì)象的輸入信號(hào)鏈表上,并且記錄該結(jié)構(gòu)地址;處理完所有引腳之后,依次向連接的對(duì)象發(fā)送消息,并通知連接的對(duì)象有信號(hào)需要接收。當(dāng)構(gòu)件接到通知有信號(hào)輸入請(qǐng)求時(shí),進(jìn)入臨界區(qū),讀取消息輸入鏈表,依次取出保存引腳信號(hào)的數(shù)據(jù)結(jié)構(gòu),把信號(hào)填入自己的接收單元,取完信號(hào)后退出臨界區(qū),進(jìn)入內(nèi)部處理過(guò)程。
4結(jié)束語(yǔ)
針對(duì)綜合化嵌入式軟件測(cè)試,本文提出數(shù)字化仿真測(cè)試方案,論述硬件系統(tǒng)仿真技術(shù),設(shè)計(jì)數(shù)字化仿真運(yùn)行環(huán)境。數(shù)字化仿真運(yùn)行環(huán)境提供時(shí)鐘管理及信號(hào)路由服務(wù),使仿真的數(shù)字化硬件系統(tǒng)能夠動(dòng)態(tài)運(yùn)行,并且在邏輯和時(shí)序上與真實(shí)硬件系統(tǒng)保持一致,為嵌入式軟件的仿真測(cè)試提供了保證。嵌入式系統(tǒng)越來(lái)越復(fù)雜和集成化,軟件在整個(gè)系統(tǒng)中所占比重也日益增加,嵌入式軟件的仿真測(cè)試顯得尤為重要,因此,嵌入式系統(tǒng)數(shù)字化仿真測(cè)試環(huán)境有著良好的前景和市場(chǎng)需求。隨著嵌入式軟件數(shù)字化仿真測(cè)試環(huán)境的不斷完善與發(fā)展,特別是仿真構(gòu)件庫(kù)的不斷擴(kuò)充,數(shù)字化仿真的建模速度和通用性都將得到改善。