通常在嵌入式應用中,微控制器上的每一個端口引腳都需要,沒有多余的端口引腳。大多數具有可重寫內部程序存儲器(如閃存或EEPROM)的MAXQ?微控制器支持標準化的JTAG/TAP接口(也稱為調試端口),外部主機使用該接口訪問在線調試或在線編程(引導加載程序)功能。構成此接口的引腳通常與標準 GPIO 端口引腳功能多路復用,這意味著它們可能可用于應用程序,而不是在開發階段完成后浪費。本應用筆記討論了在一般應用中重復使用這些引腳的方法,并介紹了在這樣做時應牢記的注意事項。
概述
通常在嵌入式應用中,微控制器上的每個端口引腳都是應用所必需的;沒有一個作為備用。但是,開發人員可以選擇解決此問題。大多數具有可重寫內部程序存儲器(如閃存或EEPROM)的MAXQ微控制器支持標準化的JTAG/TAP接口(也稱為調試端口),外部主機使用該接口訪問在線調試或在線編程(引導加載程序)功能。用于此接口的引腳通常與標準 GPIO 端口引腳功能多路復用,以便在開發階段完成后潛在地將其提供給應用程序。本應用筆記解釋了如何在一般應用中重復使用這些接口引腳。該說明還確定了在多路復用這些引腳時要考慮的一些情況。
應用程序開發的階段
在開發階段,JTAG兼容的調試端口提供了許多有用的功能。首先,調試端口允許在外部主機的控制下加載應用程序(使用MAX-IDE,Rowley CrossWorks或IAR Embedded Workbench?等開發環境)。這意味著可以測試、修改應用程序,并在下一個測試周期中再次快速加載應用程序。其次,調試端口允許訪問MAXQ架構提供的在線調試功能。這些調試功能包括讀寫寄存器、一次單步執行程序代碼以及查看程序、數據和堆棧存儲器的能力。最后,使用引導加載程序和在線調試器對應用程序可用的內存資源幾乎沒有影響。這是因為在線調試功能完全在MAXQ硬件和實用程序ROM中實現。
一旦應用完成并經過測試,就不再需要在線調試功能。此外,在大批量部署中,可重新編程的MAXQ器件被屏蔽ROM版本所取代,也不需要在線編程(引導加載程序)功能,這意味著調試端口不再有任何用途,可以忽略不計...或更有創意地使用。當MAXQ器件上的GPIO端口引腳數量有限且不足以滿足應用需求時,回收專用于JTAG兼容調試端口的端口引腳并使其可用于一般應用可能特別有用。
重復使用調試端口引腳
以下四個引腳用于實現JTAG兼容的調試端口接口。
TCK:測試時鐘—MAXQ輸入
TMS:測試模式選擇—MAXQ輸入
TDO:測試數據輸出—MAXQ輸出
TDI:測試數據輸入—MAXQ輸入
這四個引腳通常與四個 GPIO 端口引腳多路復用;用于此目的的確切引腳因MAXQ器件而異。默認情況下,在復位或上電復位(POR)條件之后,調試端口使能,這意味著端口引腳不可用于一般應用。要禁用調試端口功能并使端口引腳用于通用,必須將系統控制寄存器中的TAP位(SC.7)清零。然后使用PD、PO和PI寄存器以正常方式控制端口引腳。
硬件注意事項
如果在應用程序開發和部署階段使用相同的硬件,則必須注意,當調試接口中的端口引腳在GPIO模式或JTAG/TAP模式下使用時,硬件將正常運行。例如,當引腳用于JTAG/TAP模式時,連接到這些引腳的任何外部器件都必須將引腳釋放到三態模式,從而允許主機和MAXQ驅動這些線路上的信號。此外,連接到這些線路的器件必須忽略在在線調試或引導加載程序操作期間由主機或MAXQ驅動的任何信號。如果響應信號可能會損壞設備,則尤其如此。
例如,假設其中一個端口引腳既用于TCK信號(在JTAG/TAP模式下使用時),也用于控制繼電器(在GPIO模式下)。當使用JTAG接口調試器件時,TCK信號快速切換,這反過來又導致繼電器打開和關閉,并可能損壞連接到繼電器的外部設備。為防止這種情況,只要器件在引導加載程序或在線調試模式下工作,就應禁用從JTAG/TAP接口連接到引腳的任何外部器件。通過使用跳線或其他引腳作為使能信號,可能會禁用外部設備。
軟件注意事項
禁用JTAG接口端口是一件簡單的事情。TAP (SC.7) 位可以隨時清零,這樣做會使端口引腳立即可供應用使用。應用程序開發人員的自然傾向可能是在應用程序代碼的開頭清除此位,以便為應用程序設置正確的操作模式。但是,盡早清除 TAP 位可能會導致應用程序開發過程中出現問題。
如果應用程序將在屏蔽ROM MAXQ器件上運行(永遠無法重新編程),那么沒有理由不在應用程序開始時將TAP清除為零。在這種情況下,將永遠不會使用引導加載程序和在線調試功能,因為代碼已經在設備中編程并且無法更改。
但是,對于在可重新編程的MAXQ器件上開發的應用,應用軟件在清除TAP位和禁用JTAG接口之前,應始終提供幾秒鐘的延遲。如果在重置后立即清除 TAP 位,則在嘗試重新加載或調試應用程序時,可能會導致以下事件序列:
主機將/復位至低電平,使MAXQ處于復位狀態。
主機釋放/有效復位。
MAXQ從復位狀態出來,開始運行代碼,從而立即關閉JTAG接口。
主機嘗試通過JTAG接口與器件通信,但無法這樣做。
此順序類似于在復位后立即進入停止模式或另一種極低功耗模式的應用程序引起的問題。在允許禁用/RESET引腳的器件上,問題可能更糟。在這些情況下,實際復位行為取決于主機觸發的事件順序,以及器件是僅使用/RESET引腳復位,還是通過上電和斷電復位。
為避免上述軟件問題,任何關閉調試/TAP端口或/RESET引腳的應用都應在啟動時延遲幾秒鐘,然后再關閉調試引擎。這種延遲允許外部主機在關閉JTAG接口之前通過JTAG接口控制MAXQ。或者,應用可以檢查另一個端口引腳(通過跳線或按鈕控制)上的輸入電平,以確定是應啟用還是禁用JTAG端口。
結論
MAXQ微控制器上的TAP (SC.7)位提供的JTAG接口的多路復用功能允許接口的四個端口引腳用于調試/引導加載程序或通用I/O。只要遵循一定的硬件和軟件預防措施,這些引腳可以作為引腳受限系統的附加資源重復使用,并在使用MAXQ器件開發應用時增加靈活性。
審核編輯:郭婷
-
微控制器
+關注
關注
48文章
7552瀏覽量
151423 -
接口
+關注
關注
33文章
8598瀏覽量
151157 -
JTAG
+關注
關注
6文章
400瀏覽量
71687
發布評論請先 登錄
相關推薦
評論