當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]一種通用型JTAG調(diào)試器的設(shè)計(jì)

System-ON-a-Programmable-Chip,即可編程片上系統(tǒng)。 用可編程邏輯技術(shù)把整個(gè)系統(tǒng)放到一塊硅片上,稱作SOPC??删幊唐舷到y(tǒng)(SOPC)是一種特殊的嵌入式系統(tǒng):首先它是片上系統(tǒng)(SOC),即由單個(gè)芯片完成整個(gè)系統(tǒng)的主要邏輯功能;其次,它是可編程系統(tǒng),具有靈活的設(shè)計(jì)方式,可裁減、可擴(kuò)充、可升級(jí),并具備軟硬件在系統(tǒng)可編程的功能。SOPC它是用可編程邏輯技術(shù)把整個(gè)系統(tǒng)放到一塊硅片上,來用于嵌入式系統(tǒng)的研究和電子信息處理。 SOPC是一種特殊的嵌入式系統(tǒng),它是片上系統(tǒng)(SOC),即由單個(gè)芯片完成整個(gè)系統(tǒng)的主要邏輯功能但它不是簡(jiǎn)單的SOC,它也是可編程系統(tǒng),具有靈活的設(shè)計(jì)方式,可裁減、可擴(kuò)充、可升級(jí),并具備軟硬件在系統(tǒng)可編程的功能。

SOPC設(shè)計(jì)技術(shù)涵蓋了嵌入式系統(tǒng)設(shè)計(jì)技術(shù)的全部?jī)?nèi)容,除了以處理器和實(shí)時(shí)多任務(wù)操作系統(tǒng)(RTOS)為中心的軟件設(shè)計(jì)技術(shù)、以PCB和信號(hào)完整性分析為基礎(chǔ)的高速電路設(shè)計(jì)技術(shù)以外,SOPC還涉及目前以引起普遍關(guān)注的軟硬件協(xié)同設(shè)計(jì)技術(shù)。由于SOPC的主要邏輯設(shè)計(jì)是在可編程邏輯器件內(nèi)部進(jìn)行,而BGA封裝已被廣泛應(yīng)用在微封裝領(lǐng)域中,傳統(tǒng)的調(diào)試設(shè)備,如:邏輯分析儀和數(shù)字示波器,已很難進(jìn)行直接測(cè)試分析,因此,必將對(duì)以仿真技術(shù)為基礎(chǔ)的軟硬件協(xié)同設(shè)計(jì)技術(shù)提出更高的要求。同時(shí),新的調(diào)試技術(shù)也已不斷涌現(xiàn)出來,如Xilinx公司的片內(nèi)邏輯分析儀Chip Scope ILA就是一種價(jià)廉物美的片內(nèi)實(shí)時(shí)調(diào)試工具。

本文利用SOPC技術(shù)的特點(diǎn),設(shè)計(jì)一種通用型調(diào)試器。根據(jù)待調(diào)試目標(biāo)板的CPU型號(hào),將相應(yīng)的調(diào)試IPcore和其他通用IPcore一起編譯生成一個(gè)嵌入式調(diào)試系統(tǒng),下載到FPGA上,實(shí)現(xiàn)一個(gè)通用型調(diào)試器。在使用同一個(gè)硬件系統(tǒng)的情況下,可以選擇不同的調(diào)試IPcore來調(diào)試不同的CPU,而不同的IPcore可以方便的互相替換。

1 JTAG調(diào)試原理

JTAG是英文“Joint Test Action Group(聯(lián)合測(cè)試行為組織)”的詞頭字母的簡(jiǎn)寫,該組織成立于1985 年,是由幾家主要的電子制造商發(fā)起制訂的PCB 和IC 測(cè)試標(biāo)準(zhǔn)。JTAG 建議于1990 年被IEEE 批準(zhǔn)為IEEE1149.1-1990 測(cè)試訪問端口和邊界掃描結(jié)構(gòu)標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)規(guī)定了進(jìn)行邊界掃描所需要的硬件和軟件。自從1990 年批準(zhǔn)后,IEEE 分別于1993 年和1995 年對(duì)該標(biāo)準(zhǔn)作了補(bǔ)充,形成了現(xiàn)在使用的IEEE1149.1a-1993 和IEEE1149.1b-1994。JTAG 主要應(yīng)用于:電路的邊界掃描測(cè)試和可編程芯片的在線系統(tǒng)編程。

目前在線仿真調(diào)試器中使用最多的調(diào)試方法都是基于JTAG標(biāo)準(zhǔn)。1986年,聯(lián)合測(cè)試行動(dòng)組發(fā)表了最早的邊界掃描測(cè)試規(guī)范(Boundary Scan Testing),經(jīng)不斷改進(jìn),1990年被批準(zhǔn)為IEEE Std 1149.1a標(biāo)準(zhǔn),簡(jiǎn)稱JTAG標(biāo)準(zhǔn)?,F(xiàn)在大多數(shù)復(fù)雜的IC芯片都帶有JTAG調(diào)試接口。

JTAG調(diào)試原理的基礎(chǔ)是邊界掃描測(cè)試。它通過在芯片的每個(gè)I/0腳附加一個(gè)邊界掃描單元(BoundaryScan Cell,BSC)以及一些附加的測(cè)試控制邏輯來實(shí)現(xiàn)。每個(gè)BSC有兩個(gè)數(shù)據(jù)通道:一個(gè)是測(cè)試數(shù)據(jù)通道——測(cè)試數(shù)據(jù)輸入TDI(Test Data Input)、測(cè)試數(shù)據(jù)輸出TD0(Test Data 0utput);另一個(gè)是正常數(shù)據(jù)通道——正常數(shù)據(jù)輸入NDI(Normal Data Input)、正常數(shù)據(jù)輸出ND0(Normal Data Output)。在正常工作狀態(tài),輸入和輸出數(shù)據(jù)可以自由通過每個(gè)BSC,正常工作數(shù)據(jù)從NDI進(jìn),從NDO出。在測(cè)試狀態(tài),可以選擇數(shù)據(jù)流動(dòng)的通道:對(duì)于輸入引腳,可以選擇從NDI或從TDI輸入數(shù)據(jù);對(duì)于輸出引腳,可以選擇從BSC輸出數(shù)據(jù)至NDO或至TDO。

JTAG控制器主要由3部分組成:測(cè)試端口控制器(Test Access Port,TAP)、指令寄存器和數(shù)據(jù)寄存器。其中,TAP控制器是JTAG的核心控制器,需要以下5個(gè)控制信號(hào):TCK(邊界掃描時(shí)鐘)、TMS(JTAG測(cè)試模式選擇)、TDI(串行邊界掃描輸入數(shù)據(jù))、TDO(串行邊界掃描輸出數(shù)據(jù))和TRST(JTAG測(cè)試邏輯復(fù)位)。TAP控制器的狀態(tài)機(jī)如圖1所示。

2 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

2.1 硬件設(shè)計(jì)與實(shí)現(xiàn)

本文采用A1tera的FPGA器件實(shí)現(xiàn)了圖2所示的硬件結(jié)構(gòu)。

上圖列出了所需要的各類IPcore,其中大部分在Altera的開發(fā)包中可以找到,主要包括:

Nios II/f CPU,50 MHz,Altera提供的免費(fèi)軟核CPU。

Avalon總線,用于數(shù)據(jù)通信。

Flash控制器,用于控制和操作Flash芯片。Flash芯片中靜態(tài)存放操作系統(tǒng)、1wIP協(xié)議棧及其他調(diào)試代碼。本系統(tǒng)中使用的Flash芯片為Am29LVl60D,容量為2MB。

SDRAM控制器,用于控制和操作SDRAM芯片。SDRAM芯片用于動(dòng)態(tài)執(zhí)行調(diào)試程序。本系統(tǒng)中使用的SDRAM芯片為三星公司的K4S640432,容量為8 MB。

Ethernet控制器,用于控制和操作網(wǎng)卡芯片。仿真器使用這個(gè)以太網(wǎng)口與PC部分的集成開發(fā)環(huán)境通信。本系統(tǒng)中使用的網(wǎng)卡芯片為L(zhǎng)AN91C111。

ARM7TDMI JTAG IPcore,仿真調(diào)試IPcore,需要自主開發(fā)。其內(nèi)部邏輯用Verilog語言實(shí)現(xiàn),然后按照Altera IPcore的標(biāo)準(zhǔn)編寫IPcore描述文件,最后掛在三態(tài)總線上,完成全部調(diào)試功能。

TCK發(fā)生器,TCK脈沖產(chǎn)生邏輯,需要自主開發(fā)。它利用Nios的時(shí)鐘生成TCK信號(hào),作為時(shí)鐘來驅(qū)動(dòng)ARM7TDMI JTAG IPcore。它被做成一個(gè)小的功能模塊,通過PIO與三態(tài)總線通信。

上述所介紹的IPcore使用Altera公司的開發(fā)工具Quartus II編譯,最后下載到Altera FPGA中。本系統(tǒng)使用的CPGA芯片是Cyclone系列的EPlCl2。該芯片包含12 060個(gè)邏輯單元,具有239 616位RAM,片上集成2個(gè)鎖相環(huán),最大用戶I/O引腳達(dá)到249個(gè)。

該硬件結(jié)構(gòu)很好地體現(xiàn)了SOPC的概念,所有的IPcore(包括Altera公司發(fā)布和自主開發(fā)的)集成在一片F(xiàn)PGA上。一個(gè)片上系統(tǒng)就基本包含了在線仿真器的絕大部分功能,任何硬件結(jié)構(gòu)設(shè)計(jì)的變化都在該片F(xiàn)PGA上,這使得通用在線仿真器這個(gè)概念得以實(shí)現(xiàn)。對(duì)其他芯片在線仿真,只需更改ARM7TDMI JTAG IPcore模塊,重新下載到FPGA中,便可以對(duì)另一種處理器芯片進(jìn)行在線仿真。該IPcore用Verilog語言實(shí)現(xiàn),保存為armjtag.v文件。通過Quartus II里的SOPC Builder可以將該文件生成組件,再將其加入Nios系統(tǒng)中。

2.2 軟件設(shè)計(jì)與實(shí)現(xiàn)

本系統(tǒng)的軟件部分包括2個(gè)模塊:一是PC端的開發(fā)調(diào)試界面,二是調(diào)試器里面的控制程序。2個(gè)模塊通過TCP/IP協(xié)議通信。

PC端開發(fā)調(diào)試界面的主要功能是接收用戶的調(diào)試命令,并顯示調(diào)試結(jié)果。這是系統(tǒng)與用戶進(jìn)行交互的唯一方式。開發(fā)調(diào)試界面對(duì)上給用戶提供統(tǒng)一的調(diào)試功能接口,對(duì)下給調(diào)試器提供統(tǒng)一的調(diào)試命令。本系統(tǒng)使用VisualC++開發(fā)。

調(diào)試器是自從計(jì)算機(jī)誕生伊始就始終伴隨著程序員的一個(gè)摯友,起初的調(diào)試器都是基于硬件直接實(shí)現(xiàn)的。直到計(jì)算機(jī)行業(yè)有了比較突出的發(fā)展之后,商業(yè)化的軟件調(diào)試器才與計(jì)算機(jī)程序編寫工作人員們見面。作為軟件維護(hù)與錯(cuò)誤修正的一個(gè)最重要、最直接,也是必不可少的一種機(jī)制,中央處理器制造商也在不厭其煩地在CPU物理結(jié)構(gòu)上支持著調(diào)試這種行為。調(diào)試器里的控制程序主要功能是將上層用戶調(diào)試命令轉(zhuǎn)換成特定的JTAG指令序列,并控制IPcore將其發(fā)送出去,同時(shí)接收J(rèn)TAG反饋信息并發(fā)送回用戶界面。本系統(tǒng)使用Nios IDE來開發(fā)。在Nios IDE的工程屬性中加入LwIP和μC/OS組件。主程序首先初始化μC/0S,初始化LwIP協(xié)議棧,再啟動(dòng)μC/OS。所有程序控制放在μC/OS的OSStart()任務(wù)里。該任務(wù)首先建立一個(gè)套接字,然后在死循環(huán)中等待數(shù)據(jù)到來。當(dāng)收到來自PC端的調(diào)試命令后,從數(shù)據(jù)包中分離出命令字和參數(shù),將命令字轉(zhuǎn)換成IPcore需要的調(diào)試命令,通過Avalon總線將其發(fā)送到IPcore,并等待IPcore工作完成。最后將IPcore傳回的數(shù)據(jù)打包發(fā)回PC端。

目前提供的通用調(diào)試命令如表1所列。

在TCP/IP數(shù)據(jù)包中,有效數(shù)據(jù)為12字節(jié)。第1至4字節(jié)是命令代碼,第5至8字節(jié)為命令參數(shù)1,第9到12字節(jié)為命令參數(shù)2。命令參數(shù)1和命令參數(shù)2是否有效取決于命令代碼。主控制程序收到數(shù)據(jù)包后,將命令代碼發(fā)往JTAG IPcore的指令端口地址,并根據(jù)命令代碼向參數(shù)端口地址發(fā)送命令參數(shù)1。

在SOPC的硬件系統(tǒng)設(shè)計(jì)中,所有的外設(shè)都是統(tǒng)一編址。將JTAG IPcore的指令端口地址和參數(shù)端口地址分別設(shè)置成0x00910850和0x00910860,端口位寬為32位。因此在程序里,往IPcore發(fā)送指令只需要往地址0x00910850寫32位數(shù)據(jù);往IPcore發(fā)送參數(shù)只需要往地址Ox00910860寫32位數(shù)據(jù)。反饋數(shù)據(jù)端口地址設(shè)置成Ox00910870,端口位寬為32位。

2.3 JTAG IPcore的實(shí)現(xiàn)

JTAG IPcore是本調(diào)試器的核心,下面簡(jiǎn)單介紹一下該部分的實(shí)現(xiàn)。

IPcore的接口如圖3所示。

該IPcore的對(duì)外接口由兩部分組成:一是與Avalon總線通信的接口部分,即圖中的左邊部分;二是與被調(diào)試CPU通信的接口部分,即圖中的右邊部分。另外,在整個(gè)實(shí)現(xiàn)中,定義了一些重要的寄存器。

“reg[3000:O]tms,tdo"分別用來存放完成當(dāng)前操作的tms序列和tdo序列。像訪問存儲(chǔ)器這樣的操作需要很長(zhǎng)的tms序列和tdo序列,因此用了3001位。IPcore每次從這2個(gè)寄存器讀取1位后,就向?qū)?yīng)的引腳發(fā)送數(shù)據(jù)。tdi寄存器只用了134位,因?yàn)椴皇敲總€(gè)tdi輸入對(duì)JTAG調(diào)試都有用。parmreg寄存器用來存放總線上傳來的參數(shù)。tdidata寄存器用來存放從tdi引腳讀取的有效數(shù)據(jù),將被發(fā)送到Avalon總線。

Avalon總線上來的指令發(fā)送到ins[31:0]端口。在調(diào)試器主程序里判斷指令,做出相應(yīng)的動(dòng)作。當(dāng)IPcore讀取到某個(gè)指令后,根據(jù)命令代碼查找對(duì)應(yīng)的TMS命令序列,找到以后將命令序列送到tms寄存器。同時(shí),通過parm[31:O]端口讀取命令參數(shù),根據(jù)命令參數(shù)生成對(duì)應(yīng)的TDO序列,將其送到tdo寄存器。當(dāng)兩個(gè)寄存器的內(nèi)容準(zhǔn)備好后,在TCK時(shí)鐘的控制下,通過TMS引腳和TD0引腳分別串行輸出。在TDO引腳輸出的同時(shí)檢測(cè)TDI引腳,并在適當(dāng)時(shí)機(jī)將TDI引腳上的數(shù)據(jù)讀入IPcore,經(jīng)過處理后發(fā)送回總線。

由于TMS序列長(zhǎng)度較長(zhǎng)且其對(duì)應(yīng)于各個(gè)調(diào)試命令是固定不變的,因此在本設(shè)計(jì)中,將TMS序列作成一個(gè)表,存放在IPcore里,而不是通過總線發(fā)送。需要時(shí),根據(jù)不同的命令代碼來讀取。

結(jié) 語

本文介紹了一個(gè)基于SOPC的通用調(diào)試器的設(shè)計(jì)方案與實(shí)現(xiàn)過程。在開發(fā)過程中,IP復(fù)用、軟硬件協(xié)同設(shè)計(jì)等先進(jìn)的嵌入式設(shè)計(jì)思想對(duì)縮短開發(fā)時(shí)間、降低開發(fā)風(fēng)險(xiǎn)起到了很好的作用。同時(shí),自主開發(fā)的ARM7TDMIJTAG IPcore和C8051 JTAG IPcore體現(xiàn)了該調(diào)試器的通用性。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉