0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

用于MAXQ處理器的串行轉(zhuǎn)JTAG板

星星科技指導(dǎo)員 ? 來源:ADI ? 作者:ADI ? 2023-02-21 12:04 ? 次閱讀

本應(yīng)用筆記討論了串行轉(zhuǎn)JTAG板接受的命令。該板用于與MAXQ微控制器連接。這里描述的命令允許開發(fā)人員讀寫MAXQ的存儲器(代碼和數(shù)據(jù)),讀寫寄存器,并利用在線調(diào)試器。

介紹

MAXQ微控制器集成了一個測試訪問端口(TAP),用于通過4線同步串行接口與主機(jī)設(shè)備通信。該TAP用于支持在系統(tǒng)編程和在線調(diào)試。TAP與JTAG IEEE標(biāo)準(zhǔn)1149兼容。為了連接到TAP,達(dá)拉斯半導(dǎo)體公司開發(fā)了一種串行到JTAG板和固件,通過標(biāo)準(zhǔn)RS-232串行端口接受命令,并將這些命令與適當(dāng)?shù)腏TAG信號協(xié)調(diào)。本應(yīng)用筆記描述了固件實現(xiàn)的命令協(xié)議。

注意:本應(yīng)用筆記假定熟悉MAXQ微控制器的TAP和基本的JTAG通信。有關(guān)這些主題的詳細(xì)信息,請參閱MAXQ系列用戶指南。

與固件接口

要與串行轉(zhuǎn)JTAG板建立通信,請使用115200個數(shù)據(jù)位、無奇偶校驗和8個停止位以1波特率連接到該板的串行端口。連接后,您可以通過以下兩種模式之一與固件接口:ASCII 或二進(jìn)制。固件默認(rèn)為 ASCII 模式,在該模式下,人類可讀的文本命令被發(fā)送到電路板,結(jié)果以文本字符串的形式返回。在二進(jìn)制模式下,所有傳輸都是一系列 8 位字節(jié)。有一些命令允許隨時在兩種模式之間切換。在 ASCII 模式下,表 1 中列出的命令始終可用。所有命令都區(qū)分大小寫??梢栽谝恍兄休斎朊罱M,也可以一次輸入一個命令。

Command 描述
h 通過保持MAXQ復(fù)位來停止MAXQ。
H 釋放復(fù)位,允許MAXQ運(yùn)行。
I 將系統(tǒng)置于旁路模式并重置 TAP,使其返回到運(yùn)行-測試-空閑狀態(tài)。
JB 指示固件開始接受后臺模式命令。該命令不會切換目標(biāo)MAXQ上的模式,也不會向目標(biāo)器件發(fā)送任何JTAG命令。它只是為了指示固件MAXQ已經(jīng)通過其他方式改變了模式。
JD 指示固件開始接受調(diào)試模式命令。該命令不會切換目標(biāo)MAXQ上的模式,也不會向目標(biāo)器件發(fā)送任何JTAG命令。它只是為了指示固件MAXQ已經(jīng)通過其他方式改變了模式。
JL 指示固件開始接受引導(dǎo)加載程序命令。該命令不會切換目標(biāo)MAXQ上的模式,也不會向目標(biāo)器件發(fā)送任何JTAG命令。它只是為了指示固件MAXQ已經(jīng)通過其他方式改變了模式。
JX 指示固件開始接受旁路模式命令。該命令不會切換目標(biāo)MAXQ上的模式,也不會向目標(biāo)器件發(fā)送任何JTAG命令。它只是為了指示固件MAXQ已經(jīng)通過其他方式改變了模式。
Q 查詢 JTAG 板的接口版本號。版本號將輸出為兩個十六進(jìn)制字符。只要任何命令的格式或其輸出發(fā)生變化,此版本就會更改。編寫本文檔時的界面版本為 01。
q 查詢 JTAG 板的固件版本號。版本號將輸出為兩個十六進(jìn)制字符。此版本將在固件更改時隨時更改。編寫本文檔時的固件版本為 02。
Vtxxyy 設(shè)置 JTAG 板的 Timer0。由于JTAG時鐘必須小于目標(biāo)時鐘的1/8,固件使用Timer0來控制JTAG時鐘的速度。固件等待定時器溢出,然后再生成JTAG時鐘的每個邊沿。將“t”替換為用于計時器 T0M 位的值,將“xx”替換為用于 TH0 的值,將“yy”替換為用于 TL0 的值。所有值都應(yīng)以十六進(jìn)制格式輸入。有關(guān)這些值用途的詳細(xì)信息,請參閱《超高速閃存微控制器用戶指南》。
Yrbbdd 將值直接發(fā)送到 TAP。將“r”替換為要寫入的 TAP 寄存器:0 表示 DR,1 表示 IR。“bb”是要寫入的位數(shù)(不包括狀態(tài)位),“dd”是要發(fā)送的數(shù)據(jù)。所有值都應(yīng)以十六進(jìn)制格式輸入。
Z 將固件切換到二進(jìn)制傳輸。
z 執(zhí)行JTAG時鐘的單個脈沖。
+ 對JTAG板執(zhí)行簡單的硬件測試。CLK、TMS 和 TDI 引腳均被置位,TDO的狀態(tài)被讀取并輸出為“0”或“1”。然后可以測量引腳上的電壓,以確保它們正常工作。
對JTAG板執(zhí)行簡單的硬件測試。CLK、TMS 和 TDI 引腳均設(shè)置為邏輯低電平,TDO的狀態(tài)被讀取并輸出為“0”或“1”。然后可以測量引腳上的電壓,以確保它們正常工作。

如上述命令所示,MAXQ JTAG引擎有幾種不同的模式:旁路模式、自舉加載器模式、后臺模式和調(diào)試模式。JTAG引擎在每種模式下的功能都不同。因此,除了上面列出的命令之外,當(dāng)JTAG引擎進(jìn)入這些不同的模式時,其他命令變得可用。

旁路模式

TAP在上電復(fù)位期間初始化為旁路模式。在這種模式下,TAP被禁用,并且不與MAXQ微控制器的其余部分交互。要激活 TAP,請輸入此模式下可用的兩個附加命令之一:“D”和“L”?!癉”命令激活在線調(diào)試器,“L”命令激活引導(dǎo)加載程序。

引導(dǎo)加載程序模式

當(dāng)使用“L”命令激活自舉加載程序后,可以將字節(jié)直接發(fā)送到MAXQ的實用程序ROM。 以兩個十六進(jìn)制字符的形式輸入每個值。(有關(guān)實用程序 ROM 接受的字節(jié)數(shù)的詳細(xì)信息,請聯(lián)系技術(shù)支持。)對于輸入的每個字節(jié),固件輸出加載程序返回的字節(jié)和從TAP接收的狀態(tài)位。輸出的格式將為“00xx:ss”,其中“xx”是輸出字節(jié),“ss”是狀態(tài)位。輸入“退出加載器”命令(0x01)后,必須使用表1中列出的“J”命令之一來指示JTAG板,MAXQ不再處于自舉加載器模式。

后臺模式

在JTAG引擎的后臺模式下,可以讀寫JTAG斷點寄存器(BP0-BP5),讀寫在線調(diào)試寄存器(ICDC、ICDF、ICDA和ICDD),確定斷點匹配何時發(fā)生,并手動調(diào)用調(diào)試模式。表 2 中列出了支持這些操作的命令。對于此模式下具有輸出的所有命令,格式將為“xxyy:ss”,其中“xx”是輸出數(shù)據(jù)的MSB,“yy”是LSB,“ss”是TAP返回的狀態(tài)位。

Command 描述
A 閱讀ICDA寄存器。
axxyy 寫入 ICDA 寄存器,其中“xx”是新值的 MSB,“yy”是新 LSB。值應(yīng)以兩個十六進(jìn)制字符的形式輸入。
Bi 讀取 6 個斷點寄存器中的任何一個,其中“i”是要讀取的斷點寄存器的索引(0 到 5)。
bixxyy 寫入 6 個斷點寄存器中的任何一個,其中“i”是要寫入的斷點寄存器的索引(0 到 5),“xx”是新值的 MSB,“yy”是 LSB。MSB 和 LSB 值應(yīng)以兩個十六進(jìn)制字符的形式輸入。
C 閱讀 ICDC 寄存器。
CXX 寫入 ICDC 寄存器,其中“xx”是新值。值應(yīng)以兩個十六進(jìn)制字符的形式輸入。
D 閱讀ICDD寄存器。
dxxyy 寫入 ICDD 寄存器,其中“xx”是新值的 MSB,“yy”是新 LSB。值應(yīng)以兩個十六進(jìn)制字符的形式輸入。
E 進(jìn)入調(diào)試模式。
F 閱讀ICDF寄存器。
N 無操作。

調(diào)試模式

JTAG引擎可以通過兩種方式進(jìn)入調(diào)試模式。第一種方法是在后臺模式下輸入“進(jìn)入調(diào)試模式”命令(“E”)。激活調(diào)試的第二種方式發(fā)生在斷點匹配發(fā)生時。在這種情況下,您應(yīng)該輸入“JD”命令以通知固件模式已更改。一旦進(jìn)入調(diào)試模式,就可以讀寫MAXQ寄存器,讀取程序棧,讀寫數(shù)據(jù)存儲器,單步操作MAXQ CPU,返回后臺模式,并執(zhí)行密碼匹配以解鎖某些命令。表 3 列出了支持此功能的命令。

Command 描述
E 退出調(diào)試模式,返回后臺模式。
G 獲取所有寄存器。寄存器的順序取決于MAXQ器件的類型。
Mxxyyiijj 讀取數(shù)據(jù)存儲器,其中“xx”是要讀取的單詞地址的MSB,“yy”是地址的LSB,“ii”是要讀取的字?jǐn)?shù)的MSB,“jj”是長度的LSB。所有值都應(yīng)輸入為兩個十六進(jìn)制字符。
MXXYYIIJJ 將一個單詞寫入數(shù)據(jù)存儲器,其中“xx”是單詞地址的MSB,“yy”是地址的LSB,“ii”是要寫入的單詞的MSB,“jj”是要寫入的單詞的LSB。所有值都應(yīng)輸入為兩個十六進(jìn)制字符。
n 無操作。
Pxx1...xx32 嘗試與給定數(shù)據(jù)進(jìn)行密碼匹配。所有 32 個值都應(yīng)輸入為兩個十六進(jìn)制字符。
R0iim 讀取寄存器,其中“ii”是寄存器的索引,“m”是寄存器的模塊。索引應(yīng)作為兩個十六進(jìn)制字符輸入,模塊應(yīng)作為單個十六進(jìn)制字符輸入。
r0iimxxyy 寫一個寄存器,其中“ii”是寄存器的索引,“m”是寄存器的模塊,“xx”是新值的MSB,“yy”是LSB。新值的索引和每個字節(jié)應(yīng)輸入為兩個十六進(jìn)制字符。模塊應(yīng)作為單個十六進(jìn)制字符輸入。
Sxxyyiijj 讀取程序棧,其中“xx”是要讀取的單詞地址的MSB,“yy”是地址的LSB,“ii”是要讀取的字?jǐn)?shù)的MSB,“jj”是長度的LSB。所有值都應(yīng)輸入為兩個十六進(jìn)制字符。
T 在當(dāng)前指令指針處執(zhí)行指令。
注意:表 2 中列出的所有后臺模式命令(“E”除外)也可以在調(diào)試模式下使用。

二進(jìn)制傳輸

表 1、2 和 3 中描述的所有命令都易于手動輸入,其輸出也易于理解。然而,在許多情況下,會有軟件控制JTAG板。由于ASCII命令不便于軟件使用,并且在將結(jié)果轉(zhuǎn)換回二進(jìn)制數(shù)據(jù)時需要進(jìn)行不必要的處理,因此JTAG固件還支持二進(jìn)制傳輸。在二進(jìn)制傳輸模式下,通過首先發(fā)送指示要發(fā)送的字節(jié)數(shù)的字節(jié)將數(shù)據(jù)發(fā)送到 TAP。然后,數(shù)據(jù)應(yīng)隨之而來。對于發(fā)送的每個數(shù)據(jù)字節(jié),固件輸出兩個字節(jié)。返回的第一個字節(jié)是在傳輸過程中讀取的狀態(tài)位。第二個字節(jié)將保存?zhèn)鬏斶^程中從TAP讀取的值。在二進(jìn)制模式下還可以發(fā)送特殊命令。表 4 中描述了這些命令。要發(fā)送這些特殊命令之一,請發(fā)送 0 作為長度字節(jié)。這將指示固件將收到的下一個字節(jié)視為特殊命令。對于這些特殊命令,將返回單個字節(jié)。通常,這只是命令的回顯。

Command 描述
0x00 退出二進(jìn)制模式傳輸并返回到接受 ASCII 命令。
0x01 將 TAP 的 IR 寄存器設(shè)置為數(shù)據(jù)傳輸?shù)哪繕?biāo)。
0x02 將 TAP 的 DR 寄存器設(shè)置為數(shù)據(jù)傳輸?shù)哪繕?biāo)。
0x03 傳輸數(shù)據(jù)時僅發(fā)送每個字節(jié)的最低 3 位。
0x04 將RESET引腳設(shè)置為邏輯高電平。
0x05 將RESET引腳清除至邏輯低電平。
0x06 執(zhí)行JTAG時鐘的單個脈沖。
0x07 讀取 TDO 引腳的狀態(tài)。
0x08 傳輸數(shù)據(jù)時發(fā)送每個字節(jié)的所有 8 位。
0x09 將TMS引腳設(shè)置為邏輯高電平。
0x0A 將TMS引腳清除至邏輯低電平。
0x0B 將TDI引腳設(shè)置為邏輯高電平。
0x0C 將TDI引腳清除至邏輯低電平。
0x0D 設(shè)置 T0M 位。有關(guān)此位的詳細(xì)信息,請參閱表 1 中描述的“V”命令。
0x0E 清除 T0M 位。有關(guān)此位的詳細(xì)信息,請參閱表 1 中描述的“V”命令。
0x11 使用收到的下一個字節(jié)作為 TL0 的值。此“下一個”字節(jié)不需要長度字節(jié)或用作特殊命令轉(zhuǎn)義字符的“0”。有關(guān)TL0寄存器的更多信息,請參閱表1中描述的“V”命令。
0x12 使用收到的下一個字節(jié)作為 TH0 的值。此“下一個”字節(jié)不需要長度字節(jié)或用作特殊命令轉(zhuǎn)義字符的“0”。有關(guān) TH0 寄存器的更多信息,請參閱表 1 中描述的“V”命令。

檢測錯誤

在 ASCII 傳輸模式和二進(jìn)制傳輸模式下,發(fā)生的任何錯誤都由命令的輸出指示。在 ASCII 模式下,錯誤將輸出為“*ERR=xx*”,其中 xx 表示發(fā)生的錯誤類型。在二進(jìn)制模式下,輸出錯誤代碼而不是命令 echo。有關(guān)可能的錯誤代碼的說明,請參閱表 5。

錯誤代碼 描述
0x80 命令無法識別或命令無效。
0x90 收到無效的十六進(jìn)制字符。
0xA0 收到的輸入不足。
0xB0 斷點寄存器索引錯誤。
0xC? 收到意外狀態(tài),在哪里?表示接收的狀態(tài)位。

結(jié)論

使用本文所述的命令,串行轉(zhuǎn)JTAG板可用于將代碼加載到MAXQ處理器中,讀寫系統(tǒng)寄存器,讀寫存儲器,以及利用在線調(diào)試器。此過程既可以通過使用二進(jìn)制協(xié)議的主機(jī)軟件自動執(zhí)行,也可以與終端程序交互輸入。為完全控制MAXQ系統(tǒng)所需的所有命令提供了構(gòu)建模塊。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7336

    瀏覽量

    150105
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    18927

    瀏覽量

    227228
  • JTAG
    +關(guān)注

    關(guān)注

    6

    文章

    393

    瀏覽量

    71431
收藏 人收藏

    評論

    相關(guān)推薦

    MAXQ1850評估套件(EV kit)和面向MAXQ30的CrossWorks編譯的設(shè)計方案

    電源輸入)的引腳1 (PCB上的方形焊盤)和引腳2。連接跳線JU21 (靠近處理器的右上部)的引腳2和引腳3。所有其他跳線應(yīng)打開。在JTAG電路上,短接JH3。這從JTAG電路
    發(fā)表于 12-24 09:23

    處理器JTAG總線橋接接口

    和微處理器控制可能不是完整的工作。在此期間,由于JTAG和可編程接頭接口可初始化可編程邏輯器件。   開發(fā)早期要做的另一事情是開發(fā)微處理器控制碼。固件會有錯誤需要調(diào)試。完成調(diào)試的方法
    發(fā)表于 05-05 09:29

    如何升級MAXQ的串口-JTAG接口的固件

    Maxim/Dallas 的MAXQ 系列單片機(jī)使用JTAG 作為系統(tǒng)開發(fā)中的調(diào)試和編程工具,這是一種非常方便和廉價的開發(fā)系統(tǒng)解決方案,也得到了眾多第三方集成工具提供商的支持,以及使用者的好
    發(fā)表于 04-23 10:30 ?27次下載

    使用MAXQ3210作為微處理器監(jiān)控電路

    摘要:MAXQ3210微控制能夠完成各種微處理器監(jiān)控功能,支持包括上電復(fù)位、電源排序、看門狗超時和輸入開關(guān)去抖等功能。根據(jù)應(yīng)用,MAXQ3210還可以直接為微
    發(fā)表于 04-23 09:35 ?888次閱讀
    使用<b class='flag-5'>MAXQ</b>3210作為微<b class='flag-5'>處理器</b>監(jiān)控電路

    如何升級MAXQ的串口-JTAG接口的固件

    摘要:本應(yīng)用筆記列出了在MAXQ®串口-JTAG開發(fā)裝載固件的步驟,串口-JTAG能夠用于
    發(fā)表于 04-23 16:20 ?1203次閱讀
    如何升級<b class='flag-5'>MAXQ</b>的串口-<b class='flag-5'>JTAG</b>接口<b class='flag-5'>板</b>的固件

    實現(xiàn)MAXQ2000微控制JTAG加載主機(jī)

    摘要:MAXQ®微控制提供的JTAG啟動加載程序使外部JTAG主機(jī)能夠利用一組標(biāo)準(zhǔn)命令,輕松地識別MAXQ微控制
    發(fā)表于 04-23 16:22 ?1467次閱讀
    實現(xiàn)<b class='flag-5'>MAXQ</b>2000微控制<b class='flag-5'>器</b>的<b class='flag-5'>JTAG</b>加載主機(jī)

    MAXQ處理器的串口轉(zhuǎn)JTAG接口

    摘要:本應(yīng)用筆記討論串口轉(zhuǎn)JTAG接口能夠接收的命令。該接口用于實現(xiàn)與MAXQ微控制
    發(fā)表于 04-23 17:28 ?1098次閱讀

    充分利用MAXQ®處理器的非易失存儲服務(wù)

    充分利用MAXQ®處理器的非易失存儲服務(wù) 摘要:需要非易失數(shù)據(jù)存儲的應(yīng)用通常都需要使用外部串行EEPROM。這篇文章介紹了僅使用MAXQ微控制
    發(fā)表于 05-02 09:28 ?859次閱讀
    充分利用<b class='flag-5'>MAXQ</b>®<b class='flag-5'>處理器</b>的非易失存儲服務(wù)

    MAXQ USB-to-JTAG/1-Wire Adapter Evaluation Kit

    The MAXQ USB-to-JTAG/1-Wire Adapter is a convenient tool for programming MAXQ microcontrollers.
    發(fā)表于 11-02 13:01 ?52次下載

    調(diào)試MAXQ1103在微處理器上的應(yīng)用

    本手冊描述了如何在Rowley Systems 上使用CrossWorks C 編譯來創(chuàng)建、編譯,和調(diào)試MAXQ1103 微處理器上的應(yīng)用目標(biāo)程序。MAXQ1103 是美信公司特為金
    發(fā)表于 09-22 14:17 ?17次下載

    使用MAXQ2010評估讀取溫度

    本文描述的示例應(yīng)用使用MAXQ2010處理器MAXQ2010評估(EV)。本例展示了微控制的UART、集成ADC控制
    的頭像 發(fā)表于 02-20 10:19 ?628次閱讀
    使用<b class='flag-5'>MAXQ</b>2010評估<b class='flag-5'>板</b>讀取溫度

    如何更新MAXQ串行轉(zhuǎn)JTAG中的固件

    本應(yīng)用筆記列出了將固件加載到MAXQ串行轉(zhuǎn)JTAG開發(fā)上所需的步驟。本文中給出的步驟允許開發(fā)人員加載新固件并保持最新更改。?
    的頭像 發(fā)表于 02-20 11:06 ?781次閱讀
    如何更新<b class='flag-5'>MAXQ</b><b class='flag-5'>串行</b><b class='flag-5'>轉(zhuǎn)</b><b class='flag-5'>JTAG</b><b class='flag-5'>板</b>中的固件

    使用MAXQ610微控制上的串行端口

    MAXQ610微控制提供兩個標(biāo)準(zhǔn)的USART串行端口。異步模式1是MAXQ610串行端口支持的模式之一,可
    的頭像 發(fā)表于 02-20 13:42 ?812次閱讀

    MAXQ2000微控制實現(xiàn)JTAG自舉加載程序主控

    通過使用一組標(biāo)準(zhǔn)化命令,MAXQ微控制提供的JTAG引導(dǎo)加載程序允許外部JTAG主機(jī)輕松識別和編程任何MAXQ微控制
    的頭像 發(fā)表于 02-21 11:22 ?990次閱讀
    為<b class='flag-5'>MAXQ</b>2000微控制<b class='flag-5'>器</b>實現(xiàn)<b class='flag-5'>JTAG</b>自舉加載程序主控

    如何使用MAXQ串行驅(qū)動開發(fā)應(yīng)用

    本應(yīng)用筆記介紹如何使用MAXQ2000微控制評估(EV)上的MAXQ串行驅(qū)動庫開發(fā)應(yīng)用。
    的頭像 發(fā)表于 03-03 13:47 ?765次閱讀
    如何使用<b class='flag-5'>MAXQ</b><b class='flag-5'>串行</b>驅(qū)動<b class='flag-5'>器</b>開發(fā)應(yīng)用