999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于開源框架面向DSP的系統級調試工具

2017-07-31 21:57:24朱艷趙香
單片機與嵌入式系統應用 2017年7期
關鍵詞:調試用戶信息

朱艷,趙香

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

一種基于開源框架面向DSP的系統級調試工具

朱艷,趙香

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

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

嵌入式操作系統;系統級調試;集成開發環境;DSP

引 言

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

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

隨著DSP運算能力的日益增強,已經能夠在DSP上為每個應用分配一個任務,并保證每個應用滿足所要求的實時性。為了實現多任務并行、任務間通信和調度,“魂芯”DSP提供一個實時嵌入式操作系統,具有很好的實時性能,能夠實現多任務,具有負責任的終端管理和高度的可配置性。

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

1 概 述

圖1 系統級調試工具架構

DSP系統級調試工具的軟件架構如圖1所示。該工具集成在“魂芯”DSP的集成開發環境Efficient Coding Studio (ECS)[2]中,由基于Eclipse的集成開發環境ECS、調試引擎、調試代理任務組成。ECS與調試引擎之間采取Java API通信,調試引擎與目標機之間采取以太網通信。

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

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

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

圖2 系統級調試工具用戶界面

2 系統設計

2.1 調試代理任務

調試代理任務的功能是在目標機系統建立一個服務器,負責與上位機建立連接、根據上位機的請求控制目標系統的運行,讀取或記錄目標機的信息,按照收到的請求向上返回結果。

調試代理任務作為一個用戶任務在目標機系統上運行。“魂芯”DSP處理器目前支持的操作系統是基于RTEMS[3]移植裁剪而成。RTEMS具有源碼公開、高安全性、小內核、易于移植的特點,且支持單線程和多線程,API豐富[4]。

調試代理任務在收到上位機的調試命令后,首先禁止操作系統內的任務調度,避免同步問題。完成調試操作后,再放開任務調度。

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

2.2 調試引擎

調試引擎是主機上的一組Java API,主要用于實現與調試代理任務之間的調試信息協議,負責把用戶的指令封裝成socket包,通過網絡傳送給目標機,并解析目標機從網絡傳送回來的socket包。

調試引擎定義的調試API包括:與調試代理任務建立連接;與調試代理任務斷開連接;獲取目標硬件系統的信息;獲取目標系統的任務列表和任務的基本信息;查詢指定任務的詳細信息;獲取目標系統的信號量列表和信號量的基本信息;查詢指定信號量的詳細信息;獲取目標系統的消息序列和消息序列的基本信息;查詢指定消息序列的基本信息;獲取中斷信息;獲取處理器執行信息;獲取內存分區和內存塊的信息;開始和停止調試代理任務對系統事件的記錄;要求調試代理任務上傳事件信息。

2.3 ECS界面設計

為了在ECS中集成系統級調試功能,設計了cn.com.cetc38.ecs.epos.core和cn.com.cetc38.ecs.epos.ui兩個Eclipse插件,以實現系統級調試功能的動態加載,并與ECS原有的源代碼調試插件獨立分離。

首先,設計了一個單獨的透視圖“EPOS調試”,在這個透視圖中集成所有的系統級調試視圖(包括目標機連接視圖、任務視圖、信號量視圖等),并容納各種編輯器(包括任務詳細編輯器、信號量詳細編輯器等)。“EPOS調試”透視圖的定義如下:

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

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

name="EPOS調試">

透視圖的定義類ECSSystemDebugPerspectiveFactory實現org.eclipse.ui.IPerspectiveFactory接口,定義了“EPOS調試”透視圖的布局。

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

“目標機連接”視圖的定義如下:

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="目標機連接"

restorable="true">

目標機連接視圖的實現類EPOSTargetView維護一個調試樹TreeModelViewer實例,用于實現視圖中的樹結構,并與指定的模型連接。另外,EPOSTargetView還維護一個表述上下文PresentationContext實例,用于調試樹TreeModelViewer在適配器中得到與本視圖對應的指定元素的內容提供器ContentProvider、標簽提供器LabelProvider和模型代理ModelProxy等。

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

在目標機連接視圖中添加了兩個視圖按鈕,分別為“連接”按鈕和“斷開連接”按鈕,利用視圖按鈕擴展點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">

當用戶在目標連接視圖點擊“連接”按鈕時,ECS會彈出一個對話框要求用戶輸入要連接目標機的IP地址和端口號,用戶輸入后,ECS通過調試引擎與目標機上運行的調試代理程序建立連接,并獲取目標機的硬件信息,顯示在目標機連接視圖的樹狀結構中。

建立連接的函數調用如圖3所示。

圖3 新建連接的調用圖

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

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

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

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的子類,這樣可以在編輯器中支持多頁面。目前,在任務詳細信息的編輯器中僅有“概述”頁面,顯示任務的ID、名稱、運行狀態、入口地址、初始化優先級、當前優先級、任務棧基址、任務棧長度、任務模式、任務屬性、任務調度算法、任務運行時間、任務時間片大小、等待資源ID、當前任務切換的棧底、當前任務切換的棧頂等基本信息。

當用戶在任務視圖雙擊某一任務時,會自動打開一個任務詳細信息編輯器。這是通過在任務視圖中的

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

猜你喜歡
調試用戶信息
基于航拍無人機的設計與調試
電子制作(2018年12期)2018-08-01 00:47:44
FOCAS功能在機床調試中的開發與應用
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
無線通信中頻線路窄帶臨界調試法及其應用
電子制作(2017年19期)2017-02-02 07:08:38
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
調壓柜的調試與試運行探討
如何獲取一億海外用戶
創業家(2015年5期)2015-02-27 07:53:25
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
主站蜘蛛池模板: 中文字幕波多野不卡一区| 一区二区无码在线视频| 999精品在线视频| 日韩免费视频播播| 亚洲国产中文在线二区三区免| 毛片一区二区在线看| 国产农村妇女精品一二区| 日韩天堂网| 全午夜免费一级毛片| 1024国产在线| 熟妇丰满人妻| 热思思久久免费视频| 欧美精品在线看| 久久综合一个色综合网| 国产理论精品| 国产女主播一区| 一本一道波多野结衣一区二区| 波多野结衣无码视频在线观看| 国产一级无码不卡视频| 亚洲综合天堂网| 国产内射一区亚洲| 国产精品高清国产三级囯产AV| 日韩在线欧美在线| 伊人久久大线影院首页| 首页亚洲国产丝袜长腿综合| 一级毛片免费观看久| 亚洲第一页在线观看| 日韩精品资源| 最新国产高清在线| 在线欧美日韩| 久草网视频在线| 国产精品久久久久久久久kt| 超清人妻系列无码专区| 国产h视频免费观看| 欧美人与牲动交a欧美精品| 日本91视频| 日韩精品无码免费一区二区三区 | 国产成人91精品免费网址在线| 久久香蕉欧美精品| 亚洲精品成人7777在线观看| 亚洲福利一区二区三区| 亚洲日韩图片专区第1页| 精品久久久久久中文字幕女| 色综合国产| 狠狠色香婷婷久久亚洲精品| 国产在线欧美| 日韩东京热无码人妻| 色亚洲成人| 国产区免费精品视频| 国产精品视频观看裸模| 国产三级国产精品国产普男人| 久久激情影院| 国产亚洲欧美日韩在线一区| 天天躁狠狠躁| 亚洲欧美日韩成人在线| 久久综合九色综合97网| 亚洲中文精品人人永久免费| 久久天天躁狠狠躁夜夜躁| 国产亚洲欧美日韩在线一区二区三区| 亚洲第一中文字幕| 东京热av无码电影一区二区| 国产不卡一级毛片视频| 国产成人综合亚洲欧洲色就色| 日韩乱码免费一区二区三区| 2021国产精品自产拍在线观看| 亚洲九九视频| 一区二区影院| 嫩草影院在线观看精品视频| 亚洲天堂视频在线播放| 国产成人精品一区二区三在线观看| 五月天丁香婷婷综合久久| 中文字幕丝袜一区二区| 国内毛片视频| 国产成人AV综合久久| 国产欧美在线观看精品一区污| 国产激情在线视频| 色天天综合久久久久综合片| 免费Aⅴ片在线观看蜜芽Tⅴ| 久久9966精品国产免费| 免费国产一级 片内射老| 亚洲人成网站在线观看播放不卡| av手机版在线播放|