亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        朱艷,趙香

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

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

        朱艷,趙香

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

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

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

        引 言

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

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

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

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

        1 概 述

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

        DSP系統(tǒng)級調(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)機之間采取以太網(wǎng)通信。

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

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

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

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

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

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

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

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

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

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

        2.2 調(diào)試引擎

        調(diào)試引擎是主機上的一組Java API,主要用于實現(xiàn)與調(diào)試代理任務(wù)之間的調(diào)試信息協(xié)議,負責(zé)把用戶的指令封裝成socket包,通過網(wǎng)絡(luò)傳送給目標(biāo)機,并解析目標(biāo)機從網(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ù)的詳細信息;獲取目標(biāo)系統(tǒng)的信號量列表和信號量的基本信息;查詢指定信號量的詳細信息;獲取目標(biāo)系統(tǒng)的消息序列和消息序列的基本信息;查詢指定消息序列的基本信息;獲取中斷信息;獲取處理器執(zhí)行信息;獲取內(nèi)存分區(qū)和內(nèi)存塊的信息;開始和停止調(diào)試代理任務(wù)對系統(tǒng)事件的記錄;要求調(diào)試代理任務(wù)上傳事件信息。

        2.3 ECS界面設(shè)計

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

        首先,設(shè)計了一個單獨的透視圖“EPOS調(diào)試”,在這個透視圖中集成所有的系統(tǒng)級調(diào)試視圖(包括目標(biāo)機連接視圖、任務(wù)視圖、信號量視圖等),并容納各種編輯器(包括任務(wù)詳細編輯器、信號量詳細編輯器等)?!癊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實現(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查找與每個視圖匹配的內(nèi)容提供器ContentProvider、標(biāo)簽提供器LabelProvider和模型代理ModelProxy。這些類定義了具體數(shù)據(jù)如何在某一視圖上顯示。

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

        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)機連接"

        restorable="true">

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

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

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

        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)連接視圖點擊“連接”按鈕時,ECS會彈出一個對話框要求用戶輸入要連接目標(biāo)機的IP地址和端口號,用戶輸入后,ECS通過調(diào)試引擎與目標(biāo)機上運行的調(diào)試代理程序建立連接,并獲取目標(biāo)機的硬件信息,顯示在目標(biāo)機連接視圖的樹狀結(jié)構(gòu)中。

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

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

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

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

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

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

        當(dāng)用戶在任務(wù)視圖雙擊某一任務(wù)時,會自動打開一個任務(wù)詳細信息編輯器。這是通過在任務(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

        猜你喜歡
        信號量編輯器視圖
        基于STM32的mbedOS信號量調(diào)度機制剖析
        你距離微信創(chuàng)作達人還有多遠?
        Nucleus PLUS操作系統(tǒng)信號量機制的研究與測試
        車輛段收發(fā)車運行圖編輯器的設(shè)計與實現(xiàn)
        5.3 視圖與投影
        視圖
        Y—20重型運輸機多視圖
        SA2型76毫米車載高炮多視圖
        基于VLIW目標(biāo)機的ELF二進制編輯器設(shè)計與實現(xiàn)
        μC/OS- -III對信號量的改進
        少妇夜夜春夜夜爽试看视频| 日本一区二区三区的免费视频观看 | 福利网在线| 视频在线亚洲视频在线| 十八禁视频在线观看免费无码无遮挡骂过 | 国产激情视频免费在线观看| 亚洲av午夜福利精品一区二区| 69精品免费视频| 久久中文字幕av第二页| 青青草国产手机观看视频| 国产男女猛烈无遮挡免费网站 | 国产亚洲精品自在久久蜜tv | 久久精品国产成人午夜福利| 亚洲岛国一区二区三区| 色欲人妻综合aaaaa网| 人人妻人人添人人爽日韩欧美| 在线观看av片永久免费| 手机在线免费观看av不卡网站| 人妻丰满熟妇无码区免费| 狠狠人妻久久久久久综合| 亚洲av乱码国产精品色| 国产一区二区长腿丝袜高跟鞋 | 欧美亚洲国产丝袜在线| 男女搞事在线观看视频| 国产免费拔擦拔擦8x高清在线人| 国产AV无码专区久久精品网站| 韩国免费一级a一片在线| 99久久精品在线视频| 国产综合无码一区二区色蜜蜜| 日本在线观看不卡| 久久九九精品国产不卡一区| 亚洲欧洲国产成人综合在线| 久久久久亚洲av无码网站| 亚洲国产欲色有一二欲色| 国产av一区二区三区性入口| 国产女主播喷水视频在线观看| 亚洲三区二区一区视频| 国产精品自拍午夜伦理福利| 色哟哟精品视频在线观看| 一区一级三级在线观看| 亚洲精品国产第一区三区|