国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于嵌入式模擬器的測(cè)試樁獲取方法

      文檔序號(hào):6583464閱讀:249來(lái)源:國(guó)知局
      專利名稱:一種基于嵌入式模擬器的測(cè)試樁獲取方法
      技術(shù)領(lǐng)域
      本發(fā)明屬于嵌入式系統(tǒng)測(cè)試技術(shù)領(lǐng)域,具體涉及一種基于嵌入式模擬器的測(cè)試樁
      獲取方法的設(shè)計(jì)與實(shí)現(xiàn)。將此方法應(yīng)用到基于宿主機(jī)的嵌入式軟件測(cè)試中,能使嵌入式系 統(tǒng)開發(fā)過(guò)程中的軟硬件開發(fā)同步,以縮短整個(gè)系統(tǒng)的開發(fā)時(shí)間。
      背景技術(shù)
      在嵌入式系統(tǒng)的開發(fā)中,嵌入式軟件只能運(yùn)行于特定的目標(biāo)系統(tǒng)上,無(wú)法直接在 宿主機(jī)平臺(tái)上進(jìn)行開發(fā)與測(cè)試,因此一般在原型板調(diào)試時(shí)才開始進(jìn)行底層嵌入式軟件的調(diào) 試工作。為了加快項(xiàng)目的開發(fā)進(jìn)度,確保嵌入式軟件的質(zhì)量,應(yīng)該在硬件原型板制板之前開 始嵌入式軟件模塊調(diào)試,即在沒(méi)有硬件原型板時(shí)先盡可能地調(diào)試并解決嵌入式軟件編程方 面的錯(cuò)誤。嵌入式系統(tǒng)的一般開發(fā)流程如圖l所示,硬件與軟件的開發(fā)為串行模式。
      將嵌入式模擬器應(yīng)用于嵌入式軟件的開發(fā)與測(cè)試,能使得軟件與硬件并行開發(fā)。 嵌入式模擬器模擬了芯片指令集的運(yùn)行,每取出一條被測(cè)程序的指令,模擬器均將其替換 為一段宿主機(jī)程序,在執(zhí)行過(guò)程中修改模擬器中相應(yīng)的寄存器,端口,內(nèi)存單元的內(nèi)容,以 此來(lái)模擬被測(cè)程序的執(zhí)行過(guò)程。采用嵌入式模擬器進(jìn)行基于宿主機(jī)的嵌入式系統(tǒng)開發(fā)流程 如圖2所示,硬件與軟件的開發(fā)為并行模式。不采用模擬器進(jìn)行嵌入式軟件開發(fā),嵌入式軟 件,硬件平臺(tái),宿主機(jī)三者的關(guān)系如圖3所示;采用模擬器進(jìn)行嵌入式軟件開發(fā),嵌入式軟 件,模擬器,宿主機(jī)三者的關(guān)系如圖4所示。 白盒測(cè)試分為覆蓋率測(cè)試,分支測(cè)試,條件測(cè)試等,實(shí)現(xiàn)這些測(cè)試的最常用方法 是對(duì)被測(cè)源程序進(jìn)行插樁,插樁完畢的程序通過(guò)編譯鏈接,生成可執(zhí)行代碼,在運(yùn)行過(guò)程 中,即時(shí)的將樁數(shù)據(jù)發(fā)送出來(lái),由樁獲取器獲取樁數(shù)據(jù)并進(jìn)行分析,得到動(dòng)態(tài)的覆蓋率和程 序執(zhí)行情況。 國(guó)內(nèi)外已有若干較成熟的嵌入式系統(tǒng)模擬器,如ARM公司的ARMmulator,同濟(jì)大 學(xué)開發(fā)的Proemulator中針對(duì)ARM芯片的指令模擬器,清華大學(xué)Sky Eye項(xiàng)目中的指令模 擬器,Linux上的開源軟件GDB ARMulator。鑒于ARM處理器在消費(fèi)類電子產(chǎn)品中已占據(jù)了 絕對(duì)優(yōu)勢(shì),因此本發(fā)明針對(duì)ARM模擬器研究樁數(shù)據(jù)的獲取方法。ARM公司提供專門用于ARM 相關(guān)應(yīng)用開發(fā)和調(diào)試的綜合性軟件ARM Developer Suite (ADS) , ADS支持嵌入式軟件在線 調(diào)試與基于宿主平臺(tái)的調(diào)試 1.嵌入式軟件在線調(diào)試時(shí),ADS通過(guò)JTAG標(biāo)準(zhǔn)調(diào)試接口連接硬件開發(fā)板,將嵌入 式軟件中對(duì)端口的訪問(wèn)內(nèi)容傳遞到硬件開發(fā)板上。這種調(diào)試是在硬件開發(fā)板已經(jīng)實(shí)現(xiàn)的基 礎(chǔ)上進(jìn)行的,并不能縮短嵌入式系統(tǒng)的開發(fā)周期; 2.在基于宿主平臺(tái)調(diào)試時(shí),嵌入式軟件運(yùn)行在ADS提供的嵌入式系統(tǒng)模擬器 ARMulator上。ARMulator不僅可以模擬ARM處理器的體系結(jié)構(gòu)和指令集,還可以模擬存 儲(chǔ)器,寄存器,例如中斷控制器和定時(shí)器等,這樣就模擬了一個(gè)嵌入式開發(fā)最小子系統(tǒng)。 ARMulator模擬器結(jié)構(gòu)圖如圖5所示。 要使得軟件和硬件同步開發(fā),可采用基于宿主平臺(tái)的調(diào)試。如何基于ADS中提供的ARMulator模擬器獲取測(cè)試樁,是本發(fā)明解決的最主要問(wèn)題。 目前國(guó)內(nèi)針對(duì)嵌入式軟件的測(cè)試方案幾乎才起步,多處于研究階段;本發(fā)明提出 了一種基于嵌入式模擬器ARMulator的測(cè)試樁獲取方法,能有效的進(jìn)行嵌入式軟件測(cè)試, 使得基于ARM核的嵌入式軟件都能基于該方法進(jìn)行測(cè)試。此方法填補(bǔ)了國(guó)內(nèi)在該領(lǐng)域的空 白,必將對(duì)嵌入式軟件測(cè)試技術(shù)的發(fā)展、嵌入式產(chǎn)品的開發(fā)產(chǎn)生積極的影響。

      發(fā)明內(nèi)容
      本發(fā)明為了解決嵌入式開發(fā)過(guò)程中,在嵌入式平臺(tái)還未搭建起來(lái)時(shí),嵌入式軟件 無(wú)法進(jìn)行測(cè)試的問(wèn)題,提出了一種基于嵌入式模擬器ARMulator的測(cè)試樁獲取方法,實(shí)現(xiàn) 了樁數(shù)據(jù)的即時(shí)發(fā)送和接收,并基于該方法搭建了嵌入式軟件測(cè)試平臺(tái),使得基于ARM核 的嵌入式軟件能在宿主機(jī)上實(shí)現(xiàn)測(cè)試?;谇度胧侥M器ARMulator的測(cè)試樁獲取方法如 圖6所示。 本發(fā)明在設(shè)計(jì)與實(shí)現(xiàn)過(guò)程中,主要解決的技術(shù)問(wèn)題主要包括以下幾個(gè)方面
      1.要實(shí)現(xiàn)對(duì)被測(cè)軟件的白盒測(cè)試,需對(duì)被測(cè)軟件進(jìn)行插樁。插樁位置和樁數(shù)據(jù)的 設(shè)計(jì),對(duì)軟件的測(cè)試至關(guān)重要; 2.在被測(cè)程序中插樁,插樁函數(shù)必須是嵌入式設(shè)備與模擬器能識(shí)別的指令。將插 樁完成的源碼進(jìn)行編譯鏈接,生成目標(biāo)映像文件。映像文件運(yùn)行于模擬器上,插樁接口能將 樁數(shù)據(jù)在被測(cè)軟件運(yùn)行過(guò)程中實(shí)時(shí)發(fā)送出來(lái),并被樁獲取器接收。ARMulator在Windows平 臺(tái)上實(shí)現(xiàn)為動(dòng)態(tài)鏈接庫(kù)文件(.dll)即為ADS安裝路徑\ARM\ADSvl_2\Bin下的ARMulate. dll,不提供源碼,因此重點(diǎn)要解決問(wèn)題是如何實(shí)現(xiàn)插樁和收樁;本發(fā)明中開發(fā)了 stub端口 模擬器插件,對(duì)外設(shè)的模擬可以簡(jiǎn)化為對(duì)端口寄存器的模擬,當(dāng)程序訪問(wèn)相應(yīng)的端口時(shí),觸 發(fā)其對(duì)應(yīng)外設(shè)的動(dòng)作。當(dāng)stub端口被寫入時(shí),將觸發(fā)windows消息通知樁獲取器來(lái)取走樁 數(shù)據(jù)。將生成的模擬插件stub, dll拷貝到相應(yīng)的目錄下,并在配置文件中進(jìn)行修改,實(shí)現(xiàn) stub插件的加載。在被測(cè)程序中進(jìn)行插樁,插樁程序往stub端口寫入樁數(shù)據(jù),此時(shí)樁獲取 器接收到消息并訪問(wèn)stub端口取走樁數(shù)據(jù)。被測(cè)程序和樁獲取器之間的樁數(shù)據(jù)傳輸可采 用多種進(jìn)程間通信機(jī)制實(shí)現(xiàn); 3.如何使得目標(biāo)文件運(yùn)行于ARMulator模擬器之上,并返回控制臺(tái)中的運(yùn)行結(jié) 果; 4.樁獲取器對(duì)接收到的樁數(shù)據(jù)進(jìn)行實(shí)時(shí)分析,得出程序運(yùn)行過(guò)程中的語(yǔ)句覆蓋 率,條件覆蓋率,分支覆蓋情況等,并以圖表和曲線的方式顯示出來(lái)。此處需與問(wèn)題1中的 插樁位置和樁數(shù)據(jù)結(jié)合設(shè)計(jì); 5.基于問(wèn)題1 4設(shè)計(jì)出整個(gè)基于測(cè)試平臺(tái)構(gòu)架;其構(gòu)架示意圖如圖7所示;
      技術(shù)難點(diǎn)的解決方案如下 基于stub, dll的樁數(shù)據(jù)獲取結(jié)構(gòu)圖、流程圖見圖8、9所示;樁數(shù)據(jù)獲取的工作原 理為 1.當(dāng)在被測(cè)函數(shù)中進(jìn)行插樁時(shí),插樁語(yǔ)句將樁數(shù)據(jù)寫入某內(nèi)存單元。例如將該內(nèi) 存地址定義為0x0C000000 ; 2. stub端口模擬器stub, dl 1中實(shí)現(xiàn)了訪問(wèn)地址OxOC000000會(huì)觸發(fā)自定義 Windows消息WM_STUB_COME通知樁獲取器recvStub進(jìn)行接收;
      4
      3. recvStub窗口處理WM_STUB_C0ME消息,將發(fā)送來(lái)的樁數(shù)據(jù)保存并處理,獲得被
      測(cè)程序運(yùn)行過(guò)程中的動(dòng)態(tài)覆蓋率和分支情況,并用曲線和圖表的形式表示出來(lái); 4.當(dāng)被測(cè)程序運(yùn)行結(jié)束,stub, dll發(fā)送WM_STUB_FINISH消息給recvStub窗口 ,
      通知樁數(shù)據(jù)接收完畢,樁獲取器獲得最終的語(yǔ)句覆蓋率。 本發(fā)明具有下述優(yōu)點(diǎn) 1.現(xiàn)有的嵌入式軟件測(cè)試多為軟硬件結(jié)合的方式,將樁數(shù)據(jù)通過(guò)宿主機(jī)的端口傳 輸?shù)酵獠康男酒儆赏獠啃酒M(jìn)行分析,分析完畢由芯片外設(shè)顯示測(cè)試結(jié)果或是將測(cè)試 結(jié)果傳回宿主機(jī)顯示;本發(fā)明提出的樁獲取方法基于宿主機(jī)就能實(shí)現(xiàn),將樁數(shù)據(jù)寫入內(nèi)存, 然后由分析程序取出,不用經(jīng)過(guò)端口和外設(shè)芯片,因此有以下優(yōu)點(diǎn)
      a)只需要宿主機(jī),不用添加更多的外設(shè),邏輯上更簡(jiǎn)單; b)樁數(shù)據(jù)在宿主平臺(tái)內(nèi)部就能獲取,速度快,準(zhǔn)確率高,如向外設(shè)芯片傳輸,則傳 輸過(guò)程中容易出錯(cuò); c)測(cè)試結(jié)果在宿主機(jī)顯示,能支持圖表,曲線等多種顯示,且開發(fā)起來(lái)更為方便, 不用局限于芯片上的較單調(diào)外設(shè)顯示; 2.已有測(cè)試平臺(tái)多為一般軟件測(cè)試平臺(tái),用于測(cè)試PC平臺(tái)高級(jí)語(yǔ)言程序,在嵌入 式軟件測(cè)試中沒(méi)有優(yōu)勢(shì);本發(fā)明側(cè)重于嵌入式軟件測(cè)試,能支持ARM指令集、Thumb指令集 和ANSY C,能有效的進(jìn)行嵌入式軟件測(cè)試; 3.本發(fā)明內(nèi)部加載了嵌入式模擬器ARMulator,它是ADS公司提供的商業(yè)級(jí)軟件, 穩(wěn)定性、可靠性、指令運(yùn)行速度均有良好保證;


      圖1嵌入式系統(tǒng)一般開發(fā)流程圖2基于宿主機(jī)上嵌入式模擬器的嵌入式系統(tǒng)開發(fā)流程圖3嵌入式軟件開發(fā)中嵌入式軟件,硬件平臺(tái),宿主機(jī)三者關(guān)系4采用模擬器進(jìn)行嵌入式軟件開發(fā)中嵌入式軟件,模擬器,宿主機(jī)三者關(guān)系5ARMulator結(jié)構(gòu)6基于嵌入式模擬器ARMulator的樁獲取方法圖7基于模擬器的嵌入式測(cè)試平臺(tái)構(gòu)架圖8基于stub, dll的樁獲取結(jié)構(gòu)9基于stub, dll的樁獲取流程10運(yùn)行插完樁的被測(cè)程序,樁獲取器收到的樁數(shù)據(jù)
      具體實(shí)施方式
      1.采用PC機(jī)或筆記本作為宿主機(jī);系統(tǒng)要求1)安裝windows XP操作系統(tǒng);2)安裝ARM公司的軟件ARM開發(fā)套件ARM Developer Suite vl.2,安裝過(guò)程中
      遵循以下幾點(diǎn)(l)選擇完全安裝(2)注冊(cè)激活該軟件(3)將lpc2131工程模板拷貝到安
      裝目錄\ARM\ADSvl_2\Stationery中; 2.編制stub端口模擬器插件和樁獲取器;
      5
      3.加載stub端口模擬器插件,該插件模擬了 ARM芯片的UART接口的部分功能,能 實(shí)現(xiàn)樁數(shù)據(jù)的獲取和發(fā)送;找到ADS的安裝目錄VVRMVVDSvl—2XBin,具體加載步驟如下
      1)peripherals, ami為外設(shè)配置文件,在其中添加語(yǔ)句
      {Default_stub = stub} default, ami為當(dāng)前默認(rèn)加載外設(shè)配置文件,在其中添加語(yǔ)句
      {stub = Default_stub} 2)將stub設(shè)備描述文件stub, dsc拷貝到Bin目錄下; 3)將stub設(shè)備定義動(dòng)態(tài)鏈接庫(kù)文件stub, dll拷貝到Bin目錄下。 4.使用ADS打開源文件,并針對(duì)被測(cè)源文件進(jìn)行插樁,樁程序需滿足以下兩點(diǎn) 1)由ARM平臺(tái)或ARMulator可識(shí)別的指令集編寫,在程序運(yùn)行出現(xiàn)分支,循環(huán)或函
      數(shù)調(diào)用時(shí)進(jìn)行插樁; 2)樁程序訪問(wèn)ARMulator所模擬的芯片內(nèi)存空間中的stub端口地址。將樁數(shù)據(jù) 寫入該地址,使得該樁數(shù)據(jù)能被發(fā)送到模擬器進(jìn)程之外。 5.打開樁獲取器,在插樁完畢后利用ADS進(jìn)行編譯鏈接,生成目標(biāo)映像文件 *. axf ;并將其運(yùn)行于ARMulator模擬器之上。在映像文件運(yùn)行過(guò)程中,樁程序即時(shí)的將樁 數(shù)據(jù)發(fā)送到stub端口,并由樁獲取器獲取分析; 6.樁獲取器對(duì)收到的樁進(jìn)行即時(shí)分析,動(dòng)態(tài)顯示已接收到的樁數(shù)據(jù),和樁數(shù)據(jù)分
      析結(jié)果,如覆蓋率等。圖io為運(yùn)行插完樁的被測(cè)程序,樁獲取器收到的樁數(shù)據(jù)。
      權(quán)利要求
      一種基于嵌入式模擬器的測(cè)試樁獲取方法,其特征在于包括以下步驟(1)編制stub端口模擬器,加載到嵌入式模擬器上;(2)編制樁獲取器;(3)將被測(cè)軟件進(jìn)行插樁,生成目標(biāo)程序運(yùn)行于模擬器之上;(4)模擬器進(jìn)程在執(zhí)行過(guò)程中實(shí)時(shí)將樁發(fā)送給stub端口模擬器;(5)樁獲取器即時(shí)獲得樁數(shù)據(jù)并分析,即時(shí)得出程序運(yùn)行過(guò)程中的語(yǔ)句覆蓋率和分支情況。
      2. 根據(jù)權(quán)利要求1所述的基于嵌入式模擬器的測(cè)試樁獲取方法,其特征在于該方法是基于嵌入式開發(fā)平臺(tái)ARM Developer Suite中所提供的ARM內(nèi)核模擬器ARMulator提 出的樁獲取方法,當(dāng)stub端口模擬器編制完成后,需加載到該模擬器之上;ARM內(nèi)核模擬器 ARMulator. dll為ARM公司的商業(yè)級(jí)產(chǎn)品,成熟度高,穩(wěn)定性和魯棒性好,錯(cuò)誤率低。
      3. 根據(jù)權(quán)利要求1所述的基于嵌入式模擬器的測(cè)試樁獲取方法,其特征在于stub端 口模擬器的工作機(jī)制為(1) 將被測(cè)軟件進(jìn)行插樁,插樁程序由嵌入式平臺(tái)所支持的指令集編寫,能被嵌入式模 擬器識(shí)別;(2) 當(dāng)被測(cè)程序運(yùn)行在模擬器上時(shí),插樁程序訪問(wèn)預(yù)定義的內(nèi)存單元,并將樁數(shù)據(jù)寫入 該內(nèi)存單元;(3) 當(dāng)該內(nèi)存空間被訪問(wèn)時(shí),發(fā)送windows消息通知樁獲取器模塊;(4) 當(dāng)樁獲取器收到消息時(shí),從該內(nèi)存單元取到樁數(shù)據(jù),并進(jìn)行分析,能即時(shí)得到被測(cè) 程序運(yùn)行過(guò)程中的覆蓋率和分支情況。
      4. 根據(jù)權(quán)利要求1所述的基于嵌入式模擬器的測(cè)試樁獲取方法,其特征在于支持 ANSY C指令集,嵌入式匯編ARM指令集,嵌入式Thumb指令集所編寫程序的樁獲取。
      5. 根據(jù)權(quán)利要求1所述的基于嵌入式模擬器的測(cè)試樁獲取方法,其特征在于在嵌入 式系統(tǒng)開發(fā)的過(guò)程中,在硬件平臺(tái)沒(méi)有設(shè)計(jì)與開發(fā)好之前,能基于宿主機(jī)對(duì)嵌入式軟件進(jìn) 行測(cè)試,節(jié)約整個(gè)嵌入式系統(tǒng)的開發(fā)時(shí)間。
      6. 根據(jù)權(quán)利要求1所述的基于嵌入式模擬器的測(cè)試樁獲取方法,其特征在于宿主機(jī) 可以為PC機(jī)或筆記本,需首先安裝ARM公司提供的ARM Developer Suite vl. 2。
      全文摘要
      本發(fā)明提出一種基于嵌入式模擬器的測(cè)試樁獲取方法,旨在提供一種嵌入式軟件的測(cè)試方法,能在嵌入式硬件平臺(tái)還沒(méi)有搭建起來(lái)的時(shí)候,基于宿主機(jī)平臺(tái)實(shí)現(xiàn)嵌入式軟件的測(cè)試,以此實(shí)現(xiàn)嵌入式系統(tǒng)軟硬件同步開發(fā)。它包括以下步驟(1)編制stub端口模擬器,加載到嵌入式模擬器上;(2)編制樁獲取器;(3)將被測(cè)軟件進(jìn)行插樁,生成目標(biāo)程序運(yùn)行于模擬器之上;(4)模擬器進(jìn)程在執(zhí)行過(guò)程中實(shí)時(shí)將樁發(fā)送給stub端口模擬器;(5)樁獲取器即時(shí)獲得樁數(shù)據(jù)并分析,即時(shí)得出程序運(yùn)行過(guò)程中的語(yǔ)句覆蓋率和分支情況。基于該方法能即時(shí)進(jìn)行樁數(shù)據(jù)的發(fā)送、接收和分析,為進(jìn)行白盒測(cè)試提供了必要的條件。
      文檔編號(hào)G06F11/36GK101706750SQ20091021898
      公開日2010年5月12日 申請(qǐng)日期2009年11月16日 優(yōu)先權(quán)日2009年11月16日
      發(fā)明者曹小鵬, 梁琛, 王忠民, 王文浪, 范琳 申請(qǐng)人:西安郵電學(xué)院
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1