This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F280021:访问次调试 TAP 时出现问题

Guru**** 2538930 points
Other Parts Discussed in Thread: TMS320F280021

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1031346/tms320f280021-problem-with-access-to-secondary-debug-taps

器件型号:TMS320F280021

我尝试通过 cJtag 对 TMS320F280021进行重新编程、但我在更改为 Oscan1模式后卡住、因为我无法激活次级调试抽头。

对于访问权限、我检查了 SPRUH35–2011年2月(TI ICEPick TAP 路由器模块 Type C 参考指南)

 

我们通过 cJTAG 连接、并更改为 Oscan1模式。 这可以正常工作、我们可以读取 IDCODE (0x0bb6702f)以及 ICEPICKCODE (0x41121cc0)。 在 IR 中选择 connect 后、我们将写入0x89以连接路由器。

 

然后、我们能够读取可用于激活其他抽头的特殊寄存器。 在这里、我们可以看到有2个抽头可用。

 

切换到路由器

 

系统控制寄存器

0x01000000移入移出0x00000000

0x01000000移入移出0x01000000

读取寄存器00000001的值:00000000

 

次级调试抽头0寄存器

移入0x20000000移出0x01000000

移入0x20000000移出0x20280027

读取寄存器00000020的值:00280027

 

次级调试抽头1寄存器

移入0x21000000移出0x20280027

移入0x21000000移出0x21280027

读取寄存器00000021的值:00280027

 

次级调试抽头2寄存器

移入0x22000000移出0x21280027

移入0x22000000移出0xa2000000

读取寄存器00000022的值:00000000

 

我们尝试激活其他一个抽头、但它不起作用。

 

移入0x21000000移出0xaf000000 //读取寄存器 TAP1

移入0x21000000移出0x21280027 //读取寄存器 TAP1两次以获得实际值

移入0xa12a212f 移出0x21280027 //向寄存器 TAP1写入额外的位以进行调试连接+强制激活+轻触选择+块复位模式

移入0xa12a212f 移出0x2108002f

移入0x21000000移出0x2108002f //写入后,我们更改了 POWERLOSSDETECTED [21]和 FORCEACTIVE [3]

移入0x21000000移出0x2108002f // TAPSELECT [8]和 TAPVISIBLE [9]都是0。

 

如果我尝试连接到另一个抽头、我得到相同的结果、TAPVISIBLE [9]保持为0。

 

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Tobias、

    我正在查看、并将很快通知您。

    谢谢、

    Ashwini

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Tobias、

    文档中有一个关于保持运行-测试-闲置至少3个时钟周期的注释。 这是不是完成的?

    DelayAfterSelectinga NewTAP

    当选择要包含扫描链中的新抽头时、 调试必须保持 RUNTESTIDLE 状态至少个测试时钟周期、然后再继续任何其他状态。这样、之前选择的抽头选择的抽头就会同步并且所有的抽头都处于 RUNTESTIDLE 状态。

    如果正在执行此操作、您是否可以尝试将扫描分解为2个序列?

    以下是建议的序列、在以下扫描命令中、P 将替换为 TAP 寄存器 ID - 0、1、2等

    1.激活目标电源

    0xaP30 2048

    2.读取 TAP 状态以检查它是否通电

    3.选择轻触

    0xaP30 2148

    谢谢、
    Ashwini

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ashwini、

     

    感谢你的帮助。

    RTI 时钟已经完成、但我尝试了您的两阶段激活方法。

    尝试激活新的抽头

     

    移入0x20000000移出0xaf000000

    移入0x20000000移出0x20280027 //双移读取

    移入0x0302048移出0x20280027 //添加 INHIBITSLEEP、FORCEACTIVE、FORCEPOWER、DEBUGMODE 停止模式、

    环路 RTI// 仅位于保存端

    移入0x20000000移出0x2018006f //双移读取

    移入0x20000000移出0x2018006f // INHIBITSLEEP、FORCEACTIVE、FORCEPOWER  

    移入0xa0302148移出0x2018006f // 添加 TAPSELECT

    回路 RTI// 这应启用抽头

    移入0x20000000移出0x2018006f //双移读取

    移入0x20000000移出0x2018006f //点击仍然脱机

    我也尝试了第二次点击、但结果相同。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Tobias、

    RTI 状态保持多少个时钟?

    谢谢。
    Ashwini

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ashwini、

    它保持20个时钟。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Tobias、

    感谢您的快速回复。

    我正在与专家联系、以获取他们的意见、请给我几天时间与您联系。

    谢谢、
    Ashwini

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ashwini、

    我的最终目标是能够通过 cJTAG 对器件进行重新编程。 振荡器1的初始化正在工作、我的计划是通过 TAP 到达处理器、然后将其用于重新编程。 如果有另一种方法可以在不通过 TAP 的情况下对其进行重新编程、这也可以解决我的问题。

    非常感谢您的帮助、

    托比亚斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Tobias、

    通过 cJTAG 对器件进行编程的唯一方法是选择 TAP。 团队正在观察、我将在听到他们的声音后通知您。

    谢谢、

    Ashwini

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Tobias、

    一旦选择了 TAP、它将与 Icpick 一起包含在扫描链中、那么调试器使用以下序列来选择扫描链中的 TAP:

    1:移入0xa0302148位以启用 TAPSELECT。 在转换到 Update-DR 之后(该位将在此阶段被锁存)

    2.在不进入 RTI 的情况下、发出 Icepick BYPASS IR 扫描

    3、现在转至 RTI 20 个时钟周期。 TAP 选择将生效。

    此时、调试抽头将位于扫描链中。

    如果您希望确认已锁存水龙头、则在步骤1之后、您可以返回 SHIFT-DR (无需转至 RTI)并再次发出扫描。 这将移出已锁存的状态。 然后继续执行步骤2和3。 目标是仅在步骤3中进入 RTI 状态。

    请告诉我这是否适合您。

    谢谢、
    Ashwini

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ashwini、

    我发现了错误、我的写入32位 Dataregister 函数中有一个错误。 它现在在没有任何特殊处理的情况下工作。 只需写入0xa0000127、在3个 RTI 循环后、TAP 就会可见。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Tobias、

    很好地知道问题已解决。

    谢谢、

    Ashwini