新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 關于使用AVR的JTAG

        關于使用AVR的JTAG

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



        ATmega128單片機具有一個符合IEEE 1149.1標準的JTAG接口。JTAG接口實現了三個功能:采用邊界掃描功能對芯片進行檢測,對芯片內部的非易失性存儲器(Flash和E2PROM)、熔絲和鎖定位進行編程,以及實現在線調試(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接口處于使能狀態時,PF[7:4]就不能作為通用I/O口或ADC的輸入口使用了。所以用戶應該根據實際的需要,正確設計、配置和使用JTAG口。



        作為一般的用戶,主要是將JTAG口用于程序下載和在線仿真調試,本小節就這兩種使用情況介紹對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(編程,在線調試)

        0 0 1 x/x I/O,ADC

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



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

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



        2.不使用在線調試功能

        如果用戶不使用JTAG的在線調試功能,那么建議使用SPI串口編程下載程序,不使用JTAG口。其優點是可以直接并可靠的使用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.使用在線調試功能

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

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

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

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

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

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

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

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



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

        (以上摘自《M128》一書)



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

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



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


        關鍵詞: AVRJTA

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 建湖县| 丹巴县| 大埔区| 南江县| 郴州市| 繁昌县| 阿图什市| 仲巴县| 滨海县| 即墨市| 烟台市| 江门市| 名山县| 井研县| 大埔区| 册亨县| 濮阳市| 泗洪县| 汪清县| 马关县| 雷州市| 唐海县| 洛浦县| 田东县| 历史| 九龙坡区| 资阳市| 花莲市| 邵武市| 乌鲁木齐市| 大宁县| 定安县| 紫云| 嘉荫县| 左贡县| 盘山县| 驻马店市| 苏尼特左旗| 富顺县| 宾川县| 贵阳市|