引 言
目前,,國內(nèi)生產(chǎn)的部分在線仿真調(diào)試器可以對部分嵌入式芯片進(jìn)行仿真調(diào)試,。但從本質(zhì)上,這些仿真調(diào)試器無法對所有帶在線調(diào)試功能的嵌入式芯片進(jìn)行仿真調(diào)試,。BDI2000和TRACE32等仿真器可以在不改變硬件條件下,,通過下載針對特定嵌入式芯片的調(diào)試“核”來實(shí)現(xiàn)對不同嵌入式芯片的仿真調(diào)試,但是非常昂貴,,難以適應(yīng)國內(nèi)絕大多數(shù)中小企業(yè)的實(shí)際需求,。
本文基于SOPC軟硬件協(xié)調(diào)設(shè)計(jì)驗(yàn)證技術(shù)設(shè)計(jì)了一款通用在線調(diào)試器,。SOPC技術(shù)將傳統(tǒng)的在線調(diào)試器以芯片形式呈現(xiàn),,采用知識產(chǎn)權(quán)核(IP core)復(fù)用技術(shù),,抽象各種不同架構(gòu)的嵌入式處理器接口,給出支持統(tǒng)一調(diào)試接口的IP core架構(gòu),,提出了基于通用在線調(diào)試器的嵌入式軟件調(diào)試方法,。
本文介紹了系統(tǒng)架構(gòu),以及關(guān)鍵子系統(tǒng)的工作原理及其與所處硬件環(huán)境之間的交互,,最后對JTAG IP core子系統(tǒng)進(jìn)行了仿真驗(yàn)證,。
1 整體設(shè)計(jì)
系統(tǒng)由用戶交互、在線仿真和JTAG IP core三個子系統(tǒng)構(gòu)成,,如圖1所示,。
用戶交互子系統(tǒng)包括TCP/IP通信端口與用戶交互界面。它主要負(fù)責(zé)訪問和處理源文件,;接收調(diào)試命令,,根據(jù)TCP/IP協(xié)議封裝成調(diào)試命令請求包,發(fā)送給通用調(diào)試器,;同時,,解析目標(biāo)機(jī)的響應(yīng)。其中,,通信端口負(fù)責(zé)與通用在線調(diào)試器通信,。
在線仿真子系統(tǒng)是一個針對不同類型嵌入式處理芯片的高擴(kuò)展性嵌入式系統(tǒng)。它包括硬件部分和軟件部分,。硬件部分采用SOPC技術(shù)加載Altera公司的IP core形成一個以NiosII CPU為核心的,,TCP/IP和JTAG IP core端口為通信模塊的硬件平臺。軟件部分包括網(wǎng)絡(luò)傳輸處理和JTAG IP core接口程序部分,。
JTAG IP core是業(yè)務(wù)信號處理邏輯模塊,,可以是ARM、PowerPC,、MIPS等不同架構(gòu)的嵌入式處理器,。
1.1 核心子系統(tǒng)設(shè)計(jì)
JTAG IP core是系統(tǒng)的核心部分。它負(fù)責(zé)目標(biāo)機(jī)調(diào)試命令的格式轉(zhuǎn)換,、傳送邏輯控制,,以及JTAG狀態(tài)機(jī)狀態(tài)轉(zhuǎn)換的控制。JTAG IP core子系統(tǒng)劃分為5個模塊,,每個模塊又由子模塊所構(gòu)成,。模塊的執(zhí)行次序不同,或并發(fā),,或順序執(zhí)行,。JTAG IP core子系統(tǒng)結(jié)構(gòu)圖如圖2所示,。
總線讀寫模塊負(fù)責(zé)接收參數(shù)和指令,同時將處理后的數(shù)據(jù)輸出到總線,。接收總線數(shù)據(jù)子模塊接收Avalon總線的數(shù)據(jù)并更新標(biāo)志位,;讀信號觸發(fā)向總線發(fā)送數(shù)據(jù)子模塊進(jìn)行數(shù)據(jù)傳輸??偩€讀寫模塊邏輯流程如圖3所示,。
參數(shù)指令傳遞模塊用于合并總線讀寫模塊接收的參數(shù)和指令。當(dāng)寫有效且主控模塊沒有工作時,,將從Avalon總線接收的前128位數(shù)據(jù)拼接起來存放在參數(shù)寄存器中,,后32位數(shù)據(jù)由指令寄存器接收;當(dāng)寫無效時停止輸入,,并且啟動狀態(tài)機(jī)模塊,。參數(shù)寄存器和指令寄存器均在在本模塊中定義。
狀態(tài)機(jī)模塊負(fù)責(zé)仿真JTAG狀態(tài)機(jī)中的16個狀態(tài),,憑借主控模塊中TMS序列驅(qū)動實(shí)現(xiàn)狀態(tài)間的轉(zhuǎn)移,,同時向JTAG的TMS端口送出TMS序列,以控制目標(biāo)機(jī)中JTAG狀態(tài)機(jī)的運(yùn)行,。在SHIFT_IR和SHIFT_DR狀態(tài)下,,相應(yīng)的目標(biāo)機(jī)指令(如ARM指令)和數(shù)據(jù)通過JTAG的TDI端口送入目標(biāo)機(jī)。
目標(biāo)機(jī)TDO序列接收模塊負(fù)責(zé)接收目標(biāo)機(jī)傳來的數(shù)據(jù),,并將其存放在相應(yīng)的寄存器中,。
主控模塊在JTAG狀態(tài)機(jī)運(yùn)行之前,根據(jù)參數(shù)指令傳遞模塊中指令寄存器的值更新狀態(tài)機(jī)的TMS和TDI序列數(shù)據(jù),;然后初始化TMS寄存器,、TDI寄存器、標(biāo)志寄存器,,通過標(biāo)志寄存器的值判斷JTAG狀態(tài)機(jī)的運(yùn)行,;在其運(yùn)行結(jié)束后,在狀態(tài)機(jī)結(jié)束處理子模塊中把目標(biāo)機(jī)傳來的數(shù)據(jù)送到輸出寄存器,,并設(shè)置讀有效以啟動總線讀寫模塊,。
1.2 JTAG IP core接口程序
在線仿真子系統(tǒng)中,JTAG IP core接口為JTAG IPcore子系統(tǒng)與NiosII CPU硬件環(huán)境之間提供數(shù)據(jù)交互服務(wù),。接口程序分成宏定義,、寫數(shù)據(jù)、讀數(shù)據(jù)3個部分,。
宏定義部分,,JTAG IP core中的操作指令包括:進(jìn)入調(diào)試狀態(tài)、獲取CPU IDCODE,、讀/寫寄存器,、讀/寫內(nèi)存,、設(shè)置斷點(diǎn)、設(shè)置觀察點(diǎn),、跳出調(diào)試狀態(tài)等,。
寫數(shù)據(jù)部分,目標(biāo)機(jī)的內(nèi)存地址和寄存器號作為參數(shù)數(shù)據(jù)傳遞到JTAG IP core子系統(tǒng)中,,調(diào)試指令(即宏定義中的指令)與參數(shù)一起被寫入JTAG IP core子系統(tǒng)中,。部分程序代碼如下:
其中,,pi表示參數(shù)數(shù)據(jù)(i=0,,…,3),,ir表示指令,。IOWR_32DIRECT(JTAGTEST_0_BASE,ADDR(i),,pi)表示將pi或ir的值寫入JTAG IP core,。
讀數(shù)據(jù)部分的功能是從JTAG IP core子系統(tǒng)中讀取目標(biāo)機(jī)傳回的數(shù)據(jù)。當(dāng)在線仿真子系統(tǒng)的Nios II CPU準(zhǔn)備從JTAG IP core子系統(tǒng)中讀取數(shù)據(jù)時,,JTAG IP core子系統(tǒng)中的寄存器數(shù)據(jù)不一定是有效數(shù)據(jù),,因而需設(shè)置一個寄存器(命名為read_ready)來循環(huán)檢測數(shù)據(jù)是否有效。如果寄存器的值不為0,,則允許讀取數(shù)據(jù),。
2 JTAG IP core子系統(tǒng)仿真驗(yàn)證
JTAG IP core子系統(tǒng)設(shè)計(jì)完成后,為了驗(yàn)證邏輯的正確性,,在QuartusII環(huán)境下對該IP core模塊進(jìn)行了仿真驗(yàn)證,。在仿真中,將NiosII CPU給出的觸發(fā)信號cLK修改為2分頻,,以便能較直觀地看清觸發(fā)子系統(tǒng)允許的TCK信號的產(chǎn)生,。當(dāng)JTAG IP core接口程序被啟動時,總線讀寫模塊開始從Avalon總線上讀取參數(shù)和指令(如圖4所示,,writedata,、address、inst∣reg_in[0,,1,,4]及ir寄存器中出現(xiàn)數(shù)據(jù))。當(dāng)參數(shù)指令傳遞模塊中的palm和ir寄存器中出現(xiàn)數(shù)據(jù)后,,主控模塊開始工作,;同時,主控模塊的busy_flag信號觸發(fā)狀態(tài)機(jī)模塊工作,。從圖中可看到,,TMS序列出現(xiàn)數(shù)據(jù),,TDI端口開始送出數(shù)據(jù)。JTAG IP core模塊能按照預(yù)定設(shè)計(jì)輸出TMS和TDI調(diào)試序列,,說明該IPcore在邏輯上是正確的,。
結(jié) 語
本文提出了以知識產(chǎn)權(quán)核(即IP core)復(fù)用技術(shù)為主的通用性調(diào)試器設(shè)計(jì)思路以及實(shí)現(xiàn)方法。下一步,,可以基于ARM,、MIPS系列芯片,結(jié)合本文的解決方案實(shí)現(xiàn)具體的IP core,,同時增加多線程調(diào)試等優(yōu)化工作,。