• 
    

    
    

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

      ?

      一種基于開源框架面向DSP的系統(tǒng)級(jí)調(diào)試工具

      2017-07-31 21:57:24朱艷趙香
      關(guān)鍵詞:信號(hào)量編輯器視圖

      朱艷,趙香

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

      一種基于開源框架面向DSP的系統(tǒng)級(jí)調(diào)試工具

      朱艷,趙香

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

      提出了一種支持?jǐn)?shù)字信號(hào)處理器(DSP)操作系統(tǒng)的的系統(tǒng)級(jí)調(diào)試工具。該工具基于Eclipse開源框架,能夠方便集成到現(xiàn)有DSP集成開發(fā)環(huán)境中。通過在目標(biāo)機(jī)嵌入式操作系統(tǒng)上運(yùn)行的一個(gè)調(diào)試代理任務(wù),系統(tǒng)調(diào)試工具能夠與目標(biāo)系統(tǒng)進(jìn)行以太網(wǎng)通信,獲取系統(tǒng)對(duì)象的信息,并在可視化界面上呈現(xiàn)給用戶。通過該操作系統(tǒng)調(diào)試工具,用戶可以觀察和跟蹤目標(biāo)系統(tǒng)上的各種對(duì)象和事件,包括任務(wù)、信號(hào)量等。

      嵌入式操作系統(tǒng);系統(tǒng)級(jí)調(diào)試;集成開發(fā)環(huán)境;DSP

      引 言

      DSP是一種用于處理數(shù)字信號(hào)的專用處理器。在電子技術(shù)各個(gè)領(lǐng)域(例如雷達(dá)、聲納、語音通信、數(shù)字通信等),正廣泛使用DSP處理器搭建的系統(tǒng)處理日益龐大的數(shù)字信息。

      “魂芯”[1]系列DSP是中國(guó)電子科技集團(tuán)公司第三十八研究所設(shè)計(jì)開發(fā)的一系列高性能DSP,適用于雷達(dá)信號(hào)處理、電子對(duì)抗、精確制導(dǎo)、通信保障及圖像處理等領(lǐng)域?;赩LIW+SIMD架構(gòu),“魂芯”系列DSP具有強(qiáng)大的并行處理能力,滿足高速實(shí)時(shí)信號(hào)處理的應(yīng)用要求。

      隨著DSP運(yùn)算能力的日益增強(qiáng),已經(jīng)能夠在DSP上為每個(gè)應(yīng)用分配一個(gè)任務(wù),并保證每個(gè)應(yīng)用滿足所要求的實(shí)時(shí)性。為了實(shí)現(xiàn)多任務(wù)并行、任務(wù)間通信和調(diào)度,“魂芯”DSP提供一個(gè)實(shí)時(shí)嵌入式操作系統(tǒng),具有很好的實(shí)時(shí)性能,能夠?qū)崿F(xiàn)多任務(wù),具有負(fù)責(zé)任的終端管理和高度的可配置性。

      要實(shí)現(xiàn)在多任務(wù)操作系統(tǒng)上的調(diào)試,僅依靠傳統(tǒng)的源代碼調(diào)試是不夠的。一方面,代碼級(jí)調(diào)試可能打亂原有的任務(wù)調(diào)度行為,導(dǎo)致調(diào)試結(jié)果與實(shí)際運(yùn)行結(jié)果不一致;另一方面,當(dāng)程序出現(xiàn)死鎖、內(nèi)存泄漏等問題時(shí),代碼級(jí)調(diào)試也不能及時(shí)定位問題。因此,需要一個(gè)系統(tǒng)級(jí)調(diào)試工具,能夠在不打斷程序運(yùn)行的情況下,查看和追蹤系統(tǒng)運(yùn)行情況。通過觀察多任務(wù)環(huán)境中各系統(tǒng)對(duì)象的信息,檢測(cè)系統(tǒng)事件,定位和解決目標(biāo)系統(tǒng)中的問題點(diǎn)。

      1 概 述

      圖1 系統(tǒng)級(jí)調(diào)試工具架構(gòu)

      DSP系統(tǒng)級(jí)調(diào)試工具的軟件架構(gòu)如圖1所示。該工具集成在“魂芯”DSP的集成開發(fā)環(huán)境Efficient Coding Studio (ECS)[2]中,由基于Eclipse的集成開發(fā)環(huán)境ECS、調(diào)試引擎、調(diào)試代理任務(wù)組成。ECS與調(diào)試引擎之間采取Java API通信,調(diào)試引擎與目標(biāo)機(jī)之間采取以太網(wǎng)通信。

      如果使用系統(tǒng)級(jí)調(diào)試工具,用戶在編譯代碼時(shí)必須把調(diào)試代理任務(wù)鏈接入可執(zhí)行文件中。用戶可以使用ECS加載生成的程序,并啟動(dòng)運(yùn)行;也可以通過其他方式把程序在目標(biāo)機(jī)上加載運(yùn)行。

      程序在目標(biāo)機(jī)上運(yùn)行后,用戶可以使用系統(tǒng)級(jí)調(diào)試工具與目標(biāo)機(jī)建立連接,查看目標(biāo)機(jī)每個(gè)核上所運(yùn)行的任務(wù)列表和任務(wù)詳細(xì),也可以查看其他操作系統(tǒng)上的對(duì)象。

      系統(tǒng)級(jí)調(diào)試工具的用戶界面如圖2所示。左邊的連接視圖用于管理目標(biāo)機(jī)連接,用戶可以在該視圖上新建和刪除目標(biāo)機(jī)連接。連接視圖的樹形結(jié)構(gòu)顯示所有的已連接目標(biāo)機(jī)的核列表。右下角是指定核上的任務(wù)列表信息,能夠顯示任務(wù)的ID、名稱、狀態(tài)和優(yōu)先級(jí),用戶可以點(diǎn)擊“刷新”按鈕刷新該視圖的信息。右上角左邊是任務(wù)詳細(xì)內(nèi)容視圖,顯示選中任務(wù)的其他詳細(xì)信息,如任務(wù)棧地址、任務(wù)棧長(zhǎng)度等。用戶也可以對(duì)該視圖內(nèi)容進(jìn)行刷新。右上角右邊是目標(biāo)機(jī)控制臺(tái)打印信息。

      圖2 系統(tǒng)級(jí)調(diào)試工具用戶界面

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

      2.1 調(diào)試代理任務(wù)

      調(diào)試代理任務(wù)的功能是在目標(biāo)機(jī)系統(tǒng)建立一個(gè)服務(wù)器,負(fù)責(zé)與上位機(jī)建立連接、根據(jù)上位機(jī)的請(qǐng)求控制目標(biāo)系統(tǒng)的運(yùn)行,讀取或記錄目標(biāo)機(jī)的信息,按照收到的請(qǐng)求向上返回結(jié)果。

      調(diào)試代理任務(wù)作為一個(gè)用戶任務(wù)在目標(biāo)機(jī)系統(tǒng)上運(yùn)行?!盎晷尽盌SP處理器目前支持的操作系統(tǒng)是基于RTEMS[3]移植裁剪而成。RTEMS具有源碼公開、高安全性、小內(nèi)核、易于移植的特點(diǎn),且支持單線程和多線程,API豐富[4]。

      調(diào)試代理任務(wù)在收到上位機(jī)的調(diào)試命令后,首先禁止操作系統(tǒng)內(nèi)的任務(wù)調(diào)度,避免同步問題。完成調(diào)試操作后,再放開任務(wù)調(diào)度。

      調(diào)試代理任務(wù)也會(huì)接收上位機(jī)發(fā)出的開始和停止操作系統(tǒng)事件記錄的調(diào)試命令,在內(nèi)部維護(hù)一個(gè)緩存,在記錄時(shí)把操作系統(tǒng)的事件存儲(chǔ)到緩存中。事件包括任務(wù)切換、信號(hào)量創(chuàng)建、獲取和釋放、消息序列的創(chuàng)建、消息進(jìn)出消息隊(duì)列、ISR、處理器異常等。在完成系統(tǒng)事件記錄后,在上位機(jī)的請(qǐng)求下,調(diào)試代理任務(wù)能夠把記錄的所有事件打包上傳給上位機(jī)。

      2.2 調(diào)試引擎

      調(diào)試引擎是主機(jī)上的一組Java API,主要用于實(shí)現(xiàn)與調(diào)試代理任務(wù)之間的調(diào)試信息協(xié)議,負(fù)責(zé)把用戶的指令封裝成socket包,通過網(wǎng)絡(luò)傳送給目標(biāo)機(jī),并解析目標(biāo)機(jī)從網(wǎng)絡(luò)傳送回來的socket包。

      調(diào)試引擎定義的調(diào)試API包括:與調(diào)試代理任務(wù)建立連接;與調(diào)試代理任務(wù)斷開連接;獲取目標(biāo)硬件系統(tǒng)的信息;獲取目標(biāo)系統(tǒng)的任務(wù)列表和任務(wù)的基本信息;查詢指定任務(wù)的詳細(xì)信息;獲取目標(biāo)系統(tǒng)的信號(hào)量列表和信號(hào)量的基本信息;查詢指定信號(hào)量的詳細(xì)信息;獲取目標(biāo)系統(tǒng)的消息序列和消息序列的基本信息;查詢指定消息序列的基本信息;獲取中斷信息;獲取處理器執(zhí)行信息;獲取內(nèi)存分區(qū)和內(nèi)存塊的信息;開始和停止調(diào)試代理任務(wù)對(duì)系統(tǒng)事件的記錄;要求調(diào)試代理任務(wù)上傳事件信息。

      2.3 ECS界面設(shè)計(jì)

      為了在ECS中集成系統(tǒng)級(jí)調(diào)試功能,設(shè)計(jì)了cn.com.cetc38.ecs.epos.core和cn.com.cetc38.ecs.epos.ui兩個(gè)Eclipse插件,以實(shí)現(xiàn)系統(tǒng)級(jí)調(diào)試功能的動(dòng)態(tài)加載,并與ECS原有的源代碼調(diào)試插件獨(dú)立分離。

      首先,設(shè)計(jì)了一個(gè)單獨(dú)的透視圖“EPOS調(diào)試”,在這個(gè)透視圖中集成所有的系統(tǒng)級(jí)調(diào)試視圖(包括目標(biāo)機(jī)連接視圖、任務(wù)視圖、信號(hào)量視圖等),并容納各種編輯器(包括任務(wù)詳細(xì)編輯器、信號(hào)量詳細(xì)編輯器等)?!癊POS調(diào)試”透視圖的定義如下:

      class="cn.com.cetc38.ecs.debug.system.ui.ECSSystemDebugPerspectiveFactory"

      id="cn.com.cetc38.ecs.debug.system.ui.perspective"

      name="EPOS調(diào)試">

      透視圖的定義類ECSSystemDebugPerspectiveFactory實(shí)現(xiàn)org.eclipse.ui.IPerspectiveFactory接口,定義了“EPOS調(diào)試”透視圖的布局。

      “EPOS調(diào)試”透視圖中所有的視圖都是樹狀結(jié)構(gòu),按照調(diào)試系統(tǒng)框架[5](Debugging System Framework, DSF)、視圖模型匹配器SystemDebugModelAdapter根據(jù)視圖的表現(xiàn)上下文PresentationContext查找與每個(gè)視圖匹配的內(nèi)容提供器ContentProvider、標(biāo)簽提供器LabelProvider和模型代理ModelProxy。這些類定義了具體數(shù)據(jù)如何在某一視圖上顯示。

      “目標(biāo)機(jī)連接”視圖的定義如下:

      category="cn.com.cetc38.ecs.debug.system.ui.categotory"

      class="cn.com.cetc38.ecs.debug.system.ui.views.EPOSTargetView"

      id="cn.com.cetc38.ecs.debug.system.ui.targetView"

      name="目標(biāo)機(jī)連接"

      restorable="true">

      目標(biāo)機(jī)連接視圖的實(shí)現(xiàn)類EPOSTargetView維護(hù)一個(gè)調(diào)試樹TreeModelViewer實(shí)例,用于實(shí)現(xiàn)視圖中的樹結(jié)構(gòu),并與指定的模型連接。另外,EPOSTargetView還維護(hù)一個(gè)表述上下文PresentationContext實(shí)例,用于調(diào)試樹TreeModelViewer在適配器中得到與本視圖對(duì)應(yīng)的指定元素的內(nèi)容提供器ContentProvider、標(biāo)簽提供器LabelProvider和模型代理ModelProxy等。

      另外,目標(biāo)機(jī)連接視圖還實(shí)現(xiàn)了一個(gè)全局調(diào)試上下文提供器的功能,即在連接視圖樹上選擇不同的節(jié)點(diǎn),其他視圖會(huì)相應(yīng)地顯示與該節(jié)點(diǎn)對(duì)應(yīng)的信息。這是通過在全局的調(diào)試上下文服務(wù)IDebugContextService中注冊(cè)一個(gè)TreeViewerContextProvider實(shí)例作為調(diào)試上下文提供器。并且在調(diào)試樹上注冊(cè)一個(gè)監(jiān)聽者SelectionListener,當(dāng)在調(diào)試樹上點(diǎn)擊節(jié)點(diǎn)時(shí),TreeViewerContextProvider就會(huì)把這個(gè)點(diǎn)擊事件通知IDebugContextService中注冊(cè)的所有調(diào)試上下文監(jiān)聽者DebugContextListener。任務(wù)級(jí)調(diào)試的所有視圖,包括任務(wù)視圖、信號(hào)量視圖等都必須實(shí)現(xiàn)IDebugContextListener接口,并在IDebugContextService中注冊(cè)為調(diào)試上下文監(jiān)聽者。

      在目標(biāo)機(jī)連接視圖中添加了兩個(gè)視圖按鈕,分別為“連接”按鈕和“斷開連接”按鈕,利用視圖按鈕擴(kuò)展點(diǎn)org.eclipse.ui.viewActions。兩個(gè)按鈕的定義如下:

      targetID="cn.com.cetc38.ecs.debug.system.ui.targetView">

      class="cn.com.cetc38.ecs.debug.system.ui.actions.DisconnectActionDelegate"

      icon="icons/disconnect.gif"

      id="cn.com.cetc38.ecs.debug.system.ui.disconnectAction"

      label="斷開連接"

      style="push"

      toolbarPath="additions">

      class="cn.com.cetc38.ecs.debug.system.ui.actions.ConnectActionDelegate"

      icon="icons/connect.gif"

      id="cn.com.cetc38.ecs.debug.system.ui.connectAction"

      label="連接"

      style="push"

      toolbarPath="additions">

      當(dāng)用戶在目標(biāo)連接視圖點(diǎn)擊“連接”按鈕時(shí),ECS會(huì)彈出一個(gè)對(duì)話框要求用戶輸入要連接目標(biāo)機(jī)的IP地址和端口號(hào),用戶輸入后,ECS通過調(diào)試引擎與目標(biāo)機(jī)上運(yùn)行的調(diào)試代理程序建立連接,并獲取目標(biāo)機(jī)的硬件信息,顯示在目標(biāo)機(jī)連接視圖的樹狀結(jié)構(gòu)中。

      建立連接的函數(shù)調(diào)用如圖3所示。

      圖3 新建連接的調(diào)用圖

      由圖3可知,用戶點(diǎn)擊“連接”按鈕,觸發(fā)該按鈕關(guān)聯(lián)的ConnectActionDelegate實(shí)例的run()方法,在這個(gè)方法中調(diào)用了ConnectionManager的addConnection方法。ConnectionManager是一個(gè)全局的單例類,用來管理所有的目標(biāo)機(jī)連接。ConnectionManager把新建連接這個(gè)消息廣播出去,這個(gè)消息會(huì)異步觸發(fā)ConnectionManagerProxy類中的connectionAdded方法,ConnectionManagerProxy就是在適配器中與目標(biāo)機(jī)連接視圖適配的模型代理。ConnectionManagerProxy把新建連接消息轉(zhuǎn)化為一個(gè)ModelChangedEvent事件,并把這個(gè)事件再次轉(zhuǎn)發(fā)。由于內(nèi)容提供器ContentProvider實(shí)現(xiàn)了ModelChangedListener接口,在收到ModelChangedEvent消息后會(huì)刷新視圖中的樹狀結(jié)構(gòu)。從而目標(biāo)機(jī)連接視圖上會(huì)出現(xiàn)新的目標(biāo)機(jī)節(jié)點(diǎn),如果目標(biāo)機(jī)為多核,該目標(biāo)機(jī)節(jié)點(diǎn)下會(huì)顯示每個(gè)核。斷開連接的處理過程與新建連接相似,不再贅述。

      任務(wù)視圖、信號(hào)量視圖、消息隊(duì)列視圖與目標(biāo)機(jī)連接視圖的實(shí)現(xiàn)相似,都是擴(kuò)展org.eclipse.ui.views擴(kuò)展點(diǎn),實(shí)現(xiàn)類中維護(hù)TreeModelViewer實(shí)例實(shí)現(xiàn)的。唯一的不同就是在適配器中注冊(cè)的是不同的ContentProvider、LabelProvider和ModelProxy。

      對(duì)于任務(wù)詳細(xì)信息、信號(hào)量詳細(xì)信息等,ECS采用編輯器的方式來顯示,因?yàn)橄啾扔谝晥D,編輯器能夠處理更加復(fù)雜的信息,可以嵌入各種圖表,且能夠采用多標(biāo)簽的方式多角度呈現(xiàn)指定對(duì)象的各種信息。任務(wù)詳細(xì)信息編輯器的定義如下:

      class="cn.com.cetc38.ecs.debug.system.ui.editors.TaskDetailEditor"

      id="cn.com.cetc38.ecs.debug.system.ui.task.detail.editor"

      matchingStrategy="cn.com.cetc38.ecs.debug.system.ui.editors.TaskDetailEditorMatchingStrategy"

      name="Task Detail Editor">

      編輯器的定義類TaskDetailEditor是一個(gè)org.eclipse.ui.forms.editor.FormEditor的子類,這樣可以在編輯器中支持多頁(yè)面。目前,在任務(wù)詳細(xì)信息的編輯器中僅有“概述”頁(yè)面,顯示任務(wù)的ID、名稱、運(yùn)行狀態(tài)、入口地址、初始化優(yōu)先級(jí)、當(dāng)前優(yōu)先級(jí)、任務(wù)棧基址、任務(wù)棧長(zhǎng)度、任務(wù)模式、任務(wù)屬性、任務(wù)調(diào)度算法、任務(wù)運(yùn)行時(shí)間、任務(wù)時(shí)間片大小、等待資源ID、當(dāng)前任務(wù)切換的棧底、當(dāng)前任務(wù)切換的棧頂?shù)然拘畔ⅰ?/p>

      當(dāng)用戶在任務(wù)視圖雙擊某一任務(wù)時(shí),會(huì)自動(dòng)打開一個(gè)任務(wù)詳細(xì)信息編輯器。這是通過在任務(wù)視圖中的

      System Debugging Tool for DSP Based on Open-source Framework

      Zhu Yan,Zhao Xiang

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

      A system debuggingtool for digital signal processor (DSP) is proposed in the article.The tool is based on Eclipse open-source framework,and is convenient to integrate in the current development environment.By communicating with a debugging agent running on the target embedded operation system through Ethernet,the tool can obtain information of the system objects,and present it to users.The users can view or trace objects and events of the target system with the tool including tasks,semaphores and so on.

      embedded operation system;system debugging;integrated develop environment;DSP

      TP368

      A

      猜你喜歡
      信號(hào)量編輯器視圖
      基于STM32的mbedOS信號(hào)量調(diào)度機(jī)制剖析
      你距離微信創(chuàng)作達(dá)人還有多遠(yuǎn)?
      Nucleus PLUS操作系統(tǒng)信號(hào)量機(jī)制的研究與測(cè)試
      車輛段收發(fā)車運(yùn)行圖編輯器的設(shè)計(jì)與實(shí)現(xiàn)
      5.3 視圖與投影
      視圖
      Y—20重型運(yùn)輸機(jī)多視圖
      SA2型76毫米車載高炮多視圖
      基于VLIW目標(biāo)機(jī)的ELF二進(jìn)制編輯器設(shè)計(jì)與實(shí)現(xiàn)
      μC/OS- -III對(duì)信號(hào)量的改進(jìn)
      温泉县| 塘沽区| 阿城市| 满洲里市| 通城县| 抚远县| 诸暨市| 乌审旗| 平山县| 太湖县| 个旧市| 特克斯县| 金川县| 抚宁县| 吕梁市| 永新县| 鄱阳县| 隆回县| 来凤县| 罗江县| 岳普湖县| 衡阳市| 偃师市| 罗源县| 通化市| 黄浦区| 佛山市| 温宿县| 赤城县| 和田市| 定州市| 黎平县| 新和县| 视频| 邻水| 南召县| 乌鲁木齐县| 安陆市| 长白| 镇远县| 和平县|