新聞中心

        EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 基于Proemulator的插樁構(gòu)架研究

        基于Proemulator的插樁構(gòu)架研究

        作者: 時(shí)間:2017-02-27 來(lái)源:網(wǎng)絡(luò) 收藏
        0引 言

        由于目標(biāo)機(jī)與宿主機(jī)處理器體系結(jié)構(gòu)不同,嵌入式軟件無(wú)法在宿主機(jī)上直接運(yùn)行與測(cè)試,因此嵌入式軟件的開發(fā)過(guò)程常常比硬件開發(fā)過(guò)程還要漫長(zhǎng),導(dǎo)致整個(gè)系統(tǒng)開發(fā)周期長(zhǎng),軟件功能調(diào)試和性能測(cè)試不能及時(shí)完成,軟件質(zhì)量無(wú)法保證。嵌入式模擬器能良好地解決這一問(wèn)題。

        將模擬器應(yīng)用到嵌入式軟件的開發(fā)與測(cè)試中,其優(yōu)點(diǎn)有如下幾個(gè)方面:

        (1)采用模擬器進(jìn)行嵌入式開發(fā)與測(cè)試能讓軟件和硬件開發(fā)同步進(jìn)行,縮短開發(fā)周期;

        (2)能提供比真正硬件環(huán)境下更豐富的測(cè)試環(huán)境,拓寬測(cè)試范圍;能進(jìn)行長(zhǎng)時(shí)間的測(cè)試,甚至能在真實(shí)硬件不能承受的“危險(xiǎn)”條件下測(cè)試。

        (3)能提供調(diào)試,測(cè)試,變量查看,性能分析,實(shí)驗(yàn)數(shù)據(jù)存儲(chǔ)等多種額外功能,便于開發(fā)與測(cè)試人員進(jìn)行分析。

        1國(guó)內(nèi)外模擬器相關(guān)研究

        國(guó)內(nèi)外已有若干較成熟的嵌入式系統(tǒng)模擬器,如ARM公司的ARMmulator,同濟(jì)大學(xué)開發(fā)的Proemulatot中針對(duì)ARM芯片的指令模擬器,清華大學(xué)Sky Eye項(xiàng)目中的指令模擬器,Linux上的開源軟件GDB ARMulator。

        Proemulator是一個(gè)源碼開放的通用模擬器架構(gòu),能在宿主機(jī)上以純軟件方式模擬各種硬件設(shè)備(包括CPU、輸入/輸出設(shè)備等),也可以模擬由這些設(shè)備組成的單片機(jī)或嵌入式系統(tǒng)。它基于插件機(jī)制,主程序提供整個(gè)構(gòu)架,包括運(yùn)行環(huán)境的建立、代碼的裝載和運(yùn)行時(shí)內(nèi)存、寄存器、端口的查看界面等,而插件負(fù)責(zé)模擬不同硬件設(shè)備的行為和特性,并抽象成一個(gè)統(tǒng)一的接口提供給主程序調(diào)用。通過(guò)這個(gè)機(jī)制,模擬新的設(shè)備變得更為容易。Proemutator提供多種CPU插件與若干種片內(nèi)與片外外設(shè),結(jié)構(gòu)圖如圖1所示。



        2 基于嵌入式模擬器的插樁構(gòu)架

        嵌入式測(cè)試平臺(tái)建立在嵌入式模擬器之上,測(cè)試過(guò)程中首先對(duì)被測(cè)程序進(jìn)行插樁,樁節(jié)點(diǎn)在程序運(yùn)行過(guò)程中能同步的,即時(shí)地向樁信息分析器輸出預(yù)設(shè)的樁信息。分析器能實(shí)時(shí)接收裝數(shù)據(jù),并進(jìn)行分析,從而得出整個(gè)被測(cè)程序運(yùn)行過(guò)程中的覆蓋率和分支情況。基于嵌入式模擬器的插樁構(gòu)架如圖2所示。


        3 基于Proemulator的插樁構(gòu)架實(shí)現(xiàn)

        嵌入式模擬器和樁信息分析器為兩個(gè)獨(dú)立進(jìn)程,在兩者之間實(shí)現(xiàn)樁數(shù)據(jù)的傳遞,需采用進(jìn)程間通信機(jī)制。常見(jiàn)的進(jìn)程間通信方法有以下幾種:

        (1)Socket通信是常見(jiàn)的進(jìn)程間通信方法,它能良好地支持網(wǎng)絡(luò)通信協(xié)議TCP/IP,在進(jìn)行通信時(shí),需要設(shè)置端口,并通過(guò)幾次握手建立TCP連接,因此適合網(wǎng)絡(luò)間的大量數(shù)據(jù)傳輸,而對(duì)于單機(jī)上的少量多次數(shù)據(jù)傳輸并不合適。

        (2)共享內(nèi)存的方法較為常見(jiàn),對(duì)于每個(gè)進(jìn)程來(lái)說(shuō),獲得共享內(nèi)存后,就能實(shí)現(xiàn)內(nèi)存的讀寫操作。但是如果不進(jìn)行同步,則一個(gè)進(jìn)程在進(jìn)行讀的過(guò)程中另一個(gè)進(jìn)程進(jìn)行寫操作,就會(huì)造成數(shù)據(jù)的不一致。因此在采用共享內(nèi)存的方法時(shí),需要將共享區(qū)域設(shè)置為臨界資源。常用的方法有信號(hào)量機(jī)制,兩個(gè)進(jìn)程訪問(wèn)共享內(nèi)存時(shí),利用P,V操作進(jìn)行讀寫的互斥。當(dāng)P操作成功時(shí),才能訪問(wèn)臨界區(qū),訪問(wèn)完畢后進(jìn)行V操作,讓出使用權(quán),使得別的進(jìn)程能夠訪問(wèn)。共享內(nèi)存的方法適合多個(gè)進(jìn)程間的大量數(shù)據(jù)共享,只要處理好操作的互斥性,該方法非常實(shí)用。

        (3)WM COPYDATA消息是Windows底層消息,使用非常方便,只需獲得進(jìn)行通信的進(jìn)程的窗口句柄,就能通過(guò)SendMessege函數(shù)將數(shù)據(jù)封裝在消息中傳遞給該進(jìn)程,因?yàn)镾endMessege函數(shù)在接收進(jìn)程接到消息后才會(huì)返回,因此絕對(duì)不會(huì)發(fā)生消息丟失的情況,是可靠的通信。接收方只需要處理WM_COPYDATA消息,便能獲得傳遞來(lái)的數(shù)據(jù)。當(dāng)然,該方法不能用于網(wǎng)絡(luò)間的傳輸,只能用于單機(jī)環(huán)境下的Windows操作系統(tǒng)。還有管道,剪貼板,文件映射等方法,本文不做詳細(xì)介紹。下面詳細(xì)介紹基于嵌入式模擬器獲取樁數(shù)據(jù)的技術(shù)難點(diǎn)。

        3.1基于Proemulator的插樁構(gòu)架

        Proemulator源碼完全開放,提供了UART插件,對(duì)外設(shè)的模擬可以簡(jiǎn)化為對(duì)端口寄存器的模擬,當(dāng)程序訪問(wèn)相應(yīng)的端口時(shí),觸發(fā)其對(duì)應(yīng)外設(shè)的動(dòng)作。UART內(nèi)部包括控制口和數(shù)據(jù)口。向控制口寫入工作方式控制字后,訪問(wèn)數(shù)據(jù)口數(shù)據(jù)能觸發(fā)事件。在被測(cè)程序中進(jìn)行插樁初始化,設(shè)定UART工作方式,在需要插樁的位置將樁數(shù)據(jù)寫入U(xiǎn)ART數(shù)據(jù)端口,然后在UART插件中將寫入數(shù)據(jù)端口的樁信息使用Windows進(jìn)程通信機(jī)制輸出。

        Proemulator提供了多種串行數(shù)據(jù)重定位的方式來(lái)將模擬器內(nèi)部的數(shù)據(jù)信息發(fā)送至外部,包括控制臺(tái)、磁盤文件、命名管道和串口。其中命名管道是一種較好的方式,只需編寫自己的管道接收器,就能實(shí)時(shí)地接收管道發(fā)送出來(lái)的樁數(shù)據(jù),使用串口也比較方便。還能在Proemulator中加入共享內(nèi)存,或者發(fā)送WMCOPYDATA消息,基于Proemulator的插樁構(gòu)架如圖3所示。



        3.2插樁構(gòu)架性能分析

        本文實(shí)現(xiàn)了基于Proemulator的樁數(shù)據(jù)的發(fā)送與獲取,并進(jìn)行了分析,見(jiàn)表1。



        4結(jié) 語(yǔ)

        本文提出基于嵌入式模擬器的插樁構(gòu)架,將插樁后的程序經(jīng)編譯生成可執(zhí)行代碼,運(yùn)行于模擬器上,在運(yùn)行過(guò)程中模擬器能實(shí)時(shí)地將樁信息發(fā)送到樁信息分析器,進(jìn)行代碼的白盒測(cè)試。本文基于已有的嵌入式模擬器Proemulator實(shí)現(xiàn)了樁數(shù)據(jù)獲取。基于嵌入式模擬器的插樁架均能即時(shí)地進(jìn)行樁數(shù)據(jù)的發(fā)送接收與分析,能有效進(jìn)行白盒測(cè)試。


        評(píng)論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 凌云县| 体育| 聂荣县| 南郑县| 通海县| 湘西| 余江县| 水富县| 静安区| 云龙县| 阿克陶县| 义乌市| 阜新| 咸宁市| 莱阳市| 平利县| 修水县| 鸡东县| 福海县| 泗水县| 民丰县| 绍兴市| 沙洋县| 航空| 锡林浩特市| 大石桥市| 冷水江市| 柳林县| 武陟县| 潮州市| 澜沧| 特克斯县| 玛纳斯县| 南皮县| 读书| 天津市| 沾益县| 米脂县| 神农架林区| 五指山市| 防城港市|