MAXQ微控制器中JTAG接口引腳的復(fù)用
簡(jiǎn)介
通常在嵌入式應(yīng)用中,微控制器的每個(gè)端口引腳對(duì)于實(shí)際應(yīng)用來(lái)說(shuō)都是必需的,沒(méi)有多余的引腳。然而,開(kāi)發(fā)人員可采用其他方法來(lái)解決這個(gè)問(wèn)題。大部分MAXQ微控制器可重寫(xiě)內(nèi)部程序存儲(chǔ)器(如閃存或EEPROM),支持標(biāo)準(zhǔn)JTAG/TAP接口(也稱(chēng)為調(diào)試端口)。外部主機(jī)可利用該接口執(zhí)行在線(xiàn)調(diào)試或在線(xiàn)編程(引導(dǎo)裝載)功能。該接口中的所有引腳通??蓮?fù)用為標(biāo)準(zhǔn)GPIO端口引腳功能,從而使這些引腳在開(kāi)發(fā)階段結(jié)束之后仍然可以被使用。本應(yīng)用筆記闡述了在常規(guī)應(yīng)用中如何復(fù)用這些引腳。同時(shí),本應(yīng)用筆記還指出了在復(fù)用這些引腳時(shí)需要考慮的事項(xiàng)。
應(yīng)用系統(tǒng)開(kāi)發(fā)階段
在開(kāi)發(fā)階段,JTAG兼容調(diào)試端口可提供許多有用功能。首先,調(diào)試端口允許應(yīng)用系統(tǒng)在外部主機(jī)控制下對(duì)其加載(使用開(kāi)發(fā)環(huán)境如MAX-IDE、Rowley CrossWorks或IAR Embedded Workbeach?)??梢愿鶕?jù)以后的測(cè)試需求對(duì)應(yīng)用系統(tǒng)進(jìn)行測(cè)試、修改和快速加載。其次,調(diào)試端口允許執(zhí)行MAXQ架構(gòu)的在線(xiàn)調(diào)試功能,這些調(diào)試功能包括寄存器的讀寫(xiě)操作、指令的單步調(diào)試,并可查看程序、數(shù)據(jù)、堆棧存儲(chǔ)器。引導(dǎo)裝載和在線(xiàn)調(diào)試功能會(huì)對(duì)應(yīng)用系統(tǒng)所能使用的存儲(chǔ)器資源產(chǎn)生一些微小的影響。因?yàn)樵诰€(xiàn)調(diào)試功能完全由MAXQ硬件和公用程序ROM實(shí)現(xiàn)。
在完成了應(yīng)用系統(tǒng)的開(kāi)發(fā)測(cè)試后,不再需要使用在線(xiàn)調(diào)試功能。此外,在大批量生產(chǎn)中,可重新編程的MAXQ器件將被掩模ROM器件替代,不再需要在線(xiàn)編程功能。這就意味著應(yīng)用系統(tǒng)不再使用調(diào)試端口,此時(shí)調(diào)試端口可廢棄不用也可有效地對(duì)其再利用。當(dāng)MAXQ器件的GPIO端口引腳數(shù)不夠使用時(shí),若把專(zhuān)門(mén)用于JTAG調(diào)試的端口引腳重新利用起來(lái),并且讓常規(guī)應(yīng)用系統(tǒng)使用這些引腳,將會(huì)起到意想不到的作用。
調(diào)試端口引腳的重復(fù)使用
實(shí)現(xiàn)JTAG兼容調(diào)試端口的連接用到下面4個(gè)引腳:
TCK:測(cè)試時(shí)鐘—MAXQ輸入
TMS:測(cè)試模式選擇—MAXQ輸入
TDO:測(cè)試數(shù)據(jù)輸出—MAXQ輸出
TDI:測(cè)試數(shù)據(jù)輸入—MAXQ輸入
這4個(gè)引腳可以典型地復(fù)用為4個(gè)GPIO端口;具體復(fù)用引腳隨MAXQ器件的不同而不同。在復(fù)位或上電復(fù)位(POR)狀態(tài)后,調(diào)試端口默認(rèn)為使能狀態(tài),常規(guī)應(yīng)用系統(tǒng)不能使用這些端口引腳。為了屏蔽調(diào)試端口功能使端口引腳能夠用于常規(guī)目的,必須把系統(tǒng)控制寄存器的TAP位(SC.7)清零。然后按正常方式通過(guò)PD、PO和PI寄存器控制這些端口引腳。
硬件設(shè)計(jì)注意事項(xiàng)
若在系統(tǒng)開(kāi)發(fā)階段和批量生產(chǎn)階段使用同一套硬件,不論調(diào)試接口的端口作為GPIO還是JTAG/TAP使用,都必須使硬件能夠正常運(yùn)行。例如:當(dāng)這些引腳用于JTAG/TAP時(shí),任何與這些引腳相連的外部器件都必須釋放這些引腳,使其處于三態(tài)模式,以保證主機(jī)與MAXQ這些引腳之間的正確驅(qū)動(dòng)。此外,在線(xiàn)調(diào)試或引導(dǎo)加載過(guò)程中,連接到這些引腳的器件不能受主機(jī)和MAXQ在這些引腳上的任何驅(qū)動(dòng)信號(hào)的影響。這一點(diǎn)特別需要注意,因?yàn)閷?duì)這些信號(hào)的響應(yīng)有可能造成器件損壞。
舉一個(gè)例子,假設(shè)端口中的一個(gè)引腳既被用于接收TCK信號(hào)(當(dāng)被用于JTAG/TAP模式時(shí))又被用于控制繼電器(在GPIO模式時(shí))。當(dāng)用JTAG接口調(diào)試器件時(shí),由于TCK信號(hào)的快速翻轉(zhuǎn)將導(dǎo)致繼電器的接通和斷開(kāi),可能導(dǎo)致連接到繼電器的外部設(shè)備損壞。為了防止這種情況發(fā)生,在器件將要引導(dǎo)加載或進(jìn)行在線(xiàn)調(diào)試時(shí),所有通過(guò)JTAG/TAP接口與這些引腳相連的外部器件都必須被禁用。
軟件設(shè)計(jì)注意事項(xiàng)
禁用JTAG接口的操作非常簡(jiǎn)單,任何時(shí)候只要把TAP (SC.7)位清零,系統(tǒng)將立即使用這些端口引腳。為了把應(yīng)用系統(tǒng)設(shè)置在適當(dāng)模式,系統(tǒng)開(kāi)發(fā)人員傾向于在應(yīng)用程序代碼的開(kāi)始就把TAP位清零。然而,這么早就把TAP位清零會(huì)引起應(yīng)用系統(tǒng)開(kāi)發(fā)中出現(xiàn)一些問(wèn)題。
如果應(yīng)用系統(tǒng)中采用掩模ROM MAXQ器件(這種器件不能被重新編程),那么在應(yīng)用程序的起始位置對(duì)TAP清零就不合理。這種情況下,由于程序代碼已經(jīng)燒入器件且不能更改,將無(wú)法使用引導(dǎo)加載和在線(xiàn)調(diào)試功能。
然而,對(duì)采用可重新編程的MAXQ器件的應(yīng)用系統(tǒng)來(lái)說(shuō),其應(yīng)用軟件應(yīng)該總是在TAP位清零和禁用JTAG接口之前提供幾秒鐘的延時(shí)。如果緊隨復(fù)位操作之后馬上對(duì)TAP位清零,在試圖重新加載或調(diào)試應(yīng)用程序的時(shí)候可能會(huì)順序發(fā)生以下事件:
主機(jī)驅(qū)動(dòng)一個(gè)低電平/RESET信號(hào),從而使MAXQ處于復(fù)位狀態(tài)。
主機(jī)釋放/RESET復(fù)位信號(hào)。
MAXQ脫離復(fù)位狀態(tài)并開(kāi)始運(yùn)行程序代碼,因此JTAG接口立即被禁用。
主機(jī)試圖通過(guò)JTAG接口與器件通信,但通信已經(jīng)無(wú)法進(jìn)行。
這個(gè)過(guò)程與應(yīng)用系統(tǒng)在復(fù)位之后馬上進(jìn)入關(guān)機(jī)狀態(tài)或低功耗關(guān)斷模式類(lèi)似。對(duì)于可以禁用/RESET引腳的器件,如MAXQ3210/MAXQ3212微控制器,這個(gè)問(wèn)題更加嚴(yán)重。這種情況下,實(shí)際的復(fù)位操作取決于主機(jī)觸發(fā)的順序,還取決于器件是僅通過(guò)/RESET引腳還是通過(guò)上電、斷電過(guò)程復(fù)位的。
為了避免上述軟件問(wèn)題,任何禁用/TAP調(diào)試端口或/RESET引腳的應(yīng)用系統(tǒng)在啟動(dòng)時(shí)都應(yīng)該在關(guān)閉調(diào)試引擎之前提供幾秒鐘的延時(shí)。這個(gè)時(shí)間延遲可以使外部主機(jī)在JTAG接口被禁用之前通過(guò)它對(duì)MAXQ進(jìn)行控制。另一種方法是:應(yīng)用系統(tǒng)可通過(guò)檢查別的端口引腳(由跳線(xiàn)器或按鈕控制)上的輸入電平來(lái)確定JTAG端口使能還是禁用。
結(jié)論
MAXQ微控制器的TAP (SC.7)位提供了JTAG接口的復(fù)用功能。只要遵循某些硬件和軟件設(shè)計(jì)的注意事項(xiàng),JTAG接口的4個(gè)引腳就可用于調(diào)試/引導(dǎo)加載,或當(dāng)作通用I/O使用。對(duì)于引腳數(shù)目受限的系統(tǒng)來(lái)說(shuō),這些引腳的復(fù)用可提供額外的資源。而當(dāng)采用MAXQ器件開(kāi)發(fā)應(yīng)用系統(tǒng)時(shí),這些引腳的復(fù)用也會(huì)提高系統(tǒng)的靈活性。
linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論