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
主站蜘蛛池模板: 啪啪国产视频| 国产精品蜜臀| 免费毛片视频| 亚洲妓女综合网995久久| 亚洲综合18p| 日韩毛片基地| 华人在线亚洲欧美精品| 精品久久久久久中文字幕女| 久久精品国产精品青草app| 欧美亚洲国产视频| 久久久久亚洲av成人网人人软件 | 色网站在线视频| 超清无码一区二区三区| 亚洲综合色婷婷| 欧美精品亚洲精品日韩专区va| 午夜少妇精品视频小电影| 99精品高清在线播放| 欧美中出一区二区| 欧美啪啪网| 奇米精品一区二区三区在线观看| 精品亚洲欧美中文字幕在线看| 老熟妇喷水一区二区三区| 九色在线观看视频| 色噜噜综合网| 日本欧美中文字幕精品亚洲| 99在线观看精品视频| 人人澡人人爽欧美一区| 日韩精品久久久久久久电影蜜臀| 国产精品.com| 91欧美在线| 日韩久草视频| 亚洲成人免费在线| 日韩国产一区二区三区无码| 另类欧美日韩| 久久久91人妻无码精品蜜桃HD| 欧美日韩第三页| 国产精品毛片一区| 亚洲区视频在线观看| 大乳丰满人妻中文字幕日本| 欧美亚洲国产一区| 免费激情网址| 国产香蕉97碰碰视频VA碰碰看| 亚洲欧美成人网| 亚洲乱伦视频| 国产精品亚洲一区二区三区在线观看| 国产精品网址你懂的| 午夜视频在线观看区二区| 久草热视频在线| 狠狠干欧美| 亚洲综合色在线| 色哟哟国产精品一区二区| 一级毛片免费高清视频| 人妻丰满熟妇AV无码区| 中国国产高清免费AV片| 亚洲天堂2014| 国产成人高清亚洲一区久久| 国产在线精品99一区不卡| 麻豆国产精品一二三在线观看| 欧美午夜视频在线| 亚洲视频a| 欧美一级在线看| 国产超碰在线观看| 久久精品人人做人人| 欧美日韩亚洲国产| 国产经典三级在线| 亚洲色图在线观看| 精品久久国产综合精麻豆| 国产美女精品人人做人人爽| a级毛片在线免费观看| 成年片色大黄全免费网站久久| 蜜桃视频一区二区三区| 97se综合| 大乳丰满人妻中文字幕日本| 毛片三级在线观看| 国产91色在线| 国产成人高清精品免费软件| 日韩精品亚洲精品第一页| 亚洲伊人天堂| 狠狠色狠狠综合久久| 精品久久久久久成人AV| 成人在线综合| 色婷婷久久|