• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      Eclipse開源代碼的多核DSP調(diào)試系統(tǒng)集成

      2015-01-13 01:29:27朱艷林廣棟黃光紅
      關(guān)鍵詞:視圖命令調(diào)試

      朱艷,林廣棟,黃光紅

      (中國電子科技集團(tuán)第38研究所,合肥 230088)

      Eclipse開源代碼的多核DSP調(diào)試系統(tǒng)集成

      朱艷,林廣棟,黃光紅

      (中國電子科技集團(tuán)第38研究所,合肥 230088)

      提出了一種集成多核DSP調(diào)試系統(tǒng)的應(yīng)用軟件開發(fā)環(huán)境。該開發(fā)環(huán)境基于Eclipse的開源代碼,針對多核DSP的多核并行特性,對CDT/DSF框架進(jìn)行了改造和擴(kuò)展,為面向多核DSP應(yīng)用的開發(fā)人員提供了一個可靠、快速、兼容單核及多核模式的軟件開發(fā)環(huán)境,提高了多核并行開發(fā)的速度和質(zhì)量。

      DSP;Eclipse;多核調(diào)試

      引 言

      DSP是一種用于數(shù)字信號處理的專用處理器。在電子技術(shù)很多領(lǐng)域,例如雷達(dá)、聲納、語音通信、數(shù)字通信等,正廣泛使用DSP處理器搭建的系統(tǒng)來處理日益龐大的數(shù)字信息。為了解決計算能力需求與功耗增加之間的矛盾,DSP的設(shè)計正在向多核、高性能方向發(fā)展[1]。 多核DSP以較低的功耗提供了更強(qiáng)的計算處理能力,同時能夠簡化硬件電路板的設(shè)計復(fù)雜度。

      多核DSP的應(yīng)用給開發(fā)者帶來了新的挑戰(zhàn),不僅需要新的編程模型和代碼框架,還需要新的工具環(huán)境支持多核DSP并行編程和調(diào)試。

      Eclipse及C/C++ Toolkit(CDT)是目前在嵌入式領(lǐng)域廣泛使用的集成開發(fā)環(huán)境[2],集成了編譯、工程管理、代碼分析索引、源碼調(diào)試等多種開發(fā)功能。調(diào)試服務(wù)框架(Debugging Service Framework,DSF)重構(gòu)了CDT中的調(diào)試功能實(shí)現(xiàn),為嵌入式應(yīng)用的調(diào)試提供了更加快速靈活的界面。CDT/DSF利用MI文本接口,采用一問一答的方式與調(diào)試器進(jìn)行進(jìn)程間通信,但是MI接口不支持多核,開源的DSF代碼并不支持多核調(diào)試。為了實(shí)現(xiàn)支持多核調(diào)試環(huán)境,不僅需要重新設(shè)計MI接口,而且要對DSF框架進(jìn)行擴(kuò)展。調(diào)試后端,需要一個支持多核調(diào)試的調(diào)試器。

      本文提出一個面向多核DSP的調(diào)試開發(fā)環(huán)境,集成了多核調(diào)試工具M(jìn)CCD[3],擴(kuò)展Eclipse的C語言開發(fā)插件CDT,并針對多核調(diào)試的需求增加了相應(yīng)功能。

      1 概 述

      圖1 多核DSP調(diào)試環(huán)境的架構(gòu)圖

      多核DSP調(diào)試環(huán)境的架構(gòu)如圖1所示,多核DSP調(diào)試環(huán)境集成了多核DSP主機(jī)調(diào)試器MCCD,實(shí)現(xiàn)具體的調(diào)試功能。調(diào)試環(huán)境與MCCD之間通過文本格式的進(jìn)程間通信管道傳輸調(diào)試命令與調(diào)試返回信息,該調(diào)試信息遵循MI接口格式,但針對多核DSP的特點(diǎn)擴(kuò)展了調(diào)試命令及信息。當(dāng)使用軟件模擬器(Simulator)調(diào)試時,主機(jī)調(diào)試器通過socket與模擬器之間進(jìn)行通信,當(dāng)調(diào)試目標(biāo)是硬件電路板時,主機(jī)調(diào)試器通過以太網(wǎng)接口與調(diào)試鏈接服務(wù)軟件交換調(diào)試報文,調(diào)試鏈接服務(wù)軟件通過JTAG控制多核DSP芯片進(jìn)行調(diào)試工作。

      在多核DSP調(diào)試環(huán)境中,用戶可以為每個核配置相應(yīng)的可執(zhí)行加載文件并啟動調(diào)試,調(diào)試視圖中會顯示每個核的運(yùn)行狀況及堆棧信息。當(dāng)用戶在調(diào)試視圖中選擇任意核或其下面的條目時,由于調(diào)試視圖為整個調(diào)試透視圖提供調(diào)試上下文,寄存器視圖、變量視圖、反匯編視圖就會根據(jù)當(dāng)前上下文反映當(dāng)前選中核的信息;運(yùn)行、暫停、單步跳入/跳出/跳過按鈕也會根據(jù)選中的上下文對當(dāng)前選中核進(jìn)行控制操作。根據(jù)多核DSP的特點(diǎn),調(diào)試環(huán)境提供了組運(yùn)行、組暫停等同步調(diào)試功能,并提供核心組的配置及選擇功能。

      多核DSP調(diào)試環(huán)境的用戶界面如圖2所示。

      圖2 多核DSP調(diào)試環(huán)境的用戶界面

      2 系統(tǒng)設(shè)計

      2.1 MI接口擴(kuò)展

      MI接口原本是GDB的一種用戶接口,稱為機(jī)器解釋(Machine Interpretation,MI)[4],是一種基于文本行、面向機(jī)器的文本接口,尤其適用于調(diào)試器作為一個較大系統(tǒng)的一部分而存在的應(yīng)用。Eclipse社區(qū)目前提供的C語言開發(fā)環(huán)境就是使用MI接口集成GDB,由于GDB支持目標(biāo)機(jī)的多樣性,該開發(fā)環(huán)境已廣泛使用于多種嵌入式開發(fā)項(xiàng)目中,包括Intel、ARM、PowerPC等目標(biāo)環(huán)境。

      MI命令的基本格式如下:

      [token] "-" operation (" " option)* [ "- -"] (" " parameter)*

      其中,token為命令序號,必須是一個整數(shù),當(dāng)一個調(diào)試命令運(yùn)行結(jié)束后,返回的信息中也有這個數(shù)字;operation是調(diào)試命令;option是調(diào)試命令選項(xiàng),有些調(diào)試命令可能存在一些可選開關(guān),這些開關(guān)必須由“-”(橫線)開始;parameter是調(diào)試命令的參數(shù)。option序列與parameter序列之間必須由雙橫線“- -”隔開。

      MI的輸出信息格式如下:

      [token] "^" result-class ("," result)* nl

      其中,token為相應(yīng)命令輸入時指定的整數(shù);result-class包括done、running、connected、error、exit等,必須以"^"開頭;result以Variable =value的格式顯示結(jié)果,Variable 為變量名,value為變量值,分為const、tuple、list三種格式,其中const為一個C字符串,tuple為大括號括起來的result集合,相當(dāng)于一個結(jié)構(gòu)體;list為中括號括起來的value或者result集合,相當(dāng)于一個數(shù)組。

      多核DSP調(diào)試集成了自主研發(fā)的多核DSP調(diào)試軟件MCCD,沿用MI接口的命令和信息格式,并針對多核DSP的特性對MI接口進(jìn)行了擴(kuò)展。對大部分MI接口,在命令中增加-c選項(xiàng),指定調(diào)試操作的對象核,并在返回信息中返回相應(yīng)的核號。

      例如,GDB/MI中的繼續(xù)運(yùn)行命令為:

      [token]-exec-continue

      返回信息為:

      [token]^running

      本系統(tǒng)中對核0發(fā)出的繼續(xù)運(yùn)行命令為:

      [token]-exec-continue -c 0

      返回信息為:

      [token]^running, core="0"

      當(dāng)核0遇到特定事件(如斷點(diǎn)觸發(fā))發(fā)生狀態(tài)改變時,MCCD向集成開發(fā)環(huán)境返回:

      [token]*stopped,reason="breakpoint-hit",core="0",bkptno="2",thread-id="1",frame={addr="0x00401331",func="main",args=[],file="main.c",fullname="C:/main.c",line="7"}

      指示核0因斷點(diǎn)觸發(fā)而停止運(yùn)行,并顯示觸發(fā)斷點(diǎn)的序號及核0當(dāng)前的棧頂信息。同時,為了實(shí)現(xiàn)多核同步控制運(yùn)行的功能,本系統(tǒng)為多核同步調(diào)試運(yùn)行增加了以下兩個命令:

      -multicore-run:多核同步運(yùn)行

      -multicore-pause:多核同步暫停

      2.2 DSF架構(gòu)的擴(kuò)展

      調(diào)試服務(wù)框架(Debugger Services Framework,DSF)[5]是Eclipse提供的一個新的應(yīng)用程序接口,用于在Eclipse中集成外部調(diào)試器,代替?zhèn)鹘y(tǒng)的標(biāo)準(zhǔn)調(diào)試接口CDI。DSF不僅能夠幫助開發(fā)者更加靈活地配置調(diào)試界面,還能夠達(dá)到更高的調(diào)試性能,特別適合速度較慢或遠(yuǎn)程調(diào)試的目標(biāo)機(jī)。

      DSF是面向服務(wù)的框架,基于OSGi(Open Service Gateway Initiative)規(guī)范。OSGi是一個基于Java的軟件平臺,支持模塊化、即插即用的動態(tài)服務(wù)及可擴(kuò)展性[6],Eclipse的運(yùn)行框架Equinox就是OSGi的一種實(shí)現(xiàn)。調(diào)試相關(guān)的各種功能以服務(wù)的形式嵌入集成開發(fā)環(huán)境,包括調(diào)試后臺服務(wù)、運(yùn)行控制服務(wù)、斷點(diǎn)管理服務(wù)、寄存器管理服務(wù)等,各個服務(wù)通過DSF接口注冊到服務(wù)注冊表,并由調(diào)試會話類DsfSession統(tǒng)一管理同一個調(diào)試會話中的所有服務(wù)及服務(wù)之間的通信。

      DSF調(diào)試框架中的數(shù)據(jù)模型由IDMContext對象的層次結(jié)構(gòu)構(gòu)成。IDMContext是有層次結(jié)構(gòu)的數(shù)據(jù)模型結(jié)構(gòu),每個IDMContext節(jié)點(diǎn)可以有多個父節(jié)點(diǎn),具有可適配、輕量級、線程安全的特點(diǎn)。每個節(jié)點(diǎn)都可以通過getParents()方法得到所有的父節(jié)點(diǎn),工具類IDMContext提供很多靜態(tài)方法為IDMContext節(jié)點(diǎn)在樹形結(jié)構(gòu)中搜索。

      C語言調(diào)試的IDMContext數(shù)據(jù)模型層次結(jié)構(gòu)如圖3所示。圖中所有的節(jié)點(diǎn)繼承IDMContext接口,每根連線的上級為父節(jié)點(diǎn),下級為子節(jié)點(diǎn)。例如,變量上下文IVariableDMContext的父節(jié)點(diǎn)是棧幀上下文IFrameDMContext,而IFrameDMContext的父節(jié)點(diǎn)是執(zhí)行線程上下文IExecutionDMContext,IExecutionDMContext的父節(jié)點(diǎn)是調(diào)試目標(biāo)節(jié)點(diǎn)IContainerDMContext,IContainerDMContext的父節(jié)點(diǎn)是調(diào)試過程上下文IProcessDMContext,IProcessDMContext的父節(jié)點(diǎn)是命令控制上下文ICommandControlDMContext。這樣,由變量上下文向上追溯,就可以確定該變量位于哪個調(diào)試目標(biāo)的哪個線程的哪個棧幀,并且可以知道需要在哪個調(diào)試會話中查詢。

      圖3 IDMContext數(shù)據(jù)模型層次結(jié)構(gòu)

      很明顯,要在這種層次結(jié)構(gòu)中帶入核號信息,最合適的地方就是調(diào)試目標(biāo)節(jié)點(diǎn)IContainerDMContext,因?yàn)樗姓{(diào)試相關(guān)數(shù)據(jù)的上下文都可以追溯到它,而它上部的節(jié)點(diǎn)都是與調(diào)試器進(jìn)程相關(guān)的。本系統(tǒng)僅使用一個調(diào)試器進(jìn)程實(shí)例調(diào)試所有的核心,因此ICommandControlDMContext和IProcessDMContext都只有一個實(shí)例。

      本系統(tǒng)擴(kuò)展了IContainerDMContext接口,構(gòu)造IECSContainerDMContext接口,加上了如下方法:

      public String getCoreId();

      該接口的實(shí)現(xiàn)只需要返回核號即可。圖3中IContainerDMContext以下的節(jié)點(diǎn)全部以IECSContainerDMContext為父節(jié)點(diǎn),這樣就可以確定每個調(diào)試上下文具體在哪個核。

      例如,要在某個指定核上對某變量上下文IVariableDMContext求值,只需要調(diào)用:

      IECSContainerDMContext containerdmc = DMContexts.getAncestorOfType(context, IECSContainerDMContext.class);String coreId = containerdmc.getCoreId();

      即可以得到核號。把這個核號用-c選項(xiàng)帶入MI命令,就可以正確地在指定核上求變量的值。

      2.3 多核運(yùn)行控制功能

      多核運(yùn)行控制主要包括對多核運(yùn)行組配置的保存及針對指定組發(fā)送-multicore-run及-multicore-pause命令,還負(fù)責(zé)單核與單核調(diào)試模式的切換、調(diào)試對象核心組的選擇。

      本系統(tǒng)注冊了一個新的DSF服務(wù):多核運(yùn)行控制服務(wù)IECSMultiRunControl。該服務(wù)主要提供以下功能接口:

      ① 多核調(diào)試模式是否被啟動;

      ② 選擇當(dāng)前多核調(diào)試組;

      ③ 增加多核調(diào)試組配置,包括組名、組中所有的核號序列;

      ④ 判斷能否運(yùn)行當(dāng)前多核組;

      ⑤ 判斷能否暫停當(dāng)前多核組;

      ⑥ 運(yùn)行當(dāng)前多核調(diào)試組中所有的核;

      ⑦ 暫停當(dāng)前多核調(diào)試組中所有的核。

      同時,構(gòu)造調(diào)試運(yùn)行控制服務(wù)MIRunControl的子類ECSRunControl,覆蓋了以下方法:

      resume(IExecutionDMCon-

      text,RequestMonitor);

      canResume(IExecutionDMContext,DataRequestMonitor);

      canSuspend(IExecutionDMContext,DataRequestMonitor);

      suspend(IExecutionDMContext,RequestMonitor);

      Integration of Multi-core DSP Debugging System Based on Eclipse

      Zhu Yan,Lin Guangdong,Huang Guanghong

      (CETC No.38 Research Institute,Hefei 230088,China)

      An application software development environment integrated multi-core DSP debug system is proposed in the paper.The environment is designed based on open source Eclipse,and modifies and extends CDT/DSF framework aiming at the parallel characteristic of multi-core.The software provides a stable,speedy development environment which supports both single-core and multi-core debugging,and helps the developers improve their efficiency and quality in the development process.

      DSP;Eclipse;multi-core debugging

      TP314

      A

      猜你喜歡
      視圖命令調(diào)試
      只聽主人的命令
      基于航拍無人機(jī)的設(shè)計與調(diào)試
      電子制作(2018年12期)2018-08-01 00:47:44
      移防命令下達(dá)后
      FOCAS功能在機(jī)床調(diào)試中的開發(fā)與應(yīng)用
      5.3 視圖與投影
      視圖
      Y—20重型運(yùn)輸機(jī)多視圖
      SA2型76毫米車載高炮多視圖
      無線通信中頻線路窄帶臨界調(diào)試法及其應(yīng)用
      電子制作(2017年19期)2017-02-02 07:08:38
      調(diào)壓柜的調(diào)試與試運(yùn)行探討
      上高县| 揭阳市| 江油市| 健康| 吉木乃县| 扎赉特旗| 张家界市| 华安县| 墨脱县| 乌拉特中旗| 涪陵区| 内丘县| 漠河县| 高邮市| 石狮市| 汶上县| 达孜县| 开远市| 镇坪县| 菏泽市| 兴宁市| 孝义市| 迁西县| 湾仔区| 家居| 温宿县| 凤庆县| 乐业县| 米泉市| 綦江县| 茌平县| 金乡县| 朝阳县| 松溪县| 大同市| 泾川县| 黑龙江省| 望江县| 横山县| 龙南县| 墨玉县|