• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于SylixOS操作系統(tǒng)的統(tǒng)一開發(fā)調(diào)試器設(shè)計

    2019-06-29 17:59:26朱壽羽陳洪邦李孝成
    科學(xué)與財富 2019年34期

    朱壽羽 陳洪邦 李孝成

    摘 要:隨著摩爾定律持續(xù)有效,傳統(tǒng)的單核處理器逐漸被片上系統(tǒng)和多核處理器所取代,如何在多機多核環(huán)境中實現(xiàn)高效的開發(fā)調(diào)試成為我們所面臨的問題之一。面向?qū)ο到y(tǒng)可靠性要求極高的電力控制領(lǐng)域,設(shè)計并實現(xiàn)了一個基于SylixOS國產(chǎn)操作系統(tǒng)的統(tǒng)一開發(fā)調(diào)試器。首先對統(tǒng)一開發(fā)調(diào)試器的設(shè)計進行了簡單介紹,然后在GDB基礎(chǔ)上對多核調(diào)試的連接方法和多線程調(diào)試進行了改進。通過測試表明,此統(tǒng)一開發(fā)調(diào)試器能夠在主流國產(chǎn)多核處理器上實現(xiàn)遠程多核調(diào)試,可以顯著縮短程序員的調(diào)試時間。

    關(guān)鍵詞:國產(chǎn)軟硬件;遠程調(diào)試;GDB;菊花鏈;多核調(diào)試

    0引言

    目前,智能電網(wǎng)日益受到國家的重視,其中研究的重點就是擺脫電網(wǎng)設(shè)備底層操作系統(tǒng)對國外操作系統(tǒng)的依賴,避免存在安全隱患。在南京翼輝信息獨立負責(zé)“核高基”部分課題后,將扭轉(zhuǎn)我國電網(wǎng)控制領(lǐng)域底層操作系統(tǒng)受制于人的局面。在片上系統(tǒng)和多核處理器帶來豐厚回報的同時,如何針對多核處理器設(shè)計調(diào)試環(huán)境成為開發(fā)過程中的難題[1-2]。首先程序員在代碼調(diào)試過程中所需的時間大幅度增加,而且冗余多機技術(shù)在電力控制領(lǐng)域普遍采用,但現(xiàn)有的大多數(shù)調(diào)試工具只是針對單核單處理器[3],因此本文基于SylixOS國產(chǎn)實時操作系統(tǒng),設(shè)計并實現(xiàn)一個多機多核調(diào)試器,能夠滿足在國產(chǎn)龍芯、飛騰、智芯等處理器上的調(diào)試要求。

    1調(diào)試器的總體設(shè)計

    如圖1所示,統(tǒng)一開發(fā)調(diào)試器的設(shè)計采用宿主機和目標機的開發(fā)調(diào)試環(huán)境[4-5],在宿主機上編寫源代碼,利用翼輝集成開發(fā)環(huán)境RealEvo-IDE在宿主機上編譯生成可執(zhí)行代碼并下載到目標機上。目標機上運行配合宿主機端GDB的調(diào)試代理,實現(xiàn)對被調(diào)試程序的調(diào)試,調(diào)試代理和被調(diào)試程序都基于運行在龍芯、飛騰、智芯等國產(chǎn)處理器上的SylixOS操作系統(tǒng)。調(diào)試時,兩端通過串口、網(wǎng)口或JTAG接口進行連接,GDB利用遠程串行通信協(xié)議RSP與調(diào)試代理進行發(fā)送調(diào)試指令和接收調(diào)試反饋的通信。

    1.1 GDB調(diào)試原理

    基于GDB遠程調(diào)試、設(shè)置斷點、單步運行、讀寫寄存器等強大功能以及實時、開源、跨平臺性好等特點成為此統(tǒng)一開發(fā)調(diào)試器主要依托的調(diào)試方案[6]。下面簡述GDB和調(diào)試代理之間的調(diào)試過程[7-9]。如圖2所示,GDB通過用戶接口的循環(huán)機制接收到用戶輸入的調(diào)試指令,結(jié)合對命令進行統(tǒng)一管理的符號表進行解釋和處理,生成調(diào)試代理可以識別的指令,然后將調(diào)試指令按照RSP協(xié)議固定的格式進行封裝和發(fā)送。當調(diào)試代理通過連接通道接收到封裝后的指令時,先進行指令的解析,然后根據(jù)指令生成調(diào)試事件并將此事件加入到調(diào)試事件鏈中等待處理,最后調(diào)試代理將調(diào)試結(jié)果反饋到宿主機端GDB。

    1.2 RSP協(xié)議

    GDB運行在PC端,調(diào)試代理運行在開發(fā)板上,所以兩者之間需要在串口、網(wǎng)口或JTAG接口等通道的基礎(chǔ)上實現(xiàn)數(shù)據(jù)的傳輸,遠程串行通信協(xié)議RSP實現(xiàn)了這一功能,它能很好的實現(xiàn)命令的封裝和傳輸以及其他必要的功能。RSP協(xié)議定義了GDB和調(diào)試代理之間通信時統(tǒng)一的數(shù)據(jù)包格式[10],此協(xié)議和大多數(shù)通信協(xié)議類似,傳輸?shù)臄?shù)據(jù)包包含了起始位,結(jié)束位以及校驗和這三個部分,其格式如圖3所示,

    $為起始位,#為結(jié)束位,Data為數(shù)據(jù)部分,Checksum是將數(shù)據(jù)部分所有字符的ASCLL碼取和后與256取模所得的校驗和。當調(diào)試代理端在調(diào)試過程中接收到GDB端發(fā)送的消息時,就會對消息中的數(shù)據(jù)部分進行校驗,并根據(jù)校驗的結(jié)果給GDB端正確的回應(yīng)。“+”表示校驗和正確,可進行下一步傳輸,“-”表示校驗和錯誤,需要進行重新校驗。

    2調(diào)試器的實現(xiàn)

    2.1多核連接方法的實現(xiàn)

    目前大多數(shù)芯片廠商生產(chǎn)的芯片只留出單一的JTAG接口,而沒有考慮到處理器中內(nèi)核的個數(shù)。一般開發(fā)者都是采用IEEE 1149.1標準菊花鏈連接方法來同步和處理多核的調(diào)試工作,如圖4所示。

    通過IPi的TDO與IPi+1的TDI相連的方式將多個IP核連接成一個串行的鏈,同時它們通過TAP控制器共享測試模式選擇TMS、測試時鐘TCK、測試復(fù)位TRST控制信號。當接收到掃描測試指令時,指令經(jīng)過此連接方式進入到IP核TAP的指令寄存器中,從而能夠達到在同一時間對多個IP核的TAP進行訪問的目的,也可以同時獲取各個IP核邊界上的輸入信號以及輸出信號,此連接方式的運用對多核處理器的調(diào)試有很大幫助。但菊花鏈連接方式一個很大的缺點就是其與IEEE1149.1的標準不一致,而且此連接方式在多個IP核中選擇特定的一個IP核進行調(diào)試會有很大的工作量。后期有人提出的TLM(TAP Linking Module)連接方法和并行多TAP控制器互連調(diào)試方法都存在一定的缺陷,不能實現(xiàn)多核調(diào)試 [11]。

    本設(shè)計利用菊花鏈連接的長處,既能對多個IP核進行同時調(diào)試以滿足觀察多核之間互相配合情況的要求,又能對特定的某一個IP核進行調(diào)試。如圖5所示,首先我們在硬件上增加了模式選擇控制器Pattern_TAP,同時在軟件上附加模式開關(guān)Switch_TAP,然后將接口進行封裝。當調(diào)度器發(fā)出Select_TAP1指令時,指令經(jīng)過解釋后將選擇Pattern_TAP的bypass數(shù)據(jù)寄存器,對TAP1的TMS產(chǎn)生一個選擇信號, 進入單核調(diào)試模式,基于SylixOS操作系統(tǒng)的RealEvo-IDE調(diào)試軟件對IP1進行調(diào)試。當調(diào)度器發(fā)出TRST_n的信號,對IP1的調(diào)試處于掛起狀態(tài)。通過這種方式也可以實現(xiàn)對其余IP核TAP的調(diào)試。當調(diào)度器發(fā)出Select_DC命令時,Pattern_TAP將DCflag標志寄存器的值置0(默認狀態(tài)下為1),進入Daisy-Chain菊花鏈互連多核調(diào)試模式,TAP1的TDI輸入切入到Pattern_TAP的TDO輸出,TAPn的TDO輸出連接到JTAG接口的TDO上,而TAP之間通過菊花鏈的連接方法進行互連,這樣統(tǒng)一開發(fā)調(diào)試器便可實現(xiàn)對多個IP核進行同時調(diào)試。調(diào)度器發(fā)出DC_EXIT命令時,將退出多核調(diào)試。通過增加模式選擇控制器和模式開關(guān)這種方式,便可滿足不同得調(diào)試需求。

    2.2多線程的實現(xiàn)

    GDB雖然支持多線程調(diào)試,但其all-stop模式在對個別線程進行單步調(diào)試時,可能會干擾到其余線程。而non-stop模式在某個線程運行斷點時,GDB可能會停止整個進程。所以不難看出GDB對多線程調(diào)試的能力還是不完善的[12]。而此統(tǒng)一開發(fā)調(diào)試器是在調(diào)試代理的基礎(chǔ)上進行改進,使其可以更優(yōu)的實現(xiàn)對多線程的調(diào)試。改進的基本的方案是在命令中指定內(nèi)核號、進程號和線程號,運行在開發(fā)板上的調(diào)試代理會根據(jù)此命令讓特定內(nèi)核上的線程運行調(diào)試.如圖6所示,調(diào)試代理在接收并解析調(diào)試命令后,會從命令中獲取到內(nèi)核號、進程號和線程號,然后會進行相關(guān)信息的匹配,符合的情況下切換線程執(zhí)行調(diào)試命令。例如收到next[123.1-6,124]>2的調(diào)試命令,調(diào)試代理將此命令翻譯為讓2號內(nèi)核上的123號進程的1-6號線程及124號進程進行單步運行。

    2.3調(diào)試功能測試

    測試工作基于運行在宿主機上的RealEvo-IDE,其主要功能是 SylixOS 工程管理和程序調(diào)試,可以通過JTAG接口、網(wǎng)口或串口與目標機交互。RealEvo-IDE 的交叉編譯器在宿主機上編譯生成可以在目標機上運行的 SylixOS 鏡像文件,統(tǒng)一開發(fā)調(diào)試器實現(xiàn)了宿主機與目標機之間多核調(diào)試。下面進行串口調(diào)試的測試,首先我們通過使用串口線將宿主機與目標機相連,如圖7所示,在SylixOS Terminal中使用/dev/ttyS*參數(shù)輸入“debug” 命令。

    然后在RealEvo-IDE界面打開“Debugger→Connection”屬性頁,在“Type”下拉框選擇“Serial”,在“Device”編輯框中輸入 PC 端與設(shè)備相連的調(diào)試串口名稱,在“Speed”編輯框設(shè)置調(diào)試串口波特率為115200,如圖 8所示。

    進行上面的操作后,便可進行調(diào)試,如查看內(nèi)存內(nèi)容。在“Memory”界面上點擊加號按鈕添加一個內(nèi)存監(jiān)控器,點擊“OK”后,默認以十六進制顯示該地址處的內(nèi)存數(shù)據(jù),點擊“New Renderings…”按鈕可以選擇其他類型的顯示方式,如9圖中以“Floating Point”類型為例。

    3 結(jié)束語

    本文基于SylixOS國產(chǎn)操作系統(tǒng)和集成開發(fā)環(huán)境RealEvo-IDE,對多核調(diào)試的連接方法和GDB調(diào)試代理多線程調(diào)試進行改進,設(shè)計了一個統(tǒng)一開發(fā)調(diào)試器。該統(tǒng)一開發(fā)調(diào)試器能夠良好地支持國產(chǎn)龍芯、飛騰、智芯等處理器的軟件調(diào)試。但是,統(tǒng)一開發(fā)調(diào)試器調(diào)試功能和調(diào)試命令還需不斷的完善和優(yōu)化,給開發(fā)者帶來更好的調(diào)試環(huán)境。

    參考文獻:

    [1]蔡玉鑫. 嵌入式多核處理器核間通信方法的設(shè)計與實現(xiàn)[D].西安電子科技大學(xué),2015.

    [2]夏安祥,史浩山,阮園,劉紅紅.一種可重定向的交叉調(diào)試器實現(xiàn)方法[J].計算機應(yīng)用研究,2011,28(10):3735-3738.

    [3]王超. 嵌入式多核調(diào)試器的研究與實現(xiàn)[D].電子科技大學(xué),2015.

    [4]楊群,李笑天,何虎.面向Superscalar與VLIW混合架構(gòu)處理器的調(diào)試器設(shè)計[J].計算機應(yīng)用與軟件,2015,32(05):84-87+163.

    [5]霍峰.基于某國產(chǎn)操作系統(tǒng)的交叉調(diào)試技術(shù)的研究[J].電子測試,2018(Z1):90-91.

    [6]姚文星. 基于JTAG的多核DSP調(diào)試系統(tǒng)的研究與實現(xiàn)[D].中國民航大學(xué),2014.

    [7]鐘太聰. 基于多核的GDB遠程任務(wù)級調(diào)試改進[D].電子科技大學(xué),2010.

    [8]韓斌,羅克露.基于aCoral操作系統(tǒng)遠程調(diào)試器的設(shè)計[J].實驗科學(xué)與技術(shù),2013,11(05):38-40+70.

    [9]陳必泉,黃承慧.GDBSERVER原理分析及其應(yīng)用[J].計算機工程與設(shè)計,2005(03):746-749.

    [10]李琮,王竹平,費曉琪.基于GDB的多核DSP平臺調(diào)試器的設(shè)計與實現(xiàn)[J].微電子學(xué)與計算機,2015,32(01):72-75.

    [11]王玥. 嵌入式SoC可調(diào)試設(shè)計的研究[D].浙江大學(xué),2007.

    [12]李鵬程. 面向嵌入式系統(tǒng)的多核調(diào)試工具研究與實現(xiàn)[D].電子科技大學(xué),2017.

    沿河| 哈巴河县| 闵行区| 邵阳县| 当涂县| 威宁| 华宁县| 简阳市| 和顺县| 南宫市| 义马市| 惠水县| 土默特左旗| 渭南市| 高密市| 成都市| 韩城市| 镇赉县| 张家界市| 万州区| 石泉县| 三都| 婺源县| 内乡县| 牡丹江市| 枣庄市| 扶沟县| 崇明县| 丰城市| 濮阳县| 鄂伦春自治旗| 婺源县| 溧阳市| 平远县| 博兴县| 广平县| 望江县| 丹东市| 嘉义市| 璧山县| 宜兴市|