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
主站蜘蛛池模板: 91免费精品国偷自产在线在线| 国产丝袜无码一区二区视频| 久久久国产精品无码专区| 国产91精品最新在线播放| 亚洲天堂网在线观看视频| 99人妻碰碰碰久久久久禁片| 色综合热无码热国产| 无码日韩视频| 亚洲人成网站在线播放2019| 日韩欧美在线观看| 无码内射中文字幕岛国片 | 婷婷在线网站| 在线观看91香蕉国产免费| 黄色网在线| 亚洲美女一区二区三区| 无码免费的亚洲视频| 亚洲第一成年网| 欧美精品v| 91在线播放国产| 天堂成人av| 99热这里只有免费国产精品 | 欧美在线一级片| 99激情网| 国产成人免费视频精品一区二区| 久久久国产精品免费视频| 午夜丁香婷婷| 国产女人爽到高潮的免费视频 | 日本AⅤ精品一区二区三区日| lhav亚洲精品| 午夜啪啪网| 色综合久久久久8天国| 四虎亚洲国产成人久久精品| 人妻熟妇日韩AV在线播放| 夜夜操天天摸| 国产精品专区第1页| 中文字幕精品一区二区三区视频| 四虎永久在线| 亚亚洲乱码一二三四区| 精品福利国产| 国产成人高清精品免费5388| 精品国产91爱| 亚洲精品人成网线在线| 国产肉感大码AV无码| 国产精品密蕾丝视频| www精品久久| 99精品视频九九精品| 国产欧美中文字幕| 国产成人在线无码免费视频| 91精品国产福利| 在线免费观看AV| 久久不卡国产精品无码| vvvv98国产成人综合青青| 亚洲国产日韩在线成人蜜芽| 国产福利一区视频| 在线国产91| 国产毛片高清一级国语 | 日韩欧美国产另类| 精品视频在线观看你懂的一区| 欧美狠狠干| 国产极品粉嫩小泬免费看| 国产交换配偶在线视频| 男人天堂亚洲天堂| 园内精品自拍视频在线播放| 国产成人久久综合一区| 超级碰免费视频91| 五月婷婷综合色| 日韩精品一区二区三区免费在线观看| 色婷婷在线影院| 久久综合伊人 六十路| 久久综合成人| 亚洲欧美自拍中文| 久久精品国产亚洲麻豆| 国产一区二区三区夜色| 亚洲欧美色中文字幕| 精品1区2区3区| 婷婷色中文| 亚洲色图综合在线| 欧美午夜在线视频| 一区二区日韩国产精久久| 欧美午夜久久| 中日韩一区二区三区中文免费视频| 97久久精品人人做人人爽|