0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用于MAXQ处理器的串行转JTAG板

星星科技指导员 来源:ADI 作者:ADI 2023-02-21 12:04 次阅读

本应用笔记讨论了串行转JTAG板接受的命令。该板用于与MAXQ微控制器连接。这里描述的命令允许开发人员读写MAXQ的存储器(代码和数据),读写寄存器,并利用在线调试器。

介绍

MAXQ微控制器集成了一个测试访问端口(TAP),用于通过4线同步串行接口与主机设备通信。该TAP用于支持在系统编程和在线调试。TAP与JTAG IEEE标准1149兼容。为了连接到TAP,达拉斯半导体公司开发了一种串行到JTAG板和固件,通过标准RS-232串行端口接受命令,并将这些命令与适当的JTAG信号协调。本应用笔记描述了固件实现的命令协议。

注意:本应用笔记假定熟悉MAXQ微控制器的TAP和基本的JTAG通信。有关这些主题的详细信息,请参阅MAXQ系列用户指南。

与固件接口

要与串行转JTAG板建立通信,请使用115200个数据位、无奇偶校验和8个停止位以1波特率连接到该板的串行端口。连接后,您可以通过以下两种模式之一与固件接口:ASCII 或二进制。固件默认为 ASCII 模式,在该模式下,人类可读的文本命令被发送到电路板,结果以文本字符串的形式返回。在二进制模式下,所有传输都是一系列 8 位字节。有一些命令允许随时在两种模式之间切换。在 ASCII 模式下,表 1 中列出的命令始终可用。所有命令都区分大小写。可以在一行中输入命令组,也可以一次输入一个命令。

Command 描述
h 通过保持MAXQ复位来停止MAXQ。
H 释放复位,允许MAXQ运行。
I 将系统置于旁路模式并重置 TAP,使其返回到运行-测试-空闲状态。
JB 指示固件开始接受后台模式命令。该命令不会切换目标MAXQ上的模式,也不会向目标器件发送任何JTAG命令。它只是为了指示固件MAXQ已经通过其他方式改变了模式。
JD 指示固件开始接受调试模式命令。该命令不会切换目标MAXQ上的模式,也不会向目标器件发送任何JTAG命令。它只是为了指示固件MAXQ已经通过其他方式改变了模式。
JL 指示固件开始接受引导加载程序命令。该命令不会切换目标MAXQ上的模式,也不会向目标器件发送任何JTAG命令。它只是为了指示固件MAXQ已经通过其他方式改变了模式。
JX 指示固件开始接受旁路模式命令。该命令不会切换目标MAXQ上的模式,也不会向目标器件发送任何JTAG命令。它只是为了指示固件MAXQ已经通过其他方式改变了模式。
Q 查询 JTAG 板的接口版本号。版本号将输出为两个十六进制字符。只要任何命令的格式或其输出发生变化,此版本就会更改。编写本文档时的界面版本为 01。
q 查询 JTAG 板的固件版本号。版本号将输出为两个十六进制字符。此版本将在固件更改时随时更改。编写本文档时的固件版本为 02。
Vtxxyy 设置 JTAG 板的 Timer0。由于JTAG时钟必须小于目标时钟的1/8,固件使用Timer0来控制JTAG时钟的速度。固件等待定时器溢出,然后再生成JTAG时钟的每个边沿。将“t”替换为用于计时器 T0M 位的值,将“xx”替换为用于 TH0 的值,将“yy”替换为用于 TL0 的值。所有值都应以十六进制格式输入。有关这些值用途的详细信息,请参阅《超高速闪存微控制器用户指南》。
Yrbbdd 将值直接发送到 TAP。将“r”替换为要写入的 TAP 寄存器:0 表示 DR,1 表示 IR。“bb”是要写入的位数(不包括状态位),“dd”是要发送的数据。所有值都应以十六进制格式输入。
Z 将固件切换到二进制传输。
z 执行JTAG时钟的单个脉冲。
+ 对JTAG板执行简单的硬件测试。CLK、TMS 和 TDI 引脚均被置位,TDO的状态被读取并输出为“0”或“1”。然后可以测量引脚上的电压,以确保它们正常工作。
对JTAG板执行简单的硬件测试。CLK、TMS 和 TDI 引脚均设置为逻辑低电平,TDO的状态被读取并输出为“0”或“1”。然后可以测量引脚上的电压,以确保它们正常工作。

如上述命令所示,MAXQ JTAG引擎有几种不同的模式:旁路模式、自举加载器模式、后台模式和调试模式。JTAG引擎在每种模式下的功能都不同。因此,除了上面列出的命令之外,当JTAG引擎进入这些不同的模式时,其他命令变得可用。

旁路模式

TAP在上电复位期间初始化为旁路模式。在这种模式下,TAP被禁用,并且不与MAXQ微控制器的其余部分交互。要激活 TAP,请输入此模式下可用的两个附加命令之一:“D”和“L”。“D”命令激活在线调试器,“L”命令激活引导加载程序。

引导加载程序模式

当使用“L”命令激活自举加载程序后,可以将字节直接发送到MAXQ的实用程序ROM。 以两个十六进制字符的形式输入每个值。(有关实用程序 ROM 接受的字节数的详细信息,请联系威廉希尔官方网站 支持。)对于输入的每个字节,固件输出加载程序返回的字节和从TAP接收的状态位。输出的格式将为“00xx:ss”,其中“xx”是输出字节,“ss”是状态位。输入“退出加载器”命令(0x01)后,必须使用表1中列出的“J”命令之一来指示JTAG板,MAXQ不再处于自举加载器模式。

后台模式

在JTAG引擎的后台模式下,可以读写JTAG断点寄存器(BP0-BP5),读写在线调试寄存器(ICDC、ICDF、ICDA和ICDD),确定断点匹配何时发生,并手动调用调试模式。表 2 中列出了支持这些操作的命令。对于此模式下具有输出的所有命令,格式将为“xxyy:ss”,其中“xx”是输出数据的MSB,“yy”是LSB,“ss”是TAP返回的状态位。

Command 描述
A 阅读ICDA寄存器。
axxyy 写入 ICDA 寄存器,其中“xx”是新值的 MSB,“yy”是新 LSB。值应以两个十六进制字符的形式输入。
Bi 读取 6 个断点寄存器中的任何一个,其中“i”是要读取的断点寄存器的索引(0 到 5)。
bixxyy 写入 6 个断点寄存器中的任何一个,其中“i”是要写入的断点寄存器的索引(0 到 5),“xx”是新值的 MSB,“yy”是 LSB。MSB 和 LSB 值应以两个十六进制字符的形式输入。
C 阅读 ICDC 寄存器。
CXX 写入 ICDC 寄存器,其中“xx”是新值。值应以两个十六进制字符的形式输入。
D 阅读ICDD寄存器。
dxxyy 写入 ICDD 寄存器,其中“xx”是新值的 MSB,“yy”是新 LSB。值应以两个十六进制字符的形式输入。
E 进入调试模式。
F 阅读ICDF寄存器。
N 无操作。

调试模式

JTAG引擎可以通过两种方式进入调试模式。第一种方法是在后台模式下输入“进入调试模式”命令(“E”)。激活调试的第二种方式发生在断点匹配发生时。在这种情况下,您应该输入“JD”命令以通知固件模式已更改。一旦进入调试模式,就可以读写MAXQ寄存器,读取程序栈,读写数据存储器,单步操作MAXQ CPU,返回后台模式,并执行密码匹配以解锁某些命令。表 3 列出了支持此功能的命令。

Command 描述
E 退出调试模式,返回后台模式。
G 获取所有寄存器。寄存器的顺序取决于MAXQ器件的类型。
Mxxyyiijj 读取数据存储器,其中“xx”是要读取的单词地址的MSB,“yy”是地址的LSB,“ii”是要读取的字数的MSB,“jj”是长度的LSB。所有值都应输入为两个十六进制字符。
MXXYYIIJJ 将一个单词写入数据存储器,其中“xx”是单词地址的MSB,“yy”是地址的LSB,“ii”是要写入的单词的MSB,“jj”是要写入的单词的LSB。所有值都应输入为两个十六进制字符。
n 无操作。
Pxx1...xx32 尝试与给定数据进行密码匹配。所有 32 个值都应输入为两个十六进制字符。
R0iim 读取寄存器,其中“ii”是寄存器的索引,“m”是寄存器的模块。索引应作为两个十六进制字符输入,模块应作为单个十六进制字符输入。
r0iimxxyy 写一个寄存器,其中“ii”是寄存器的索引,“m”是寄存器的模块,“xx”是新值的MSB,“yy”是LSB。新值的索引和每个字节应输入为两个十六进制字符。模块应作为单个十六进制字符输入。
Sxxyyiijj 读取程序栈,其中“xx”是要读取的单词地址的MSB,“yy”是地址的LSB,“ii”是要读取的字数的MSB,“jj”是长度的LSB。所有值都应输入为两个十六进制字符。
T 在当前指令指针处执行指令。
注意:表 2 中列出的所有后台模式命令(“E”除外)也可以在调试模式下使用。

二进制传输

表 1、2 和 3 中描述的所有命令都易于手动输入,其输出也易于理解。然而,在许多情况下,会有软件控制JTAG板。由于ASCII命令不便于软件使用,并且在将结果转换回二进制数据时需要进行不必要的处理,因此JTAG固件还支持二进制传输。在二进制传输模式下,通过首先发送指示要发送的字节数的字节将数据发送到 TAP。然后,数据应随之而来。对于发送的每个数据字节,固件输出两个字节。返回的第一个字节是在传输过程中读取的状态位。第二个字节将保存传输过程中从TAP读取的值。在二进制模式下还可以发送特殊命令。表 4 中描述了这些命令。要发送这些特殊命令之一,请发送 0 作为长度字节。这将指示固件将收到的下一个字节视为特殊命令。对于这些特殊命令,将返回单个字节。通常,这只是命令的回显。

Command 描述
0x00 退出二进制模式传输并返回到接受 ASCII 命令。
0x01 将 TAP 的 IR 寄存器设置为数据传输的目标。
0x02 将 TAP 的 DR 寄存器设置为数据传输的目标。
0x03 传输数据时仅发送每个字节的最低 3 位。
0x04 将RESET引脚设置为逻辑高电平。
0x05 将RESET引脚清除至逻辑低电平。
0x06 执行JTAG时钟的单个脉冲。
0x07 读取 TDO 引脚的状态。
0x08 传输数据时发送每个字节的所有 8 位。
0x09 将TMS引脚设置为逻辑高电平。
0x0A 将TMS引脚清除至逻辑低电平。
0x0B 将TDI引脚设置为逻辑高电平。
0x0C 将TDI引脚清除至逻辑低电平。
0x0D 设置 T0M 位。有关此位的详细信息,请参阅表 1 中描述的“V”命令。
0x0E 清除 T0M 位。有关此位的详细信息,请参阅表 1 中描述的“V”命令。
0x11 使用收到的下一个字节作为 TL0 的值。此“下一个”字节不需要长度字节或用作特殊命令转义字符的“0”。有关TL0寄存器的更多信息,请参阅表1中描述的“V”命令。
0x12 使用收到的下一个字节作为 TH0 的值。此“下一个”字节不需要长度字节或用作特殊命令转义字符的“0”。有关 TH0 寄存器的更多信息,请参阅表 1 中描述的“V”命令。

检测错误

在 ASCII 传输模式和二进制传输模式下,发生的任何错误都由命令的输出指示。在 ASCII 模式下,错误将输出为“*ERR=xx*”,其中 xx 表示发生的错误类型。在二进制模式下,输出错误代码而不是命令 echo。有关可能的错误代码的说明,请参阅表 5。

错误代码 描述
0x80 命令无法识别或命令无效。
0x90 收到无效的十六进制字符。
0xA0 收到的输入不足。
0xB0 断点寄存器索引错误。
0xC? 收到意外状态,在哪里?表示接收的状态位。

结论

使用本文所述的命令,串行转JTAG板可用于将代码加载到MAXQ处理器中,读写系统寄存器,读写存储器,以及利用在线调试器。此过程既可以通过使用二进制协议的主机软件自动执行,也可以与终端程序交互输入。为完全控制MAXQ系统所需的所有命令提供了构建模块。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    7547

    浏览量

    151331
  • 处理器
    +关注

    关注

    68

    文章

    19265

    浏览量

    229683
  • JTAG
    +关注

    关注

    6

    文章

    400

    浏览量

    71674
收藏 人收藏

    评论

    相关推荐

    MAXQ1850评估套件(EV kit)和面向MAXQ30的CrossWorks编译的设计方案

    电源输入)的引脚1 (PCB上的方形焊盘)和引脚2。连接跳线JU21 (靠近处理器的右上部)的引脚2和引脚3。所有其他跳线应打开。在JTAG电路上,短接JH3。这从JTAG电路
    发表于 12-24 09:23

    处理器JTAG总线桥接接口

    和微处理器控制可能不是完整的工作。在此期间,由于JTAG和可编程接头接口可初始化可编程逻辑器件。   开发早期要做的另一事情是开发微处理器控制码。固件会有错误需要调试。完成调试的方法
    发表于 05-05 09:29

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

    Maxim/Dallas 的MAXQ 系列单片机使用JTAG 作为系统开发中的调试和编程工具,这是一种非常方便和廉价的开发系统解决方案,也得到了众多第三方集成工具提供商的支持,以及使用者的好
    发表于 04-23 10:30 27次下载

    使用MAXQ3210作为微处理器监控电路

    摘要:MAXQ3210微控制能够完成各种微处理器监控功能,支持包括上电复位、电源排序、看门狗超时和输入开关去抖等功能。根据应用,MAXQ3210还可以直接为微
    发表于 04-23 09:35 934次阅读
    使用<b class='flag-5'>MAXQ</b>3210作为微<b class='flag-5'>处理器</b>监控电路

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

    摘要:本应用笔记列出了在MAXQ®串口-JTAG开发装载固件的步骤,串口-JTAG能够用于
    发表于 04-23 16:20 1251次阅读
    如何升级<b class='flag-5'>MAXQ</b>的串口-<b class='flag-5'>JTAG</b>接口<b class='flag-5'>板</b>的固件

    实现MAXQ2000微控制JTAG加载主机

    摘要:MAXQ®微控制提供的JTAG启动加载程序使外部JTAG主机能够利用一组标准命令,轻松地识别MAXQ微控制
    发表于 04-23 16:22 1530次阅读
    实现<b class='flag-5'>MAXQ</b>2000微控制<b class='flag-5'>器</b>的<b class='flag-5'>JTAG</b>加载主机

    MAXQ处理器的串口JTAG接口

    摘要:本应用笔记讨论串口JTAG接口能够接收的命令。该接口用于实现与MAXQ微控制
    发表于 04-23 17:28 1139次阅读

    充分利用MAXQ®处理器的非易失存储服务

    充分利用MAXQ®处理器的非易失存储服务 摘要:需要非易失数据存储的应用通常都需要使用外部串行EEPROM。这篇文章介绍了仅使用MAXQ微控制
    发表于 05-02 09:28 902次阅读
    充分利用<b class='flag-5'>MAXQ</b>®<b class='flag-5'>处理器</b>的非易失存储服务

    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.
    发表于 11-02 13:01 52次下载

    调试MAXQ1103在微处理器上的应用

    本手册描述了如何在Rowley Systems 上使用CrossWorks C 编译来创建、编译,和调试MAXQ1103 微处理器上的应用目标程序。MAXQ1103 是美信公司特为金
    发表于 09-22 14:17 17次下载

    使用MAXQ2010评估读取温度

    本文描述的示例应用使用MAXQ2010处理器MAXQ2010评估(EV)。本例展示了微控制的UART、集成ADC控制
    的头像 发表于 02-20 10:19 738次阅读
    使用<b class='flag-5'>MAXQ</b>2010评估<b class='flag-5'>板</b>读取温度

    如何更新MAXQ串行JTAG中的固件

    本应用笔记列出了将固件加载到MAXQ串行JTAG开发上所需的步骤。本文中给出的步骤允许开发人员加载新固件并保持最新更改。®
    的头像 发表于 02-20 11:06 866次阅读
    如何更新<b class='flag-5'>MAXQ</b><b class='flag-5'>串行</b><b class='flag-5'>转</b><b class='flag-5'>JTAG</b><b class='flag-5'>板</b>中的固件

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

    MAXQ610微控制提供两个标准的USART串行端口。异步模式1是MAXQ610串行端口支持的模式之一,可
    的头像 发表于 02-20 13:42 975次阅读

    MAXQ2000微控制实现JTAG自举加载程序主控

    通过使用一组标准化命令,MAXQ微控制提供的JTAG引导加载程序允许外部JTAG主机轻松识别和编程任何MAXQ微控制
    的头像 发表于 02-21 11:22 1130次阅读
    为<b class='flag-5'>MAXQ</b>2000微控制<b class='flag-5'>器</b>实现<b class='flag-5'>JTAG</b>自举加载程序主控

    如何使用MAXQ串行驱动开发应用

    本应用笔记介绍如何使用MAXQ2000微控制评估(EV)上的MAXQ串行驱动库开发应用。
    的头像 发表于 03-03 13:47 866次阅读
    如何使用<b class='flag-5'>MAXQ</b><b class='flag-5'>串行</b>驱动<b class='flag-5'>器</b>开发应用