一種數位訊號處理器軟體調試信息輸出方法
2023-07-28 10:36:11
專利名稱:一種數位訊號處理器軟體調試信息輸出方法
技術領域:
本發明涉及數位訊號處理器(DSP)技術,特別是一種DSP軟體調試信息輸出方法。
背景技術:
由於具備強大的處理能力,DSP一般應用於高速信號處理的場所,尤其在通訊領域獲得了非常廣泛的應用。由於對DSP系統的實時性和處理性能有較高的要求,目前在DSP系統的設計中主要側重於考慮DSP的數據吞吐能力和運算速率,而對於DSP系統的人機互動和調試手段卻通常關注的不夠。
在DSP系統的設計中,調試DSP軟體時需要輸出調試信息,當DSP軟體異常時為了準確地定位問題也需要輸出調試信息。現有技術中常見的DSP軟體調試信息輸出方法為首先通過仿真工具加載DSP軟體,然後通過所使用的仿真工具把調試信息輸出到調試主機,最後在集成調試環境下輸出。由於DSP上應用程式越來越龐大,特別是在移動通訊系統中廣泛採用的分布式處理方式往往會在一塊目標板上採用多片DSP,而DSP仿真工具的標準基本只能實現串行加載,所以應用仿真工具輸出調試信息會降低DSP軟體的調試效率,而且由於目前各個廠家提供的DSP仿真工具對於一些複雜的實時任務的調試並不完善,應用這種方法通常還是需要直接輸出調試信息進行問題定位,從而造成對DSP軟體調試的不便。同時,因為這種通過DSP仿真工具輸出調試信息的方法是採用仿真工具來加載DSP軟體,而DSP軟體的實際應用環境基本上是由CPU負責進行後臺加載,所以通過DSP仿真工具加載DSP軟體時必須修改相應的環境配置,從而造成無法測試正常的DSP加載流程。
現有技術中還有通過DSP與主機之間的主機接口(HPI)直接將調試信息輸出到CPU,CPU再將調試信息通過CPU的調試通道直接輸出到調試主機的調試信息輸出方法,其中HPI接口包含HPI郵箱以及CPU和DSP的通訊協議。
在一些複雜的應用場所中,可以將DSP互聯起來組成DSP互聯陣列。圖1為現有技術中利用HPI接口的調試模式圖。如圖1所示,DSP應用板上有CPU和DSP互聯陣列,其中DSP互聯陣列通過HPI接口和CPU連接。輸出調試信息到調試主機時需要先將調試信息格式化,現有技術一般通過調用Printf等列印函數將調試信息字符串格式化,然後以消息包的方式發往HPI接口的HPI郵箱,CPU讀取HPI郵箱以獲得調試信息消息包再調用列印函數通過CPU的調試通道而輸出。
圖2為現有技術中利用HPI接口輸出調試信息輸出流程圖。如圖2所示,包括以下步驟步驟201CPU加載DSP程序,開始調試流程;步驟202DSP程序格式化調試信息字符串,並且將格式化後的調試信息字符串組包成調試信息包,然後將調試信息包發給HPI郵箱;步驟203CPU讀取HPI郵箱獲得調試信息包並通過CPU的調試通道列印輸出。
現有技術中這種利用HPI接口直接輸出調試信息到CPU,CPU再將調試信息通過CPU的調試通道直接輸出的方式由於不是利用仿真工具進行加載DSP程序,所以可以避免通過仿真工具輸出調試信息所造成的問題,但是由於HPI接口是一個所有的DSP所公用擁有並且帶寬受限的共享資源,而調試信息字符串的長度不固定並且可能很長,並且現有技術中每條調試信息都組成一個調試信息包輸出會造成包頭的開銷很大,所以通過HPI接口輸出大量由調試信息字符串所組成的調試信息包會佔用大量的HPI帶寬。
同時,現有技術中輸出調試信息前需要在DSP上格式化調試信息字符串,而在DSP上格式化調試信息字符串的時間同調試信息字符串的長度有關,動輒需要上百周期,增加了在DSP上處理調試信息的時間,從而加大了DSP的負載。特別的,如果DSP由於某種原因而處於異常情況時,因為一個異常通常會導致產生一連串的異常,而通常每個異常都會有調試信息輸出,進而對DSP正常業務的處理造成極大衝擊。
現有技術中常見的方式還有通過將調試信息通過外部存儲器接口輸出到串口晶片,由串口晶片再輸出到調試終端。由於只是簡單採用串口晶片將調試信息上報給調試主機,因此調試信息只能是DSP主動輸出,而當DSP程序發生異常時,DSP往往已經無法正常的輸出,因此無法獲取DSP程序異常時的現場信息,而很多情況下這些現場信息對於定位DSP程序的問題是必不可少的。同時,由於是通過串口晶片將調試信息上報給調試主機,調試信息輸出速率會受到串口晶片速率的影響。
發明內容
有鑑於此,本發明的主要目的是提出一種DSP軟體調試信息輸出方法,以節省HPI傳輸所耗的帶寬。
為達到上述目的,本發明的技術方案是這樣實現的一種DSP軟體調試信息輸出方法,包括以下步驟A、DSP程序中創建不少於1種類型的調試信息對象和不少於1個調試信息緩衝器以及調試信息輸出到CPU的觸發條件,其中每種調試信息對象對應於至少一個調試信息緩衝器並且每種調試信息對象對應於1種調試信息;B、DSP編譯器編譯所述DSP程序生成加載文件,所述加載文件至少包括調試信息字符串段,CPU根據段名檢索所述的加載文件並保存調試信息字符串段的內容到CPU,獲得調試信息字符串段映射到DSP的物理地址、調試信息字符串段的內容保存在CPU的地址;C、DSP程序將相同類型的調試信息對象所對應的調試信息輸出到與該調試信息對象類型相對應的調試信息緩衝器;D、判斷調試信息輸出到CPU的觸發條件是否滿足,如果滿足則通過主機接口(HPI)輸出調試信息到CPU,CPU計算與調試信息相對應的調試信息字符串保存在CPU的物理地址並輸出調試信息字符串,如果不滿足則返回步驟D。
所述的調試信息對象為錯誤信息對象、DSP程序調試信息對象、或函數運行軌跡信息對象。
步驟D所述的計算與調試信息相對應的調試信息字符串保存在CPU的物理地址為計算調試信息字符串段中該調試信息字符串映射到DSP中的物理起始地址減去調試信息字符串段映射到DSP中的物理起始地址再加上調試信息字符串段的內容保存在CPU的起始地址。
步驟B進一步解析檢索文件獲得DSP上所有調試信息緩衝器起始地址、DSP上所有調試信息緩衝器的長度。
進一步在步驟A設置CPU與DSP程序的定時握手任務,當所述的定時握手任務失敗時,CPU主動從調試信息緩衝器取得調試信息。
步驟D所述的觸發條件為定時查詢觸發條件、主動觸發條件、或最大延遲輸出觸發條件。
通過以上的技術方案可以看出,本發明中DSP輸出到CPU的調試信息都包含與調試信息相對應的調試信息字符串映射到DSP的物理地址,而調試信息的長度與調試信息字符串長度無關,調試信息本身並不包括調試信息字符串,通過與調試信息相對應的調試信息字符串映射到DSP的物理地址和解析調試信息所需要的參數,CPU就可以獲得與調試信息所對應的調試信息字符串,因此本發明中所傳輸的調試信息的長度遠遠小於調試信息字符串長度,同時,本發明在調試信息輸出緩衝器中多條調試信息緩存後滿足一定觸發條件時同時組包輸出,而不是輸出每條調試信息就要輸出一個消息包,因此本發明還大大降低了包頭的開銷,所以應用本發明極大地減少了HPI接口傳送所耗的帶寬。
本發明中DSP程序只是將包含調試信息字符串的地址的調試信息輸出到調試信息輸出緩存器,而不用在DSP上格式化調試信息字符串,並且本發明調試信息的格式固定,調試信息本身並不包括調試信息字符串,從而使得DSP處理調試信息的時間大大縮小,所以本發明大大減少了DSP的負載。
同時,本發明在DSP程序運行過程中將一些重要的運行信息循環保存在軌跡調試信息輸出緩衝器中,當DSP程序運行過程中出現異常時,如果這個異常DSP程序可以檢測到,DSP程序可以利用主動觸發方式將調試信息組包輸出到CPU,而如果這個錯誤DSP程序無法檢測,CPU可以主動獲得調試信息輸出緩衝器的內容並依次實時解析和輸出,從而應用本發明實現了對DSP故障的現場分析,進而為迅速定位DSP故障提供了有力的幫助。
本發明通過CPU而不是仿真工具加載DSP程序,DSP程序中包含有足夠多的調試信息,實時通過CPU輸出調試信息,從而極大地方便了多DSP環境下的調試,提高了DSP程序調試的效率,並且還不需要修改環境配置。同時,本發明通過HPI接口而不是串口輸出調試信息,所以調試信息輸出速率不受到串口晶片速率的限制。
圖1為現有技術中利用HPI接口的調試模式圖。
圖2為現有技術中利用HPI接口輸出調試信息流程圖。
圖3為本發明一實施例的加載文件格式示意圖。
圖4為本發明一實施例的調試信息格式示意圖。
圖5為本發明一實施例中利用HPI接口輸出調試信息流程圖。
具體實施例方式
為使本發明的目的、技術方案和優點表達得更加清楚明白,下面結合附圖及具體實施例對本發明再作進一步詳細的說明。
本發明的主要思想是首先在DSP程序中創建各種類型的調試信息對象、調試信息輸出緩衝器和輸出調試信息的觸發條件,其中每個調試信息對象對應獨立的調試信息輸出緩衝器,並且各個調試信息輸出緩衝器的大小可以調節,然後CPU解析DSP加載文件,將調試信息字符串段的內容保存在CPU的存儲空間,並且獲得解析調試信息所需要的參數,DSP程序加載後當DSP程序運行時將調試信息輸出到相對應的調試信息輸出緩衝器,並且當滿足一定的觸發條件時再通過HPI接口將調試信息輸出緩衝器中的調試信息輸出到CPU,其中調試信息中包含有與調試信息相對應的調試信息字符串的地址,也就是該調試信息字符串映射到DSP的物理地址,最後CPU實時解析獲得的調試信息並通過CPU的調試通道進行輸出。
在通訊系統中廣泛採用了一種系列的DSP,該系列DSP在編譯程序時編譯連結DSP程序而生成加載文件,所生成的加載文件的格式為公共對象文件格式(COFF)。當在DSP程序中建立不同類型的調試信息對象後,DSP開發環境在編譯程序時將會在加載文件中產生和DSP程序中所建立的調試信息對象相對應的編譯段。
加載DSP程序時,需要按照各個段的物理地址分別進行加載,而調試信息字符串段沒有物理地址,所以在加載DSP程序之前需要對調試信息字符串段進行地址映射。編譯完成以後,由連結器完成調試信息字符串段地址映射。
圖3為本發明一實施例中利用HPI接口輸出調試信息流程圖。如圖3所示,包括以下步驟步驟301DSP程序中創建各種類型的調試信息對象和調試信息輸出緩衝器和調試信息輸出的觸發條件,其中每個調試信息對象對應於各自獨立的調試信息輸出緩衝器;步驟302DSP編譯器編譯DSP程序生成DSP加載文件,其中DSP加載文件至少包含調試信息對象段和const段;圖4為本發明一實施例的COFF格式的加載文件格式示意圖。如圖4所示,COFF文件包括文件頭、可選文件頭、段頭、原始數據、再定位信息、行編號入口、符號表和字符表。在編譯程序時,編譯器將程序中所有的調試信息字符串都分配到一個指定的const段中,並且編譯產生和DSP程序中所建立的調試信息對象相對應的編譯段。
步驟303CPU加載DSP程序並根據段名檢索生成的加載文件,獲得調試信息字符串段映射到DSP的物理地址、調試信息字符串段的內容保存在CPU的地址;CPU在加載DSP程序之前首先根據段名檢索整個DSP加載文件查找到const段和各調試信息對象段,可從const段獲得const段的物理地址和const段原始數據地址,其中const段的物理地址為const段映射到DSP上的物理地址,而const段原始數據地址為const段在加載文件中的地址。DSP程序加載時,CPU通過const段原始數據地址可以獲得const段在加載文件中的地址,從而CPU可獲得const段的信息。CPU存儲獲得的const段信息並且記錄const段信息保存在CPU的起始地址。
步驟304DSP輸出調試信息到對應的調試信息輸出緩衝器;加載文件中保留有全部的調試信息字符串,所以在DSP程序運行過程中輸出調試信息時,一條調試信息可以只保留序號、調試參數和與調試信息所對應的調試信息字符串的起始地址。其中調試信息中的序號是用來確定當在發送過程中發送信息丟失時讓用戶知道,序號的值在每條數據生成時加1,調試信息中的調試參數最多為2個,在沒有調試參數時,調試信息格式中調試參數位置的值用0代替。
圖5所示為本發明一實施例的調試信息格式示意圖。如圖5所示,調試信息包括序號、調試參數和調試信息字符串指針,根據調試信息字符串指針可以確定const段中與調試信息所對應的調試信息字符串映射到DSP的物理起始地址。調試信息中的調試參數為2個,所以每條調試信息的佔用空間可為4個字。
步驟305判斷是否滿足調試信息輸出到CPU的觸發條件,如果是則通過HPI接口輸出調試信息到CPU,否則返回步驟304;調試信息輸出到CPU的觸發方式可以為定時查詢觸發方式、主動輸出觸發方式、或最大延遲觸發方式。
定時查詢方式為每隔一段時間查詢特定的調試信息輸出緩衝器,如果調試信息輸出緩衝器中的調試消息條數超過了一定的門限,則將調試信息緩衝器中所有的調試信息組包並通過HPI接口輸出,然後將調試信息指針復位。
主動輸出觸發方式主要應用於某些特殊需求場所,例如在DSP運行過程中將函數軌跡等一些重要信息循環輸出到軌跡信息輸出緩衝器中,一旦滿足一定的條件,則將整個調試信息輸出緩衝器中的信息組包輸出到CPU以方便定位問題。
最大延遲輸出方式是設置一個調試信息輸出最大延遲門限,一旦有調試信息在調試信息輸出緩衝器中的延遲時間超過這個門限,則輸出調試信息到CPU,以保證調試信息輸出的實時性。
步驟306CPU實時解析調試信息並輸出;為了輸出調試信息,CPU需要獲得保存在CPU中的與調試信息對應的調試信息字符串的地址。調試信息字符串在CPU中的起始地址為與調試信息所對應的調試信息字符串映射到DSP中的物理起始地址減去const段映射到DSP中的物理起始地址再加上保存在CPU中的const信息在CPU中的起始地址。獲得了與調試信息對應的調試信息字符串的地址後,CPU就可以對相應的調試信息字符串進行列印輸出。
以上過程中,為了在DSP程序異常時獲取DSP程序的故障定位信息,在步驟303檢索加載文件時,CPU還可從各調試信息對象段獲得DSP上所有調試信息緩衝器起始地址和DSP上所有調試信息緩衝器長度。可預先在CPU和DSP程序中分別建立一個低優先級的定時握手任務,如果在DSP程序運行中出現DSP程序可以檢測到的異常,DSP程序將在異常之前的程序運行狀態和一些重要的參數實時發送到調試主機進行觀察,以提高DSP程序運行時定位異常的效率。當出現DSP程序無法檢測到的異常時,此時CPU將不能檢測到DSP程序的握手,CPU可通過所獲得的各調試信息緩衝器的起始地址和長度從DSP上直接讀取對應的調試信息緩衝器的信息並進行解析輸出,從而為快速定位DSP死機故障提供了有力的幫助,極大地方便了對DSP故障現場的分析。
以上過程中,步驟301所述的調試信息對象按照作用不同可以分為錯誤信息對象、或DSP程序調試信息對象、或函數運行軌跡信息對象,並且調試信息緩衝器的大小可以相應進行調節。
以上所述,僅為本發明的較佳實施例而已,並非用於限定本發明的保護範圍。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。
權利要求
1.一種數位訊號處理器(DSP)軟體調試信息輸出方法,其特徵在於,包括以下步驟A、DSP程序中創建不少於1種類型的調試信息對象和不少於1個調試信息緩衝器以及調試信息輸出到CPU的觸發條件,其中每種調試信息對象對應於至少一個調試信息緩衝器並且每種調試信息對象對應於1種調試信息;B、DSP編譯器編譯所述DSP程序生成加載文件,所述加載文件至少包括調試信息字符串段,CPU根據段名檢索所述的加載文件並保存調試信息字符串段的內容到CPU,獲得調試信息字符串段映射到DSP的物理地址、調試信息字符串段的內容保存在CPU的地址;C、DSP程序將相同類型的調試信息對象所對應的調試信息輸出到與該調試信息對象類型相對應的調試信息緩衝器;D、判斷調試信息輸出到CPU的觸發條件是否滿足,如果滿足則通過主機接口(HPI)輸出調試信息到CPU,CPU計算與調試信息相對應的調試信息字符串保存在CPU的物理地址並輸出調試信息字符串,如果不滿足則返回步驟D。
2.根據權利要求1所述的DSP軟體調試信息輸出方法,其特徵在於,所述的調試信息對象為錯誤信息對象、DSP程序調試信息對象、或函數運行軌跡信息對象。
3.根據權利要求1所述的DSP軟體調試信息輸出方法,其特徵在於,步驟D所述的計算與調試信息相對應的調試信息字符串保存在CPU的物理地址為計算調試信息字符串段中該調試信息字符串映射到DSP中的物理起始地址減去調試信息字符串段映射到DSP中的物理起始地址再加上調試信息字符串段的內容保存在CPU的起始地址。
4.根據權利要求1所述的DSP軟體調試信息輸出方法,其特徵在於,步驟B進一步解析檢索文件獲得DSP上所有調試信息緩衝器起始地址、DSP上所有調試信息緩衝器的長度。
5.根據權利要求4所述的DSP軟體調試信息輸出方法,其特徵在於,進一步在步驟A設置CPU與DSP程序的定時握手任務,當所述的定時握手任務失敗時,CPU主動從調試信息緩衝器取得調試信息。
6.根據權利要求1所述的DSP軟體調試信息輸出方法,其特徵在於,步驟D所述的觸發條件為定時查詢觸發條件、主動觸發條件、或最大延遲輸出觸發條件。
全文摘要
本發明公開了一種數位訊號處理器(DSP)軟體調試信息輸出方法,包括以下步驟DSP程序中創建各種調試信息對象和對應的調試信息輸出緩衝器以及輸出調試信息的觸發條件;編譯生成加載文件;CPU根據段名檢索加載文件並保存調試信息字符串段,獲得解析調試信息所需的參數;DSP程序將相同類型的調試信息輸出到對應的調試信息輸出緩衝器;判斷觸發條件是否滿足,如果滿足就通過CPU與DSP之間的接口(HPI)輸出調試信息緩衝器中的調試信息到CPU,否則返回;CPU解析輸出調試信息。該方法可極大地節省HPI接口帶寬、減少DSP的負載、方便地實現DSP異常時輸出DSP軟體調試信息。
文檔編號G06F11/36GK1667585SQ200410004678
公開日2005年9月14日 申請日期2004年3月9日 優先權日2004年3月9日
發明者王鵬 申請人:華為技術有限公司