<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 關(guān)于使用AVR的JTAG

          關(guān)于使用AVR的JTAG

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



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



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



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



          1.JTAG口的控制

          在ATmega128中,使用兩個熔絲位(JTAG使能JTAGEN,OCD使能OCDEN)和MCUCR寄存器中的JTD位對JTAG進(jìn)行控制。其中JTD位可以通過用戶程序改變,而熔絲位則不能通過程序指令設(shè)置。表5.1給出了3個控制位不同設(shè)置時,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,用戶應(yīng)根據(jù)實際情況,先對相應(yīng)的熔絲位進(jìn)行正確的設(shè)置,然后在上電后的初始化程序中正確的改變JTD位的設(shè)置。

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

          (以上摘自《M128》一書)



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

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



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


          關(guān)鍵詞: AVRJTA

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();