專利名稱:一種實現(xiàn)在數(shù)字信號處理器上的打印方法
技術領域:
本發(fā)明涉及移動通信技術,更具體地是指一實現(xiàn)在數(shù)字信號處理器上的打印方法。
在移動通信中,將實驗數(shù)據打印一般是在數(shù)字信號處理器上進行的,如TMS320C6x是TI公司的一種數(shù)字信號處理器系列,它采用先進的長指令字結構,通過提高指令級的并行來提高性能,峰值處理能力達1600MIPS,數(shù)字信號處理器應用能夠通過C語言來實現(xiàn),在C語言中,最基本的打印函數(shù)是著名的printf,它完成的功能包括對打印參數(shù)的格式化和格式化結果的實際輸出。
由于數(shù)字信號處理器應用于高速信號處理的場合,對實時性和處理性能有較高的要求,(如TMS320C6x數(shù)字信號處理器系列主要應用于需要高速處理運算的場合)處理器的設計側重于數(shù)據的吞吐和運算速度,對人機交互的支持不夠,沒有通常意義上的串口設備,調試程序是通過仿真器進行的。
現(xiàn)有的幾種解決數(shù)字信號處理器上的調試信息打印的方案一般采用如下幾種(1)使用廠商提供的C標準庫函數(shù)printf執(zhí)行過程首先通過第一個參數(shù)的格式化信息對欲打印的信息進行格式化處理,形成最終的目標字符串,再通過仿真器把目標字符串傳到主機,由主機上的仿真調試軟件顯示。
優(yōu)點printf函數(shù)是標準庫函數(shù)的完全實現(xiàn),格式化機制靈活,能打印多個參數(shù)和多種類型的數(shù)據。
缺點打印一條消息的時間太長,打印一個字符就需要1000多個指令周期,隨著字符數(shù)的增加和整數(shù)類型、浮點類型等的格式化,打印一條消息的時間將成倍增長,隨之而來的問題是打印一條消息的時間是不確定的,這對需要高速處理的實時應用來說,是不能忍受的,而且在沒接仿真器的情況下,這種方法也是不可行的。
(2)外接串口芯片,重定向printf輸出到串口芯片為了解決在不接仿真器的環(huán)境下也能打印調試信息,通過處理器的外部內存接口連接一個專用串口芯片,再與主機的串口連接。執(zhí)行過程中消息的格式化部分與(1)中printf函數(shù)一樣,實際輸出時不是通過仿真器,而是通過串口芯片來輸出,最后由主機的串口終端來接收并顯示調試信息。此種方法除了有不依賴仿真器外的優(yōu)點外,其它的優(yōu)缺點與(1)的方案相同。
(3)外接串口芯片,直接輸出消息串到串口芯片硬件上的連接與(2)的方法一樣,由于參數(shù)的格式化過程需要較多的指令周期,通過取消格式化的過程,來提高執(zhí)行的效率,在需要打印時,直接取固定的字符串寫入串口芯片,由主機的串口終端來接收并顯示調試信息。
優(yōu)點由于沒有格式化的過程,所以效率大為提高,打印的時間主要就是把字符串寫入串口芯片的時間,對性能的影響較小,能夠滿足實時應用的需求。
缺點由于取消了參數(shù)的格式化過程,所以打印控制不靈活,只能打印固定串,不能打印整數(shù)、浮點數(shù)等,這對C語言程序的調試很不利。消息串長度的不同,打印時間也不同,特別是串口的傳輸相對較慢,在消息串較長串口芯片的緩沖區(qū)滿時,必須等待串口的發(fā)送,影響處理器的效率。
為此,本發(fā)明的目的是針對現(xiàn)有在數(shù)字處理器上進行打印的方法存在的不足之處,提供一種實現(xiàn)在數(shù)字信號處理器上的打印方法,使其在不接或沒法接仿真器的情況下,調用接口能提供靈活的打印機制,又能直觀地顯示調試信息,同時對處理器在參數(shù)的格式化和輸出的性能和效率不會有大的損害。
為了實現(xiàn)上述目的,本發(fā)明采用如下技術方案該實現(xiàn)在數(shù)字信號處理器上的打印方法,該方法基于主機和目標機上,目標機的串口芯片接在數(shù)字信號處理器的外部內存接口上,數(shù)字信號處理器程序通過外部內存接口存取串口芯片的寄存器,通過串行線將串口芯片與主機中的一個串口連接,在打印時,先將數(shù)據的格式化信息通過串口芯片發(fā)送到主機上,并由主機執(zhí)行格式化過程;在對數(shù)據信息進行格式時,采用固定字節(jié)來適合串口緩沖的大小,使一條消息能一次寫入;最后在打印時,將所要打印的數(shù)據信息直接放入主機的緩沖器中,由主機后臺進行格式化顯示打印。
由于本發(fā)明采用將數(shù)據格式化信息通過串口芯片發(fā)送到主機上,并由主機執(zhí)行格式化過程;在對數(shù)據信息進行格式時,采用固定字節(jié)來適合串口緩沖的大小,使一條消息能一次寫入;最后在打印時,將所要打印的數(shù)據信息直接放入主機的緩沖器中,由主機后臺進行格式化顯示打印。利用本發(fā)明的打印方法能有效地克服在背景中所描寫的三種方法存在的缺點,在沒有接仿真器的情況下,考慮了數(shù)字信號處理器的應用場合對效率性能要求較岢刻和C語言編程的可讀性和靈活性;調用接口能提供靈活的打印機制,又能直觀地顯示調試信息,同時對數(shù)字信號處理器在參數(shù)的格式化和輸出的性能影響降到最低。
下面結合附圖和實施例,對本發(fā)明的方法作一詳細地說明
圖1為本發(fā)明的方法所基于的硬件結構示意圖。
請結合圖1本發(fā)明打印方法基于主機1和目標機2上,目標機2的串口芯片接在數(shù)字信號處理器的外部內存接口上,數(shù)字信號處理器(如TMS320C6x系列的處理器)就置于目標機2上,數(shù)字信號處理器程序通過外部內存接口存取串口芯片的寄存器,通過一根串行線3將串口芯片與主機中的一個串口連接,本發(fā)明的方法是先將數(shù)據格式化信息通過串口芯片發(fā)送到主機上,并由主機執(zhí)行格式化過程;在對數(shù)據信息進行格式時,采用固定字節(jié)來適合串口緩沖的大小,使一條消息能一次寫入;最后在打印時,將所要打印的數(shù)據信息直接放入主機的緩沖器中,由主機后臺進行格式化顯示打印。
在將數(shù)字信號處理器上的數(shù)據信息發(fā)送到串口芯片過程中,先檢測串口的狀態(tài)如果不全為空,就不發(fā)送,否則取一條數(shù)據信息一次性寫入串口進行發(fā)送,發(fā)送采用緩沖的方式。
將數(shù)據信息格式化為序號、格式地址、參數(shù)1、參數(shù)2四個域。所述序號是用來確定在發(fā)送過程中發(fā)生信息丟失時讓用戶知道,序號的值在每條數(shù)據生成時加一;格式地址是printf函數(shù)的第一個格式化參數(shù)的地址;參數(shù)1和參數(shù)2是最多2個的32位參數(shù),可以有0、1或2個,在沒有時,其值以0代替,參數(shù)最多只能取兩個。
以在TMS320C6x數(shù)字信號處理器上實現(xiàn)打印為例,目標機2的串口芯片接在處理器C6x的外部內存接口上,處理器程序通過外部內存接口存取串口芯片的寄存器,通過一根串行線3將串口芯片與主機1的一個串口連接。
目標機2側串口采用帶16個字節(jié)緩沖的芯片,一次可以同時寫入16個字節(jié),為了使一條消息能一次寫入串口芯片,而不等待串口的發(fā)送,必須滿足兩個條件A)一條消息發(fā)送前,串口緩沖區(qū)是空的B)一條消息的長度<=16為了滿足第一個條件,消息發(fā)送必須采用緩沖的方式,消息直接寫入內存緩沖區(qū),由后臺打印任務在任務空閑時,并且串口緩沖區(qū)為空時一次性寫入串口,為了滿足第二個條件,我們采用一條消息固定為16個字節(jié)長,具體內容為32位 32位 32位32位
序號用來確定有無消息丟棄,在每條消息生成時加一,格式地址是printf函數(shù)的第一個參數(shù)的地址,包含格式化參數(shù),參數(shù)1和參數(shù)2是最多2個的32位參數(shù),可以有0,1或2個,在沒有時,值以0代替。
調用實例0個參數(shù),假定"No extra parameter\n"的地址為0x80001000,則printf("No extra parameter\n");實際輸出為
1個參數(shù),假定"One parameter is%d\n"的地址為0x80002000,value1為100,則printf("One parameter is%d\n",value1);實際輸出為
2個參數(shù),假定"Two parameters are%d and%d\n"的地址為0x80003000,value1為100,value2為200,則printf("Two parameters are%d and%d\n",value1,value2);實際輸出為
一個printf函數(shù)的執(zhí)行只是把參數(shù)的值拷到緩沖區(qū)中,總共需要24個指令周期就能完成,實際的輸出是由后臺進程在空閑時一次一條消息寫入串口的。
主機1側主機側的軟件維護一個較大的緩沖區(qū),來接收目標機來的一個一個消息,并從緩沖區(qū)中取消息進行顯示,由于傳給主機的消息并不是實際的結果,主機必須對消息進行解析并格式化,處理器C6x的目標文件格式是通用目標文件格式,里面包含了各種符號的地址信息和數(shù)據信息,通過查找通用目標文件格式文件,就能取到相應的信息。
通過查找0x80001000的地址的數(shù)據得到字符串"No extra parameter\n",再通過解析此字符串得到結果,并打印結果如下1.No extra parameter使用本發(fā)明的打印方法后,打印一條消息所用的時間是24個指令周期加上寫16個字節(jié)到串口的時間,所以對性能幾乎沒有影響。在功能上實現(xiàn)了類似printf函數(shù)的靈活的格式化打印,在效率上不會影響性能,并且消息不管長短,時間是確定的。
權利要求
1.一種實現(xiàn)在數(shù)字信號處理器上的打印方法,該方法基于主機和目標機上,目標機的串口芯片接在數(shù)字信號處理器的外部內存接口上,數(shù)字信號處理器程序通過外部內存接口存取串口芯片的寄存器,通過串行線將串口芯片與主機中的一個串口連接,其特征在于先將數(shù)據格式化的信息通過串口芯片發(fā)送到主機上,并由主機執(zhí)行格式化的過程;在對數(shù)據信息進行格式化時,采用固定字節(jié)來適合串口緩沖的大小,使一條消息能一次寫入;最后在打印時,將所要打印的數(shù)據信息直接放入主機的緩沖器中,由主機后臺進行格式化顯示打印。
2.如權利要求1所述的實現(xiàn)在數(shù)字信號處理器上的打印方法,其特征在于在將數(shù)字信號處理器上的數(shù)據信息發(fā)送到串口芯片過程中,先檢測串口的狀態(tài)如果不全為空,就不發(fā)送,否則取一條數(shù)據信息一次性寫入串口進行發(fā)送,發(fā)送采用緩沖的方式。
3.如權利要求1所述的實現(xiàn)在數(shù)字信號處理器上的打印方法,其特征在于所述的格式化是將數(shù)據信息格式化為序號、格式地址、參數(shù)1、參數(shù)2四個域。
4.如權利要求3所述的實現(xiàn)在數(shù)字信號處理器上的打印方法,其特征在于所述序號是用來確定在發(fā)送過程中發(fā)生信息丟失時讓用戶知道,序號的值在每條數(shù)據生成時加一;格式地址是printf函數(shù)的第一個格式化參數(shù)的地址;參數(shù)1和參數(shù)2是最多2個的32位參數(shù),可以有0、1或2個,在沒有時,其值以0代替,參數(shù)最多只能取兩個。
全文摘要
本發(fā)明公開了一種實現(xiàn)在數(shù)字信號處理器上的打印方法,該方法將數(shù)據格式化信息通過串口芯片發(fā)送到主機上,并由主機執(zhí)行格式化過程;在對數(shù)據信息進行格式時,采用固定字節(jié)來適合串口緩沖的大小,使一條消息能一次寫入;最后在打印時,將所要打印的數(shù)據信息直接放入主機的緩沖器中,由主機后臺進行格式化顯示打印。它具有靈活的打印機制,直觀地顯示調試信息,對參數(shù)的格式化和輸出的性能影響低。
文檔編號G06F3/12GK1360250SQ00127968
公開日2002年7月24日 申請日期2000年12月21日 優(yōu)先權日2000年12月21日
發(fā)明者黃金華 申請人:華為技術有限公司