當前位置:首頁 > 電源 > 數字電源
[導讀]摘要: 針對嵌入式處理器在FPGA 中的應用現狀,通過引入通用的調試模塊,實現了對沒有調試接口的嵌入式處理器進行在線調試的功能。所設計的調試模塊通過引入專用的調試中斷及與之對應的調試服務程序實現一種處理器響應

摘要: 針對嵌入式處理器在FPGA 中的應用現狀,通過引入通用的調試模塊,實現了對沒有調試接口的嵌入式處理器進行在線調試的功能。所設計的調試模塊通過引入專用的調試中斷及與之對應的調試服務程序實現一種處理器響應斷點( breakpoint) 的機制,并基于雙端口RAM 中一種巧妙的地址映射機制實現同時對多行代碼設置斷點的功能。實際的工程應用情況表明,新的調試方法擴展了對小型嵌入式處理器進行調試的手段,明顯提高了開發(fā)效率。

1 引言

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

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

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

2 在線調試的一般原理

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

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

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

3. 1 系統描述

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

應用UDM 的調試系統框圖

圖1 應用UDM 的調試系統框圖[!--empirenews.page--]

UDM 直接作為FPGA 外部輔助調試的嵌入式處理器的外設,如果在外部處理器總線掛接多個UDM 模塊,就能實現同時對多個處理器進行調試。

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

3. 2 斷點設置機制

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

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

3. 3 調試服務程序

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

4 設計實例

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

·可同時在每一行代碼處設置斷點,在沒有設置斷點的情況下,可強制產生DI,從而運行DR 輸出調試信息;

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

4. 1 硬件實現

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

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

UDM 的內部電路結構框圖

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

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

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

4. 2 軟件實現

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

4. 3 實際驗證和使用情況

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

UDM 的部分仿真波形

圖3 UDM 的部分仿真波形

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

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

使用UDM 調試的控制界面

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

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

在第44 行斷點處顯示的調試信息

圖5 在第44 行斷點處顯示的調試信息

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

5 結束語

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

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯合牽頭組建的NVI技術創(chuàng)新聯盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現場 NVI技術創(chuàng)新聯...

關鍵字: VI 傳輸協議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉