面向自主可控DSP的調試系統軟硬件設計

2021-08-18 23:23馬強周樂
電腦知識與技術 2021年18期
關鍵詞:驅動程序

馬強 周樂

摘要:本文首先介紹了面向自主可控DSP的調試系統總體設計方案,對其硬件架構進行了闡述,并分析了其工作原理。隨后給出了固件程序開發、驅動程序開發,同時對調試代理程序的通信協議實現過程及實現流程進行描述。利用該調試系統,上位機工具鏈可以實現對目標DSP的在線調試和在線編程。

關鍵詞:調試系統;驅動程序;目標DSP

中圖分類號:TP393文獻標識碼:A

文章編號:1009-3044(2021)18-0236-03

開放科學(資源服務)標識碼(OSID):

Hardware and Software Design of Debug System for DSP

MA Qiang, ZHOU Le

(No.38th Research Institute,China Electronic Technology Group Corporation/AnHui Sliliepoch Technology Co.,Ltd,Hefei,230031,China)

Abstract:Firstly, this paper introduces the overall design of DSP-oriented debugging system, describes its hardware architecture and analyzes its working principle. Then the firmware development and driver development are given, and the communication protocol implementation process and implementation flow of debugging agent are described. Using this debugging system, the upper computer tool chain can realize the on-line debugging and on-line programming of the target DSP.

Key word:Debug system; Driver; TargetDSP

1 DSP簡介

魂芯DSP是我國的一款全自主架構設計的32位浮點數字信號處理器。本款處理器主要針對環境要求苛刻的應用領域設計,如彈載、機載領域雷達、對抗、SAR成像等,目的是有效保障高性能信息處理器裝備的自主可控。該DSP考慮到性能與資源功耗的平衡性,集成了1個新一代處理器內核eC104E。

2調試系統硬件架構

DSP在線仿真器是連接上位機開發環境到目標調試DUT的關鍵路徑,它能實時控制目標處理器,同時也能不斷更新實時狀態。圖1就是簡單的邏輯示意圖。

上位機主要通過集成開發環境里的調試功能軟件對DSP進行各種調試操作:包括強制啟動/停止、單步調試、斷點調試、觀察點調試等。每次調試操作的信息通過以太網口發送給ICE[1]。該款DSP在線調試資源如下:

(1)硬件斷點

在線調試邏輯電路為用戶提供了豐富的硬件斷點資源,可以同時設置64個斷點。當DSP程序運行過程中碰到硬件斷點時,會自動終止程序運行,并停留在當前狀態,程序員可以訪問當前時刻DSP的所有可見地址空間的資源,并對其中可寫的資源進行修改。

(2)觀察點

在線調試邏輯為用戶提供了32個觀察點資源,這些觀察點對DSP數據存儲器的讀寫操作以及通用寄存器的寫操作敏感。當用戶定義的讀寫存儲器操作或寫通用寄存器發生時,會自動中止DSP運行,方便程序員觀察當前DSP的狀態。

(3)單步調試

在線調試功能為用戶提供了指令單步調試功能。

指令單步是指DSP處理完設定的指令個數之后自動停止運行。指令單步的步長可調,最小為1,最大為216-1。啟動了指令單步調試功能后,如果在100個DSP處理器主時鐘周期內還沒有執行完1條指令,則自動結束當前的指令單步功能。

其工作原理是:在線仿真器是負責接收主機調試器的各種調試指令,并且將各種調試指令轉換成JTAG串行數據流,數據流主要完成串并、并串的轉換。

其工作原理是:在線仿真器是連接主機調試器和目標處理器的軟硬件調試單元,負責主機軟件和底層硬件之間的通信。在線調試器由一個可編程的NIOS嵌入式處理器來完成,該處理器主要完成上位機數據的接收、處理、發送。調試器接收由以太網接口完成,以太網驅動完成了串行數據流到buffer中的緩存,然后緩存中的數據包會根據提前約定好的調試通信協議解析成一組基本的目標處理器能夠識別的數據地址隊列,分別存放在date ram、addr ram中,這些數據地址隊進而進入下一級驅動器模塊,驅動器模塊實現了JTAG的標準IEEE1194.1,完成數據的并串轉換,提交給目標處理器。

該在線仿真器的代碼運行硬件平臺資源是ALTERA處理器的NIOS軟核,配置的片外程序存儲器是EPCS64(8Mbyte),片外數據存儲器是CY7C1368(16Mbyte)。

3 HX1041調試系統軟件設計

3.1軟件總體結構

該DSP調試系統的軟件開發中,采用“宿主機——目標機”的分布式結構。要完成開發調試,上位機與DUT之間必須能進行有效的通信。該通信協議是建立在以太網通信協議基礎之上的純應用層面的一種協議,該通信協議要保證數據傳送的高可靠性、高效率、可擴展性。

該通信協議規定,采用“一應——一答”的方式,該方式的執行順序是仿真器接收到上位機的調試命令,并且根據通信協議進行解析,將解析出來的數據經過并串轉換變成JTAG數據碼流進入目標處理器。應答包一般由仿真器直接返回上位機,有些命令比如讀等操作,需要獲得目標處理器的反饋,接收到反饋后,可以將獲得數據返回上位機,并滿足一定的通信標準實現。實際通信包中,目標機需要告訴上位機一些信息,比如是否停止,停止原因、異常原因等。因此,協議規范了目標機向上位機反饋的通知信息,目標機可以向宿主機發送通知信息,但宿主機接收到后不必再做確認應答。通信信息包是由約定的十六進制數據形成的具有開始、結束標志的字節序列[3]。

3.2通信接口軟件設計

根據TCP/IP協議,數據鏈路層和物理層相關邏輯由LAN91C111完成,網絡層uc/TCP-IP和傳輸層(應用層)的協議解析等通信功能由NIOS II中的嵌入式LwIP協議棧實現。具有很好的可移植性,能夠不同于CPU、需要RTOS的支持[2]。

在底層驅動程序設計完畢以及以太網協議棧加載完畢后,通信應用程序的設計主要通過C語言編寫程序調用以太網庫函數來實現的,開機后,以太網通信接口首先進行初始化操作包括MAC地址,IP參數等。從層次化結構中可以看出,以太網Plugs函數庫是類似于windows上的Sockets函數庫。主要用到以下幾個庫函數作為數據的接收發送到開辟到空間的隊列上,例如:

①LAN91C111_enable();? ? ? ? ? ? ? ?//lan91c111使能

②LAN91C111_reset();? ? ? ? ? ? ? //lan91c111復位

③LAN91C111_init_phy();? ? ? ? ? ? ?//初始化PHY

④alt_u32? IP4_ADDR( a,b,c,d){

alt_u32? ipadr;

ipadr=(a&0xff)<<24;

ipadr=ipadr+((b&0xff)<<16);

ipadr=ipadr+((c&0xff)<<8);

ipadr=ipadr+(d&0xff);

returnhtonl(ipadr);

}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//ip地址的設置

⑤OSTaskCreateExt ( TcpSearchGatwayTask,

NULL,

(void *)&TCP_SERVER_STK1[2048-1],

INIT_PRIORITY,

INIT_PRIORITY,

TCP_SERVER_STK1,

2048,

NULL,

0 );? ? ? ? ? ? ? ? ? ? ? //Tcp任務的建立

⑥recv_data_num = recvfrom(serveSocket, (char * )recv_buff, 256, 0,(structsockaddr* )&clientAddr, &sockAddrSize);? ? ? ? ? ? ? //接收socket的建立

⑦sendto(sendsocket,send_buffer,13,0,(structsockaddr*)&sendClientAddr,

sizeof(sendClientAddr));? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//發送socket的建立

3.3通信協議格式

本協議稱系統中傳輸的一段有實際含義的數據信息為數據包。數據包是有明確起始和結束的一段字符流。每個數據包的總長度不超過4096字節。調試命令標識區分為各種命令,如單步、運行、讀寫寄存器等。調試命令標識占1個字節。序號包標識每個包,命令包和其應答包的包序號相同,包序號定義為0遞增,占1個字節,附加信息表示包的一些額外信息,便于擴展,占一個字節。信息傳輸采用四字符同步結構,同步字符(字頭)由四個十六進制字節:“0x5A”“0xA5”“0x7B”“0XB7”組成。搜索到正確同步字符,表示可以開始接收一個完整數據包。下表1/2是一對典型的讀寄存器的通信請求和應答包。

3.4調試代理程序設計流程

3.3章節介紹了基于該DSP調試通信協議的基本規范,在該部分中將代理程序的整體程序框架進行描述。

首先上電建立網絡連接,調試代理程序開始查詢從上位機發送來的數據包,若數據包沒有來,一直循環查詢直到數據包的到來;將收到的數據包緩存到接收隊列中,對接收到數據包進行幀頭幀尾解析,若正確將該數據包寄存至下一級緩存隊列中。后續代理程序會按照接收到的命令指示,翻譯成不同的操作DSP的命令組合,比如讀寫DSP寄存器、存儲器、復DSP等。

有一類特殊的命令是上位機指令發下去后,需要調試代理程序一直查詢DSP的工作狀態直到觸發某一flag,如斷點觸發、觀察點觸發,單步結束,暫停執行。為此,在代碼中單獨設計了一個獨立于主函數的輪詢函數,可以在運行命令下發完后,將flag設置成1,輪詢函數會進入狀態查詢并以符合通信包的方式反饋給上位機,此輪詢函數對上位機來說是主動發送的,反映的是DSP的內部狀態,包括停止原因寄存器,觀察點狀態寄存器,執行PC。

4結束語

基于嵌入式系統搭建的硬件仿真器調試系統經后期用戶的使用,能實現包括停止、運行、周期單步、指令單步、讀寫寄存器、讀寫內存、讀寫DDR、讀寫片外空間、查詢等。同時也表現出了較好的穩定性,實際測試加載速度穩定在100-200 KB/s左右,滿足了調試開發所有的設計需求。圖3是用在線調試系統正在調試DSP的開發環境。

網口作為通信接口可以實現遠程通信,但是它也有局限性,比如PC一般只有一個網絡接口,當接口用作其他使用時,就無法實現網絡調式,目前正在開發基于USB3.0接口和以太網接口合一的在線仿真器,可以既實現遠程調試,也可解決接口不被占用的問題。

參考文獻:

[1] 荊濤,趙宏智,王沁.嵌入式微處理器JTAG接口中TAP控制器的設計[J].微計算機信息,2007,23(17):8-9,14.

[2]SMSC公司,LAN91C111 datasheet[EB/OL].http://www.smsc.com

[3]黃光紅.嵌入式軟件開發環境中遠程調試器的研究與設計[D].合肥:合肥工業大學碩士論文, 2007.

【通聯編輯:梁書】

猜你喜歡
驅動程序
驅動升級管理維護一條龍
避免Windows系統更新反復安裝顯示驅動
方便直觀改善Windows驅動程序管理
設備升級問題回退驅動解決
驅動光盤丟了不用愁 打印一體機驅動程序下載安裝實戰體驗
重裝系統,驅動程序的事別操心等
基于DSP的PCI驅動程序開發
基于μClinux的uSB芯片FT245BL驅動程序實現
和“問號”說再見
妙用鼠標驅動
桃花-电影-完整版视频在线观看