王 品,袁春如,賀紅衛(wèi)
(1.中國(guó)兵器科學(xué)研究院,北京 100089;2.中國(guó)航天科工集團(tuán) 第二研究院 706所,北京 100039)
?
異構(gòu)雙核SoC軟件調(diào)試環(huán)境的研究與設(shè)計(jì)
王品1,袁春如2,賀紅衛(wèi)1
(1.中國(guó)兵器科學(xué)研究院,北京100089;2.中國(guó)航天科工集團(tuán) 第二研究院 706所,北京100039)
摘要:分析了嵌入式系統(tǒng)遠(yuǎn)程調(diào)試原理,提出面向某異構(gòu)雙核SoC的調(diào)試環(huán)境設(shè)計(jì)方案,討論了仿真器軟硬件設(shè)計(jì)和調(diào)試代理軟件設(shè)計(jì)等關(guān)鍵技術(shù)。該調(diào)試環(huán)境能夠?qū)δ繕?biāo)平臺(tái)進(jìn)行在線編程和調(diào)試,解決了自主雙核SoC處理器缺乏配套軟件調(diào)試手段的實(shí)際問題,為目標(biāo)平臺(tái)的應(yīng)用和推廣提供了有力支撐,對(duì)其他面向多核處理器的調(diào)試環(huán)境設(shè)計(jì)具有參考價(jià)值。
關(guān)鍵詞:異構(gòu)雙核SoC;仿真器;遠(yuǎn)程調(diào)試;USB;JTAG
多核技術(shù)是提升CPU計(jì)算能力的重要途徑。武器裝備嵌入式系統(tǒng)對(duì)高精度、高性能和安全可控的計(jì)算需求不斷提高,促使我國(guó)在核心電子器件領(lǐng)域的技術(shù)水平有了長(zhǎng)足進(jìn)步。目前,許多處理器已經(jīng)能夠自主研制,對(duì)相應(yīng)的軟件開發(fā)調(diào)試環(huán)境提出了迫切的需求。如果能夠提供包括仿真器在內(nèi)的、與處理器相配套的調(diào)試環(huán)境,將會(huì)給自主芯片的應(yīng)用、推廣與發(fā)展提供更加廣闊的空間。
嵌入式系統(tǒng)一般使用遠(yuǎn)程調(diào)試的方式進(jìn)行調(diào)試,一個(gè)典型的遠(yuǎn)程調(diào)試系統(tǒng)主要包括三個(gè)部分:調(diào)試主機(jī)、仿真器(調(diào)試協(xié)議轉(zhuǎn)換器)和調(diào)試目標(biāo)板。通常來說,調(diào)試主機(jī)通過某個(gè)接口(如并口、網(wǎng)口、USB接口)與仿真器相連,仿真器通過JTAG接口連接調(diào)試目標(biāo)板,以此達(dá)到調(diào)試主機(jī)與調(diào)試目標(biāo)進(jìn)行交互的目的。調(diào)試主機(jī)運(yùn)行調(diào)試器(如GDB)和調(diào)試代理,并為開發(fā)調(diào)試人員和目標(biāo)系統(tǒng)的交互提供友好的用戶界面。遠(yuǎn)程調(diào)試系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 遠(yuǎn)程調(diào)試系統(tǒng)結(jié)構(gòu)
相對(duì)于本地調(diào)試,遠(yuǎn)程調(diào)試具有以下特點(diǎn):
(1)調(diào)試器和被調(diào)試程序運(yùn)行在不同的計(jì)算機(jī)上,通過一定的通信方式將調(diào)試主機(jī)和目標(biāo)板相連,繞開了目標(biāo)板上軟硬件資源有限的限制,為用戶提供強(qiáng)大的調(diào)試環(huán)境。
(2)目標(biāo)板上無需操作系統(tǒng)支持。目標(biāo)板上即使運(yùn)行操作系統(tǒng),也主要是用于嵌入式應(yīng)用的支撐,而不是用于目標(biāo)板的開發(fā)環(huán)境平臺(tái)。
(3)本地調(diào)試只能調(diào)試相同指令集的程序,而遠(yuǎn)程調(diào)試可以調(diào)試與主機(jī)不同指令集的程序,這一特點(diǎn)被稱為交叉調(diào)試。
(4)由于調(diào)試器和被調(diào)試程序的分離,不可避免地引入了通信開銷,對(duì)調(diào)試效率有一定影響。
JTAG是JOINT TEST ACTION GROUP的簡(jiǎn)稱。IEEE 1149.1標(biāo)準(zhǔn)就是由JTAG組織最初提出,并由IEEE批準(zhǔn)和標(biāo)準(zhǔn)化的。所以IEEE 1149.1標(biāo)準(zhǔn)也稱為JTAG調(diào)試標(biāo)準(zhǔn)。邊界掃描(Boundary?Scan)是JTAG調(diào)試中的關(guān)鍵技術(shù),其基本思想是在靠近芯片的輸入/輸出管腳上增加一個(gè)移位寄存器單元,因?yàn)檫@些移位寄存器單元都分布在芯片的邊界上,所以被稱為邊界掃描寄存器(Boundary?Scan Register Cell)。當(dāng)芯片處于調(diào)試狀態(tài)時(shí),這些邊界掃描寄存器可以將芯片和外圍的輸入/輸出隔離開來。通過邊界掃描寄存器單元,可以實(shí)現(xiàn)對(duì)芯片輸入/輸出信號(hào)的觀察和控制。對(duì)于芯片的輸入管腳,可以通過與之相連的邊界掃描寄存器單元把信號(hào)(數(shù)據(jù))加載到該管腳中去;對(duì)于芯片的輸出管腳,也可以通過與之相連的邊界掃描寄存器“捕獲”(CAPTURE)該管腳上的輸出信號(hào)。在正常的運(yùn)行狀態(tài)下,這些邊界掃描寄存器對(duì)芯片來說是透明的,所以正常的運(yùn)行不會(huì)受到任何影響。這樣,邊界掃描寄存器提供了一個(gè)便捷的方式用以觀測(cè)和控制所需要調(diào)試的芯片。另外,芯片輸入/輸出管腳上的邊界掃描(移位)寄存器單元可以相互連接起來,在芯片的周圍形成一個(gè)邊界掃描鏈(Boundary?Scan Chain)。一般的芯片都會(huì)提供幾條獨(dú)立的邊界掃描鏈,用來實(shí)現(xiàn)完整的測(cè)試功能。邊界掃描鏈可以串行的輸入和輸出,通過相應(yīng)的時(shí)鐘信號(hào)和控制信號(hào),就可以方便地觀察和控制處在調(diào)試狀態(tài)下的芯片。在IEEE 1149.1標(biāo)準(zhǔn)中,寄存器被分為兩大類:數(shù)據(jù)寄存器(Data Register,DR)和指令寄存器(Instruction Register,IR)。邊界掃描鏈?zhǔn)且环N重要的數(shù)據(jù)寄存器,用來實(shí)現(xiàn)對(duì)芯片的輸入/輸出的觀察和控制。而指令寄存器用來實(shí)現(xiàn)對(duì)數(shù)據(jù)寄存器的控制,例如:在芯片提供的所有邊界掃描鏈中,通過指令寄存器選擇一條指定的邊界掃描鏈作為當(dāng)前的目標(biāo)掃描鏈即訪問對(duì)象。
本文設(shè)計(jì)的調(diào)試環(huán)境的目標(biāo)平臺(tái)為某自主異構(gòu)雙核SoC,該SoC由一個(gè)ARM核與一個(gè)DSP核組成。為了節(jié)約片上資源,將SoC的ARM核和DSP核中符合IEEE 1149.1標(biāo)準(zhǔn)的JTAG控制器用菊花鏈的方式連接起來,通過一個(gè)JTAG接口進(jìn)行控制。
為了對(duì)這一設(shè)計(jì)進(jìn)行支持,ARM核與DSP核的JTAG控制器都支持Bypass指令,通過Bypass指令,可以將Bypass寄存器連接到數(shù)據(jù)移入接口TDI和數(shù)據(jù)移出接口TDO之間。在某個(gè)處理器內(nèi)核不需要進(jìn)行任何測(cè)試的時(shí)候,將Bypass寄存器連接在TDI和TDO之間,在TDI和TDO之間提供一條長(zhǎng)度最短的串行路徑。這樣允許測(cè)試數(shù)據(jù)快速地通過該處理器內(nèi)核送到處理器其他內(nèi)核上去。
目標(biāo)平臺(tái)設(shè)計(jì)了自主的調(diào)試協(xié)議,無法使用現(xiàn)有的任何一種軟件開發(fā)環(huán)境進(jìn)行軟件的開發(fā)和調(diào)試;因此,迫切需要針對(duì)目標(biāo)平臺(tái)的特點(diǎn)和調(diào)試協(xié)議,設(shè)計(jì)并實(shí)現(xiàn)與目標(biāo)平臺(tái)配套的軟件調(diào)試環(huán)境。
本文針對(duì)異構(gòu)雙核處理器結(jié)構(gòu),結(jié)合JTAG標(biāo)準(zhǔn)及菊花鏈連接方式、調(diào)試環(huán)境設(shè)計(jì)技術(shù)以及多線程技術(shù),提出了一種調(diào)試環(huán)境設(shè)計(jì)方案。調(diào)試環(huán)境交互界面基于ECLIPSE平臺(tái),主要功能是提供友好的開發(fā)調(diào)試界面,接收用戶調(diào)試命令輸入,并顯示調(diào)試結(jié)果,如目標(biāo)機(jī)寄存器內(nèi)容、內(nèi)存內(nèi)容、堆棧內(nèi)容及斷點(diǎn)信息等;采用GNU開源組織發(fā)布的支持多種目標(biāo)平臺(tái)的程序調(diào)試工具GDB作為調(diào)試器,ECLIPSE平臺(tái)同時(shí)集成針對(duì)ARM 的GDB與針對(duì)DSP的GDB,ECLIPSE平臺(tái)與GDB通過標(biāo)準(zhǔn)的Mi協(xié)議通信;調(diào)試主機(jī)駐留惟一的調(diào)試代理軟件,調(diào)試代理通過兩個(gè)線程采用兩個(gè)端口分別與兩個(gè)調(diào)試器建立連接,利用信號(hào)量解決通過單一JTAG接口訪問雙核SoC的互斥問題;調(diào)試代理利用調(diào)試主機(jī)的USB接口和仿真器進(jìn)行通信。仿真器駐留異構(gòu)雙核SoC調(diào)試協(xié)議解析程序,該程序作為宿主機(jī)調(diào)試代理和被調(diào)試程序之間的媒介存在。
用戶通過ECLIPSE平臺(tái)輸入調(diào)試命令,ECLIPSE平臺(tái)根據(jù)當(dāng)前處于活動(dòng)狀態(tài)的工程,區(qū)分輸入命令的目標(biāo)平臺(tái),將命令轉(zhuǎn)換為若干Mi協(xié)議指令,發(fā)送給相應(yīng)GDB,GDB將Mi協(xié)議指令轉(zhuǎn)換為若干遠(yuǎn)程串行協(xié)議(RSP)指令,通過Socket連接發(fā)送給調(diào)試代理,調(diào)試代理根據(jù)接收到指令的線程區(qū)分指令的目標(biāo)內(nèi)核,將指令添加目標(biāo)內(nèi)核信息,封裝成為異構(gòu)雙核調(diào)試協(xié)議指令,通過USB接口發(fā)送給仿真器軟件;仿真器軟件接收異構(gòu)雙核調(diào)試指令,根據(jù)指令中的目標(biāo)內(nèi)核信息,區(qū)分指令對(duì)應(yīng)的內(nèi)核,將指令解析為ARM或DSP單個(gè)內(nèi)核的調(diào)試指令DSP或ARM內(nèi)核的Bypass指令,按照J(rèn)TAG狀態(tài)機(jī)的時(shí)序要求,通過GPIO口將解析后的指令數(shù)據(jù)掃描到目標(biāo)平臺(tái)中,同時(shí)以移位方式獲取返回結(jié)果;最后仿真器將調(diào)試結(jié)果通過USB接口發(fā)送給調(diào)試主機(jī),經(jīng)ECLIPSE解析后以圖形方式呈現(xiàn)給用戶。整個(gè)遠(yuǎn)程調(diào)試系統(tǒng)結(jié)構(gòu)如圖2所示。
圖2 面向異構(gòu)雙核SoC的遠(yuǎn)程調(diào)試系統(tǒng)結(jié)構(gòu)圖
目前,GDB已經(jīng)提供了對(duì)ARM和DSP指令集的支持,只需下載GDB源碼,使用相應(yīng)編譯選項(xiàng)分別進(jìn)行編譯,即可生成針對(duì)目標(biāo)平臺(tái)的調(diào)試器。因此,本方案的關(guān)鍵技術(shù)是調(diào)試代理軟件的設(shè)計(jì)和仿真器軟硬件的設(shè)計(jì)。
根據(jù)異構(gòu)雙核SoC調(diào)試環(huán)境設(shè)計(jì)方案,調(diào)試代理啟動(dòng)兩個(gè)線程,使用兩個(gè)端口分別建立與面向ARM和DSP的GDB的Socket連接。其中一個(gè)連接接收到完整的RSP調(diào)試指令后,需獲取全局信號(hào)量,以避免與另一個(gè)內(nèi)核的調(diào)試相沖突;獲取到全局信號(hào)量后,通過USB接口向仿真器發(fā)送雙核調(diào)試協(xié)議指令,等待仿真器軟件返回執(zhí)行結(jié)果;接收到執(zhí)行結(jié)果后,將結(jié)果封裝為RSP數(shù)據(jù)包,通過Socket連接返回給相應(yīng)的GDB;最后釋放全局信號(hào)量,一條RSP指令執(zhí)行完畢,等待接收下一條GDB發(fā)送來的RSP指令。
調(diào)試代理軟件通過內(nèi)部變量記錄兩個(gè)內(nèi)核的狀態(tài)(掛起和運(yùn)行)。如果一個(gè)連接沒有接收到RSP指令,還應(yīng)判斷相應(yīng)內(nèi)核是否處于運(yùn)行狀態(tài),如果相應(yīng)內(nèi)核處于運(yùn)行狀態(tài),則需獲取全局信號(hào)量,通過USB接口向仿真器發(fā)送內(nèi)核狀態(tài)查詢指令,如果該內(nèi)核已掛起,調(diào)試代理主動(dòng)向GDB發(fā)送內(nèi)核已掛起信號(hào),最后釋放全局信號(hào)量。其執(zhí)行流程如圖3所示。
5.1硬件設(shè)計(jì)
硬件電路采用AT91SAM7X512作為仿真器控制芯片,外接USB接口??刂菩酒?個(gè)GPIO引腳,分別對(duì)應(yīng)IEEE 1149.1標(biāo)準(zhǔn)中的TDI,TDO,TMS,TCK,RST五個(gè)接口信號(hào),通過緩沖處理芯片HC244SJ與目標(biāo)平臺(tái)的標(biāo)準(zhǔn)JTAG接口連接。為了能夠?qū)崟r(shí)觀察調(diào)試過程中仿真器與目標(biāo)平臺(tái)之間的通信過程,控制芯片外接3個(gè)LED指示燈,分別與TDI,TDO及RST接口對(duì)應(yīng)的GPIO引腳串聯(lián),只要JTAG接口有信號(hào)傳輸,對(duì)應(yīng)的LED燈就會(huì)閃爍,起到指示作用。
圖3 調(diào)試代理的執(zhí)行流程圖
調(diào)試主機(jī)上的調(diào)試代理與仿真器之間的通信是由連接于主控制芯片的USB接口來完成的,仿真器軟件經(jīng)燒寫后存儲(chǔ)在FLASH芯片中。為了提高仿真器的調(diào)試速度,仿真器上電后主控制芯片通過已經(jīng)燒寫在FLASH中的BootLoader將仿真器軟件搬移到SRAM中運(yùn)行。
圖4 仿真器的硬件設(shè)計(jì)
5.2軟件設(shè)計(jì)
仿真器內(nèi)部的嵌入式軟件的執(zhí)行流程如圖5所示。當(dāng)調(diào)試主機(jī)通過仿真器與目標(biāo)平臺(tái)連接后,仿真器開始通過端點(diǎn)中斷進(jìn)行設(shè)備的枚舉過程,圖6為端點(diǎn)中斷處理流程。枚舉完成后,仿真器作為從設(shè)備通過USB接口與調(diào)試代理進(jìn)行通信,接收并執(zhí)行雙核調(diào)試協(xié)議指令。調(diào)試代理先發(fā)送2個(gè)字節(jié)的指令長(zhǎng)度,然后發(fā)送指令的內(nèi)容。仿真器通過端點(diǎn)中斷接收到指令長(zhǎng)度后開始等待接收此長(zhǎng)度的指令內(nèi)容。接收完畢后對(duì)指令進(jìn)行解析,識(shí)別指令的目標(biāo)處理器內(nèi)核,從而選擇進(jìn)入針對(duì)ARM或DSP的處理函數(shù),將雙核調(diào)試協(xié)議指令轉(zhuǎn)化為ARM或DSP內(nèi)核調(diào)試指令,與另一內(nèi)核的Bypass指令進(jìn)行組合,通過TDI引腳按照TAP狀態(tài)機(jī)的時(shí)序要求移入內(nèi)核執(zhí)行。內(nèi)核調(diào)試指令執(zhí)行完成后,仿真器將從TDO引腳移出的處理結(jié)果返回給調(diào)試代理。調(diào)試代理接收到執(zhí)行結(jié)果后開始發(fā)送下一條調(diào)試指令。
圖5 仿真器軟件流程圖
圖6 仿真器端點(diǎn)中斷處理流程
將仿真器與調(diào)試主機(jī)及目標(biāo)平臺(tái)連接,同時(shí)對(duì)ARM和DSP內(nèi)核進(jìn)行調(diào)試,實(shí)驗(yàn)結(jié)果顯示,調(diào)試環(huán)境能夠?qū)崿F(xiàn)設(shè)置斷點(diǎn)、單步、觀察變量等調(diào)試功能,下載程序到目標(biāo)平臺(tái)的速度為50 KB/s,具有較高的調(diào)試性能。
本文提出了一種面向某自主異構(gòu)雙核SoC調(diào)試環(huán)境的設(shè)計(jì)方案,解決了目標(biāo)平臺(tái)缺乏配套軟件調(diào)試手段的實(shí)際問題。方案全部采用自主研發(fā)的軟硬件或開源軟件,具有功能完備、性能良好、安全可控等優(yōu)點(diǎn)。本方案能夠集成GNU的GCC編譯器,結(jié)合Eclipse平臺(tái)自身的功能,即可構(gòu)成一個(gè)圖形化的集成軟件開發(fā)環(huán)境,實(shí)現(xiàn)一體化的工程管理、編譯鏈接和遠(yuǎn)程調(diào)試功能,對(duì)其他自主多核處理器軟件開發(fā)環(huán)境的設(shè)計(jì)具有一定的參考價(jià)值。
參考文獻(xiàn)
[1]盛建忠,王勝,張慶文,等.GDB RSP協(xié)議與USB通信在嵌入式調(diào)試系統(tǒng)中的應(yīng)用[J].電子與封裝,2013(3):43?48.
[2]高揚(yáng).USB接口無線仿真器:硬件模塊設(shè)計(jì)[J].電子測(cè)試,2015 (2):6?9.
[3]Joint Test Action Group.IEEE Std 1149.1?2001 IEEE standard test access port and boundary?scan architecture[S].USA:Insti?tute of Electrical and Electronics Engineers,2001.
[4]周樂,黃光紅,陸俊峰,等.一種基于網(wǎng)口的DSP嵌入式仿真器的設(shè)計(jì)[J].中國(guó)集成電路,2012(4):19?22.
[5]王爽,康慕寧.基于Eclipse平臺(tái)的嵌入式遠(yuǎn)程調(diào)試軟件實(shí)現(xiàn)[J].微處理機(jī),2014(3):56?59.
[6]田丹,李運(yùn)喜,胡寧,等.基于Eclipse的嵌入式軟件交叉調(diào)試[J].現(xiàn)代電子技術(shù),2015,38(6):86?89.
[7]殷紹劍,雷航,詹瑾瑜,等.嵌入式遠(yuǎn)程調(diào)試原理研究與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2014,31(6):240?243.
[8]鮑華,余鋒林,黃光紅,等.基于多DSP系統(tǒng)的交叉調(diào)試系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)[J].中國(guó)集成電路,2013,22(4):79?83.
[9]黃光紅,劉冠男.可配置多核處理器的調(diào)試器模塊化分層設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2014(7):13?15.
[10]范濤,劉高輝,葉笑春,等.SPARC平臺(tái)模擬器源碼級(jí)調(diào)試系統(tǒng)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2013,49(4):65?70.
袁春如(1983—),女,碩士,工程師。主要研究方向?yàn)榍度胧较到y(tǒng)、軟件工程。
賀紅衛(wèi)(1970—),男,碩士,研究員。主要研究方向?yàn)檐浖こ?、嵌入式系統(tǒng)。
中圖分類號(hào):TN911?34;TP311.5
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1004?373X(2016)03?0001?04
doi:10.16652/j.issn.1004?373x.2016.03.001
收稿日期:2015?07?22
基金項(xiàng)目:國(guó)家科技重大專項(xiàng)(2013ZX01020?004)
作者簡(jiǎn)介:王品(1984—),男,吉林松原人,碩士,工程師。主要研究方向?yàn)榍度胧较到y(tǒng)。
Research and design of software debugging environment for heterogeneous dual?core SoC
WANG Pin1,YUAN Chunru2,HE Hongwei1
(1.Academy of Chinese Weapon Science,Beijing 100089,China;2.Institute of the 706,Second Academy of China Aerospace Science and Industry Corporation,Beijing 100039,China)
Abstract:Based on analysis of the remote debugging principle of the embedded system,the debugging environment design scheme for a heterogeneous dual?core SoC is proposed,and the key technologies of software&hardware design for the emulator and the debugging agent software design are discussed.The debugging environment can conduct online programming and debug?ging for the target platform,which can solve the practical problem that the independent dual?core SoC processor lacks of the de?bugging means for bundled software,and provide a strong support for target platform application and promotion.It has a refe?rence value for debugging environment design of other multi?core processors.
Keywords:heterogeneous dual?core SoC;emulator;remote debugging;USB;JTAG