新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 關于使用AVR的JTAG

關于使用AVR的JTAG

作者: 時間:2016-11-28 來源:網(wǎng)絡 收藏
JTAG口的配置與使用



ATmega128單片機具有一個符合IEEE 1149.1標準的JTAG接口。JTAG接口實現(xiàn)了三個功能:采用邊界掃描功能對芯片進行檢測,對芯片內(nèi)部的非易失性存儲器(Flash和E2PROM)、熔絲和鎖定位進行編程,以及實現(xiàn)在線調(diào)試(On-chip debugging)仿真。



JTAG接口占用了4個AVR單片機的引腳,與組成了JTAG接口,即JTAG術語中的檢測訪問端口(Test Access Port—TAP)。由于JTAG的4個端口(TDI/PF7、TDO/PF6、TMS/PF5和TCK/PF4)同PF口的高4位占用相同的引腳,因此當JTAG接口處于使能狀態(tài)時,PF[7:4]就不能作為通用I/O口或ADC的輸入口使用了。所以用戶應該根據(jù)實際的需要,正確設計、配置和使用JTAG口。



作為一般的用戶,主要是將JTAG口用于程序下載和在線仿真調(diào)試,本小節(jié)就這兩種使用情況介紹對JTAG口的配置和使用的注意點。



1.JTAG口的控制

在ATmega128中,使用兩個熔絲位(JTAG使能JTAGEN,OCD使能OCDEN)和MCUCR寄存器中的JTD位對JTAG進行控制。其中JTD位可以通過用戶程序改變,而熔絲位則不能通過程序指令設置。表5.1給出了3個控制位不同設置時,JTAG接口的特性。



表5.1 JTAG口使能控制

JTAGEN OCDEN JTD LB2/LB1 PF[7:4]功能

1 x x x/x I/O,ADC

0 1 0 x/x JTAG(僅編程)

0 1 1 x/x I/O,ADC

0 0 0 1/1 JTAG(編程,在線調(diào)試)

0 0 1 x/x I/O,ADC

注:芯片出廠時JTAGEN=0,OCDEN=1



根據(jù)表5.1,用戶應根據(jù)實際情況,先對相應的熔絲位進行正確的設置,然后在上電后的初始化程序中正確的改變JTD位的設置。

注意:JTD在RESET后初值為0,同時為了防止意外開啟或關閉JTAG口,用戶程序?qū)TD的設置要按照規(guī)定的操作時序:必須在四個時鐘周期內(nèi)對JTD位重復2次寫入,才能將JTD標志位設置成所希望的值。



2.不使用在線調(diào)試功能

如果用戶不使用JTAG的在線調(diào)試功能,那么建議使用SPI串口編程下載程序,不使用JTAG口。其優(yōu)點是可以直接并可靠的使用PF[7:4]口的I/O功能,不必考慮JTD的設置。此時只要先將熔絲位JTAGEN配置為1,禁止JTAG功能即可。

如必須使用JTAG口編程下載程序,具體做法為:

a.設置JTAGEN為0,OCDEN為1,僅使能JTAG口的編程功能。

b.用戶程序應在上電后立即將JTD位設置為1,禁止JTAG口,開放PF[7:4]的I/O口功能。

這樣,芯片在隨后的運行中仍可將PF[7:4]作為I/O使用。如果需要使用JTAG口編程下載程序代碼時,將外部復位信號拉低2個時鐘周期,使芯片復位,以此把JTD清零,進入JTAG編程方式。

3.使用在線調(diào)試功能

如果需要使用JTAG口的在線調(diào)試功能,那么在硬件設計時應盡量考慮不使用PF[7:4]的I/O功能(損失4個引腳資源)。因為當JTAG口使能后,這4個引腳不能作為I/O使用,當然也無法對其進行在線的調(diào)試了。

如系統(tǒng)必須使用PF[7:4]的I/O功能,可采取以下處理方式:

a.將PF[7:4]僅用于簡單的I/O使用,如驅(qū)動LED指示、蜂鳴器等。電路設計還要注意與JTAG口的適當?shù)母綦x,防止由于外接器件造成對JTAG接口信號的影響。

b.設置JTAGEN為0,OCDEN為0,使能JTAG口的全部功能。

c.用戶程序中不改變JTD位的初始值0。使能JTAG口功能。

e.使用JTAG口編程和進行除PF[7:4]之外的在線調(diào)試。

f.調(diào)試完成后,稍微修改用戶程序,在上電后立即將JTD位設置為1,禁止JTAG口,開放PF[7:4]的I/O口功能。

g.復位芯片,使用JTAG下載修改后的程序,觀察程序的實際運行情況。



總之,一旦使用了JTAG口,就和PF[7:4]的I/O功能產(chǎn)生沖突和矛盾。因此,在硬件設計時應盡量考慮不使用PF[7:4]的I/O功能(損失4個引腳資源)。

(以上摘自《M128》一書)



在我的實驗室里,有多臺AVR的JTEG的仿真器,從老的到新的,都是原裝的。但我在教學中和設計調(diào)試產(chǎn)品過程中,從來沒使用過。我感覺到,在現(xiàn)在的技術層面上,在線仿真的技術完全可以用其他的方式代替,而且更加方便。

我不使用在線仿真技術建立以下的基礎上:對AVR的初始化過程參考ICC或CVAVR的程序生成器生成的程序編寫;盡量使用高級語言編寫系統(tǒng)程序;使用AVR的軟件模擬環(huán)境調(diào)試;使用串口或LED輸出或查看程序運行(反正是ISP,多寫幾次,我至今沒寫失效過芯片)。當然,這要求你的軟件工夫要好。



關于程序調(diào)試,是經(jīng)驗的積累,也看個人的習慣。我個人認為,一定要使用在線仿真是學51留下的“惡習”。實際上,對于外部硬件的錯誤,對時序要求嚴格,以及通信協(xié)議的處理等,在線仿真也解決不了問題的。


關鍵詞: AVRJTA

評論


技術專區(qū)

關閉