<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 一種新的嵌入式處理器在線(xiàn)調試方法

一種新的嵌入式處理器在線(xiàn)調試方法

作者: 時(shí)間:2017-06-07 來(lái)源:網(wǎng)絡(luò ) 收藏

  引言

本文引用地址:http://dyxdggzs.com/article/201706/360185.htm

  在FPGA 設計中使用軟核( 如MicroBlaze、PicoBlaze 等) 構成可編程片上系統( SystemOn Programmable Chip,SOPC) ,相比于A(yíng)SIC 具有更好的可修改性和可維護性,得到了普遍的應用。由于A(yíng)RM,MicroBlaze 等大型處理器內核具備調試接口,在與之對應的調試模塊配合下,調試軟件可以通過(guò)JTAG 接口實(shí)現: 執行到斷點(diǎn)處掛起、單步執行、查看處理器內部狀態(tài)、查看和修改Memory空間中的數據等基本的在線(xiàn)調試功能。上述基本的在線(xiàn)調試功能對嵌入式系統的調試具有重要意義。

  對于PicoBlaze 等占用資源少、設計開(kāi)發(fā)簡(jiǎn)單的小巧型處理器,一般不具備調試接口,然而在SOPC系統設計中經(jīng)常需要使用上述處理器。使用上述處理器時(shí),由于沒(méi)有調試接口,屬于大型處理器的標準高效的調試機制不再能夠使用,因此通過(guò)指令集仿真( ISS,Cycle - accurate Instruction Set Simulation) 和利用仿真工具對含有處理器的系統進(jìn)行軟硬件協(xié)同仿真是確保設計正確性的重要途徑。然而在諸如接收機基帶信號處理等系統的設計中,仿真所用的測試用例往往覆蓋率不夠,或者在發(fā)現故障以后很難構造出與之相應的測試用例。因此迫切需要使在線(xiàn)調試功能能夠方便地擴展到一般的處理器上。

  針對上述應用需求,這里提出的新調試方法通過(guò)引入一種通用的調試模塊( Universal Debug Module,UDM) 可以使沒(méi)有調試接口的處理器建立起標準的調試機制。該調試模塊利用處理器的中斷機制實(shí)現處理器響應斷點(diǎn)( breakpoint) 的機制,利用基于雙端口RAM 中一種巧妙的地址映射機制實(shí)現同時(shí)對多行代碼設置斷點(diǎn)的功能,并且能夠方便地實(shí)現被調試系統和調試主機之間調試信息和命令的交互。UDM 還具有易于擴展的優(yōu)點(diǎn),當SOPC 系統中有多個(gè)處理器時(shí)可以共用一個(gè)UDM。

  2 在線(xiàn)調試的一般原理

  的主流在線(xiàn)調試方法,目前主要有2 種: 后臺調試模式( backgroud debug mode,BDM) 技術(shù)和基于IEEE P1149. 1 協(xié)議的JTAG 調試技術(shù)。BDM 技術(shù)在Motolora 微控制器中得到了大量的應用,ARM,MIPS 和PowerPC 等處理器都具有基于JTAG 技術(shù)的在片調試功能,如ARM 公司提出了基于JTAG 技術(shù)的RDI 調試接口標準,主要用于A(yíng)RM 芯片的調試。處理器內核中通過(guò)增加支持調試的擴展設計,可在預留的調試接口輸入簡(jiǎn)單的控制信號,以實(shí)現: 處理器掛起( Halt) 、輸出PC 值和通用寄存器值、輸出和修改Memory 空間中的數據等基本的原始調試操作。通常上述調試接口的設計與指令集架構相關(guān),如MIPS32 提供如下一些調試方法: ①斷點(diǎn)指令BREAK; ②一些自陷指令TRAP; ③特殊控制寄存器WATCH,通過(guò)編程使得特定的load /store 操作以及取指操作產(chǎn)生特殊的例外;④一種基于TLB 的MMU,通過(guò)編程使得訪(fǎng)問(wèn)任意存儲器頁(yè)都可以產(chǎn)生特定的例外。

  對于沒(méi)有調試接口的處理器目前主要是通過(guò)在軟件和硬件設計中充分考慮可能的調試需求,再加上調試主機和被調試系統之間的通信機制來(lái)實(shí)現在線(xiàn)調試的。這種調試模式下,調試代碼需要插入到正常程序中,將調試信息輸出到調試主機,同時(shí)還能夠接收調試主機發(fā)過(guò)來(lái)的命令做出各種響應。該方法的主要缺陷是針對不同的調試需求,要不斷修改正常程序中的調試代碼,導致標準化和通用性程度不高。此處的UDM 在不對處理器內核做修改的情況下即可使這類(lèi)處理器建立起方便的調試機制,是一種不同于主流大型處理器實(shí)現在線(xiàn)調試的方法。

  3 通用調試模塊( UDM) 的工作原理

  3. 1 系統描述

  使用UDM 的調試系統框圖如圖1 所示,利用與FPGA 同在一塊PCB 板上的ARM、DSP 等處理器作為輔助調試用的( 下文中簡(jiǎn)稱(chēng)為輔助處理器) ,簡(jiǎn)化了UDM 與調試主機之間的通信。通過(guò)輔助處理器的總線(xiàn)接口,UDM 中的各種控制和數據寄存器被直接映射到輔助處理器的Memory 空間。在輔助處理器開(kāi)發(fā)工具的Memory 窗口直接進(jìn)行數據讀寫(xiě)操作,就可實(shí)現對UDM 的操控,如圖4、圖5 所示。由于在一塊PCB 板上同時(shí)集成FPGA 和嵌入式處理器芯片是很常見(jiàn)的設計,因此這種通信方式適用的范圍很廣。

    

1.jpg

  圖1 應用UDM 的調試系統框圖

  UDM 直接作為FPGA 外部輔助調試的嵌入式處理器的外設,如果在外部處理器總線(xiàn)掛接多個(gè)UDM 模塊,就能實(shí)現同時(shí)對多個(gè)處理器進(jìn)行調試。

  UDM 通過(guò)產(chǎn)生調試中斷( DeBug Interrupt,DI) 信號,使處理器響應中斷并調用調試服務(wù)程序( DebugRoutine,DR) 。UDM 通過(guò)監測處理器的取指令地址( Instruction Address, IA) 產(chǎn)生DI 信號。PicoBlaze 在運行DR 時(shí)可通過(guò)其總線(xiàn)接口訪(fǎng)問(wèn)UDM,從而實(shí)現調試信息的輸出和對調試命令的響應。

  3. 2 斷點(diǎn)設置機制

  產(chǎn)生DI 時(shí)由于處理器會(huì )立即執行DR,從而中斷正常的執行流程轉為為調試服務(wù),因此決定DI 產(chǎn)生的時(shí)機是實(shí)現斷點(diǎn)機制的核心。DI 信號是通過(guò)監測處理器的取指令地址( Instruction Address, IA)產(chǎn)生的。直接通過(guò)一個(gè)比較器將IA 與一個(gè)數據比較一次只能設置一個(gè)斷點(diǎn),為了解決此矛盾采用了如下方法: 在UDM 中用雙口RAM 存儲斷點(diǎn)配置信息,使RAM 中的每1bit 與程序存儲區的一個(gè)地址對應起來(lái),數據為1 代表設置了斷點(diǎn),0 代表沒(méi)有。

  將輸入的IA 進(jìn)行地址變換后對RAM 存儲區尋址,使得RAM 在一端輸出一個(gè)正好代表輸出的地址處是否設置了斷點(diǎn)信息,再根據此數據就可生成正確的DI 信號。在雙口RAM 的另外一端,斷點(diǎn)設置情況可以方便地被修改。這樣一來(lái)可以設置的斷點(diǎn)個(gè)數變?yōu)橹饕躑DM 中雙口RAM 容量限制了。

  3. 3 調試服務(wù)程序

  只需在DR 中保證處理器不對目標程序的內外部環(huán)境造成改變,就等效于實(shí)現了處理器的掛起功能。因此,需要將DR 和目標程序的執行環(huán)境隔離開(kāi)來(lái),這可以通過(guò)對編譯器進(jìn)行某些設置或強制的編碼規范來(lái)實(shí)現。在處理器被掛起之后,DR 與外部調試主機通信,通過(guò)查詢(xún)命令寄存器的方式響應調試主機發(fā)出的各種調試命令。這些命令包括: 將有關(guān)的調試信息搬移到外部調試主機可以觀(guān)察的緩存區中、修改Memory 空間中的數據、退出DR 使目標程序繼續執行等。由于DR 必須與目標程序使用相互隔離的資源并且小型處理器中代碼容量,外部Memory空間大小等都比較受限,因此DR 的設計應該盡可能占用較少的端口數、通用寄存器數和代碼總行數。

  4 設計實(shí)例

  Xilinx 公司的PicoBlaze 是一種常用的小巧型處理器,它由ALU、程序計數器棧( 適用于嵌套子程序) 、16 個(gè)8 位通用寄存器、64 字節RAM 構成的暫存器、程序計數器和控制器以及中斷支持電路構成,其代碼容量為1024。本節以針對PicoBlaze 的應用為例,設計了一個(gè)具體的UDM,并在Spartan3S5000FPGA 上進(jìn)行了實(shí)際驗證。該UDM 使用的硬件資源為1 個(gè)18KB BRAM 和62 個(gè)Spartan - 3邏輯片,軟件資源為61 行匯編代碼,具備的功能如下:

  ·可同時(shí)在每一行代碼處設置斷點(diǎn),在沒(méi)有設置斷點(diǎn)的情況下,可強制產(chǎn)生DI,從而運行DR 輸出調試信息;

  ·可以觀(guān)察到的調試信息為: 程序計數器PC的值、s0 ~ sb 寄存器、64byte 的暫存器,Memory 空間中的數據,在DR 運行時(shí)可以刷新上述調試信息。

  4. 1 硬件實(shí)現

  基于PicoBlaze 處理器應用的UDM 硬件結構如圖2 所示。UDM 與調試終端和PicoBlaze 都有總線(xiàn)接口,因此其內部寄存器分為3 類(lèi): 僅受PicoBlaze控制,僅受輔助處理器控制以及受二者共同控制。

  PicoBlaze 和輔助處理器分別在雙口RAM 的A、B 端口寫(xiě)入數據。為了減少占用PicoBlaze 的I /O端口,PicoBlaze 在向雙口RAM 寫(xiě)入數據之前先向RAM尋址寄存器寫(xiě)入地址,然后通過(guò)寫(xiě)數據輸出寄存器將數據寫(xiě)入前一操作指定的地址中。

    

2.jpg

  圖2 UDM 的內部電路結構框圖

  雙口RAM 的B 端口連接到輔助處理器的總線(xiàn),數據位寬為16,可訪(fǎng)問(wèn)的地址范圍為0 ~ 255,地址0 ~ 165 作為交互調試數據的緩存區,地址192 ~255 用于存儲斷點(diǎn)設置信息。每一個(gè)寄存器中存放16 行代碼的斷點(diǎn)設置情況,由于PicoBlaze 的代碼容量為1024 行,故只需占用64 個(gè)寄存器,例如地址為193 的數據為0x4080 則表示第24 和31 行設置了斷點(diǎn)。雙口RAM 的A 端口數據位寬為8,在DR 運行時(shí)用于輸入調試信息,在目標程序運行時(shí)輸出斷點(diǎn)設置信息。因此在A(yíng) 端口有一個(gè)地址選擇電路,使得輸入A 端口的地址在不同的情況下分別由RAM尋址寄存器和IA 決定。當運行目標程序時(shí),A 端口輸入的地址為IA 的高7 位加上偏移量0x180,輸出的8bit 數據再經(jīng)IA 的低3 位尋址輸出1bit 數據,這樣得到的數據正好反映了與IA 對應的代碼是否設置了斷點(diǎn)。中斷信號產(chǎn)生電路根據上述數據和中斷信號的時(shí)序要求,產(chǎn)生輸出給處理器的DI 信號。

  調試命令寄存器由PicoBlaze 和輔助處理器共同控制,輔助處理器向該寄存器寫(xiě)不同的數代表不同的調試命令。在運行DR 時(shí)通過(guò)查詢(xún)該寄存器來(lái)實(shí)現對各種調試命令的響應,在響應調試命令之前PicoBlaze 將調試命令寄存器清0,作為與輔助處理器的握手操作機制。當向調試命令寄存器寫(xiě)3 時(shí),不管是否設置了斷點(diǎn)都會(huì )立即產(chǎn)生DI 信號。

  4. 2 軟件實(shí)現

  在基于PicoBlaze 的應用中,為了減少代碼容量,DR 的流程比較簡(jiǎn)單。在初始化準備之后,依次將s0 ~ sb 寄存器、64byte 的內部RAM,Memory 空間中的數據輸出到雙口RAM 中,然后陷入一個(gè)等待和處理調試命令的循環(huán)中。目標程序和DR 執行環(huán)境的隔離通過(guò)限制目標程序只允許修改寄存器s0 ~sb 以及64byte 的內部RAM,而DR 只允許修改寄存器se ~ sf 來(lái)實(shí)現。只有當調試命令為退出調試時(shí),DR 程序才會(huì )結束,PicoBlaze 又返回到目標程序的執行。當調試命令為刷新調試信息時(shí),PicoBlaze 將重復一次初始化和調試信息輸出的過(guò)程。

  4. 3 實(shí)際驗證和使用情況

  在應用UDM 之前,首先通過(guò)NC - verilog 對其進(jìn)行了仿真,部分仿真波形如圖3 所示。圖中反映的是當作為DI 的信號pdm_ int 產(chǎn)生了之后,PicoBlaze怎樣轉入執行DR 的,限于篇幅,驗證其他各種功能的仿真波形不在此贅述。

    

3.jpg

  圖3 UDM 的部分仿真波形

  為了進(jìn)一步對UDM 的功能和性能進(jìn)行完備的檢驗,在FPGA 中建立了如下簡(jiǎn)單的PicoBlaze 處理器系統。PicoBlaze 外部只接一塊252X8bit 的RAM和UDM,PicoBlaze 上的目標程序流程為如下的死循環(huán): 將s0 ~ sb 依次置入0 ~ 11,再反過(guò)來(lái)依次置入11 ~ 0; 將64byte 的RAM 依次寫(xiě)入0 ~ 63,再反過(guò)來(lái)寫(xiě)入63 ~ 0; 將外部的RAM 依次寫(xiě)入0 ~ 251,再反過(guò)來(lái)寫(xiě)入255 ~ 4。這樣的一種簡(jiǎn)單設計,可以保證從輸出的調試信息直接看出處理器在哪行代碼處響應了斷點(diǎn)。

  如圖4 所示為在調試主機上進(jìn)行調試控制的界面。偏移地址0x184 處的1040 表明在38 與44 兩行代碼處設置了斷點(diǎn),事實(shí)上從地址0x180 ~ 0x1ff處都可以設置斷點(diǎn)。地址0x200 處為當前的PC 值,通過(guò)向地址0x208 處寫(xiě)1 可使其更新; 地址0x202處為UDM 的使能位,當其為1 時(shí)UDM 才被使能; 地址0x204 為調試命令寄存器,向其寫(xiě)1 使處理器從斷點(diǎn)退出,寫(xiě)2 使處理器刷新調試信息,寫(xiě)3 使處理器強制進(jìn)入DR 輸出調試信息; 地址0x206 處表示調試狀態(tài),當其為3 時(shí)表明處理器在運行DR,并且調試信息已經(jīng)輸出完畢。

    

4.jpg

  圖4 使用UDM 調試的控制界面

  顯示調試信息的界面如圖5 所示,地址0x00 ~0x0b 顯示寄存器s0 ~ sb 的數據,地址0x0c ~ 0x3b顯示內部64byte 存儲器的數據,地址0x4c ~ 0x14b顯示PicoBlaze 外部Memory 空間的數據。由于圖5中斷點(diǎn)正好設置在完成依次向PicoBlaze 的Memory空間依次寫(xiě)0 ~ 251 之后,因此顯示的數據是遞增的。當斷點(diǎn)正好設置在完成依次向Pico Blaze 的Memory 空間依次寫(xiě)255 ~ 4 之后,所顯示的數據就變?yōu)檫f減。在很多其他斷點(diǎn)處顯示的調試信息與斷點(diǎn)設置的位置也符合預期的情況,因此UDM 完全可以正確而高效地工作。

    

5.jpg

  圖5 在第44 行斷點(diǎn)處顯示的調試信息

  在開(kāi)發(fā)一款信號處理芯片的FPGA 原型設計中,跟蹤處理、電文處理、整體流程控制分別由一個(gè)PicoBlaze 完成,并且由于FPGA 資源的限制采用大型處理器來(lái)替代上述處理器幾乎不可能。由于輸入PicoBlaze 的數據和控制信號復雜,仿真驗證不能很好地覆蓋各種實(shí)際的使用情形。通過(guò)使用這里的基于PicoBlaze 處理器設計的UDM,方便地實(shí)現了對上述3 個(gè)PicoBlaze 的在線(xiàn)調試,對提高開(kāi)發(fā)效率發(fā)揮了重要作用。在其他使用PicoBlaze 的工程應用中,上述UDM 也得到了很好的推廣。

  5 結束語(yǔ)

  設計了一種通用調試模塊,用于輔助無(wú)調試接口的處理器建立標準的調試機制。通過(guò)該模塊的使用,提出了一種通用、標準、方便的調試方法,很好地滿(mǎn)足了在SOPC 系統中對多個(gè)沒(méi)有調試接口的小巧型處理器實(shí)現在線(xiàn)調試的迫切需求。新方法通過(guò)產(chǎn)生調試中斷使處理器跳轉到調試服務(wù)程序中的方式實(shí)現處理器的掛起,通過(guò)基于雙端口RAM 中一種巧妙的地址映射機制實(shí)現同時(shí)對多行代碼設置斷點(diǎn)的功能,通過(guò)調試服務(wù)程序實(shí)現數據搬移等調試命令。新方法還具有易于擴展,可以同時(shí)調試多個(gè)嵌入式處理器的優(yōu)點(diǎn)。新的調試方法在工程實(shí)踐中對提高調試效率發(fā)揮了重要作用,是一種普適的,應用價(jià)值明顯的調試方法。



關(guān)鍵詞: 嵌入式處理器 PicoBlaze

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>