GDB RSP協(xié)議與USB通信在嵌入式調試系統(tǒng)中的應用
1 引言
調試嵌入式程序通常采用一種稱為交叉調試的調試技術來調試已下載到嵌入式開發(fā)板中的程序。該技術可以允許用戶通過PC機端的調試器以某種方式遠程控制目標開發(fā)板上被調試程序的運行方式,并具有查看與修改目標開發(fā)板上內存單元、寄存器以及被調試程序中變量值等功能。采用硬件仿真器來調試嵌入式程序是常用的一種開發(fā)方式。
一般嵌入式CPU都設計有JTAG口來進行硬件仿真調試。硬件仿真器通過JTAG口輸入該CPU型號專有的JTAG時序來控制CPU的運行,并通過JTAG指令來觀察CPU以及開發(fā)板上硬件設備的運行情況,主要是各種寄存器以及相關內存地址空間的實時數(shù)據(jù)。
同時將嵌入式軟件的運行結果通過JTAG口按照特定的JTAG時序輸出反饋給硬件仿真器,硬件仿真器再通過USB或者串口、并口等總線返回給PC機端的調試軟件。
硬件仿真器通常采用USB總線與PC機端的調試軟件通信,因此硬件仿真器需要采用相關的USB芯片來支持USB通信功能,同時PC端的調試軟件也需要開發(fā)針對該款USB芯片的驅動功能以支持與硬件仿真器USB芯片的數(shù)據(jù)交互。此外,PC端的調試系統(tǒng)還包括調試器(比如GDB調試器)、協(xié)議轉換器以及位于它們之間的遠程調試協(xié)議(通常是GDB RSP協(xié)議),這些都是針對特定型號CPU定制的。
本文通過對GDB RSP協(xié)議與USB通信技術的研究與應用,針對一款具有自主知識產權的ZW100DSP處理器成功開發(fā)了一套調試系統(tǒng),從而為該款DSP的應用提供了極大的便利。該調試系統(tǒng)的框架如圖1所示。
2 GDB RSP協(xié)議與EZ-USB FX2芯片概述
2.1 GDB RSP協(xié)議
GDB 遠程串行通信協(xié)議RSP(GDB RemoteSerial Protocol)是基于消息的 ASCⅡ碼字符流協(xié)議,規(guī)定有服務器端(RSP Server)與客戶端(RSP Client)之分,通常在GDB中實現(xiàn)客戶端功能,而服務器端通常另起一個進程實現(xiàn)與GDB的RSP協(xié)議通信,兩者之間的數(shù)據(jù)交互一般采用進程間的通信方式來實現(xiàn),常用的有網絡socket通信等。
調試系統(tǒng)的RSP Server和RSP Client雙方通過RSP協(xié)議進行數(shù)據(jù)的接收和發(fā)送。RSP 數(shù)據(jù)包包含了調試信息和校驗兩個部分。調試信息是以“$”作為開始、以“#”作為結尾的ASCⅡ碼字符流,后面跟兩個字節(jié)的校驗碼,該校驗碼的值是調試信息中所有字符的 ASCⅡ碼相加后取256的模,該值用兩個十六進制字符表示,數(shù)據(jù)包格式如圖2所示。
接收方接收到數(shù)據(jù)包后進行解析,如果接收到的數(shù)據(jù)包正確,會返回響應信息“+”字符,如果接收到的數(shù)據(jù)包出錯,需要重新傳送數(shù)據(jù)包,則返回響應信息“-”字符。發(fā)送方通過接收方發(fā)回的響應信息判斷數(shù)據(jù)是否發(fā)送成功。
RSP協(xié)議的調試命令是通過第一個ASCⅡ碼字符進行區(qū)別的。以下是比較常用的調試命令及其功能:
● C:報告目標CPU掛起的原因;
● c、C、s和S:恢復運行或者單步調試目標CPU;
● D:與目標板斷開連接;
● g和G:讀寫通用寄存器;
● m和M:讀寫內存地址空間;
● p和P:讀寫指定寄存器;
● X:加載二進制數(shù)據(jù);
● z和Z:清除或者設置斷點。
2.2 Cypress EZ-USB FX2功能
硬件仿真器采用Cypress的EZ-USB FX2芯片與PC端的調試進程(RSP Server)進行通信。Cypress公司的EZ-USB FX2系列芯片是世界第一個集成USB 2.0協(xié)議的微處理器,它支持12 Mb/s的全速傳輸和480 Mb/s的高速傳輸,可使用4種USB傳輸方式:控制傳輸、中斷傳輸、批量傳輸和同步傳輸;完全使用USB 2.0,并向下兼容USB1.1.
數(shù)字通信相關文章:數(shù)字通信原理
通信相關文章:通信原理
評論