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

    文章

    6809

    浏览量

    147637
  • 处理器
    +关注

    关注

    68

    文章

    18275

    浏览量

    222163
  • JTAG
    +关注

    关注

    6

    文章

    383

    浏览量

    71150
收藏 人收藏

    评论

    相关推荐

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

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

    看看最新用于工控行业只要5美金的cortexA8处理器

    JTAG,可直接采用CCS调试AM3358/AM3359处理器。自带USB串口,可从主机通过USB观察AM3358串口输出。支持3.3V IO并且核心处理器价格仅5美金,低于市场绝大
    发表于 04-19 11:54

    看看最新用于工控行业只要5美金的cortexA8处理器

    JTAG,可直接采用CCS调试AM3358/AM3359处理器。自带USB串口,可从主机通过USB观察AM3358串口输出。支持3.3V IO并且核心处理器价格仅5美金,低于市场绝大
    发表于 04-22 12:16

    处理器JTAG总线桥接接口

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

    USB收发的微控制电路MAXQ612相关资料下载

    MAXQ612采用LQFP64脚封装和TQFN44脚封装。为低功耗、16位MAXQ®低功耗、高吞吐率、16位RISC微控制串行外设包括两个通用同步/异步接收-发送
    发表于 04-19 07:37

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

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

    实现MAXQ2000微控制器的JTAG加载主机

    摘要:MAXQ®微控制器提供的JTAG启动加载程序使外部JTAG主机能够利用一组标准命令,轻松地识别MAXQ微控制器,并对其进行编程。本应用笔记中的代码可以用作构建全功能
    发表于 04-23 16:22 1366次阅读
    实现<b class='flag-5'>MAXQ</b>2000微控制器的<b class='flag-5'>JTAG</b>加载主机

    MAXQ处理器的串口转JTAG接口板

    摘要:本应用笔记讨论串口转JTAG接口板能够接收的命令。该接口板用于实现与MAXQ微控制器的接口。此处描述的命令可帮助开发人员读写MAXQ存储器(代码和数据),读写寄存器,以及使
    发表于 04-23 17:28 1023次阅读

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

    充分利用MAXQ®处理器的非易失存储服务 摘要:需要非易失数据存储的应用通常都需要使用外部串行EEPROM。这篇文章介绍了仅使用MAXQ微控制器中已有的闪存提供非易失
    发表于 05-02 09:28 796次阅读
    充分利用<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 51次下载

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

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

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

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

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

    MAXQ610微控制器提供两个标准的USART串行端口。异步模式1是MAXQ610串行端口支持的模式之一,可用于与PC COM端口和许多其他
    的头像 发表于 02-20 13:42 573次阅读

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

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

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

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