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.

[FAQ] [参考译文] [常见问题解答] TMS320F28377D:独立闪存编程器

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/731448/faq-tms320f28377d-standalone-flash-programmer

器件型号:TMS320F28377D

我们制造 IC 编程器并致力于支持此器件的 JTAG 编程。  您或终端客户是否可以为此 芯片向我们发送 JTAG 规范编程文档?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Aelee、
    我将与我们的仿真/工具团队一起探讨这个问题。 应在最坏情况的一天结束前得到完整的答案。
    最棒的
    Matthew
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Aelee、e2e.ti.com/.../spruf82_5F00_c28x.pdf

    随附的仿真指南将介绍向器件发送命令的步骤。  下面我还列出了有关本文档的一些常见问题解答。

    在执行此操作后、您将需要查看 F2837x 器件的闪存 API 指南。  请注意、并非所有 C2000 MCU 都具有相同的 API;F2802x/3x/5x/6x 器件具有不同的 API。  我相信 F28004x 器件与 F2837x/F2807x 器件共享 API。   

    http://www.ti.com/lit/spnu629

    常见问题解答部分

    “文档 spruf82_C28x 似乎包含一些不准确的信息。 "

    没错。  充其量、一些指令会令人困惑。  至少有一个部分是错误的。  此常见问题 解答应有助于解答有关文档的许多问题。

    “第20页的图3-1似乎与 JTAG 不符,因为它显示 DR 和 IR 相同。”

    是的、这是一个令人困惑的图。 更清楚的是、C28x 调试不使用 JTAG DR 扫描路径。  每次扫描都通过 IR 路径进行、包括用作传统 IR 扫描值的6位和像 DR 有效载荷一样工作的32位。 您不会像大多数 JTAG 器件那样扫描一个值到 IR 中,然后扫描 DR。 相反、每次都将这两种方法合并到单个 IR 扫描中。 (对于 IDCODE 等标准 JTAG 寄存器、有 DR 扫描、并且有一个始终返回 C28x SSR 的支持 DR 扫描。)

    "我们如何设置 JTAG 调试模式?"

    一般步骤如下:

      将目标置于 Test-Logic-Reset 中(将 TRST 拉至低电平或保持 TMS 高电平将切换 TCK 至少7个周期)

      执行 IR 路径扫描,将0x000000aa 的值写入 DC_STRBS

    "我们如何读取/写入程序存储器、数据存储器、CPU 寄存器?"

    有关程序存储器、请参阅 spruf82_C28x、第3.2.4.1节。  另请参阅附录 B

    数据存储器和寄存器的工作方式类似、但第3.2.4.2节中的信息不正确。  请使用以下命令。

    地址字段:

    26:24 MUCYC[2:0]指示要执行的 DT-DMA 周期的类型:

       0 =程序存储器

       1 =数据存储器

       2 =寄存器(请参阅寄存器索引表)

       (笑声)

    23:0 ADDR[23:0] 24位地址。

    C28x 寄存器索引:

      0   XAR0   (32位)

      1   个 XAR1   (32位)

      2   个 XAR2   (32位)

      3   XAR3   (32位)

      4   XAR4   (32位)

      5   XAR5   (32位)

      6   XAR6   (32位)

      7   XAR7   (32位)

      14  SP     (22位)

      320 IC     (22位)

      6   RPC    (22位)

      224 ACC    (32位)

      256 P      (32位)

      160 XT     (32位)

      192 ST0    (16位)

      11  ST1    (16位)

      12  IER    (16位)

      13  IFR    (16位)

      9   DBGIER (16位)

      10  DP (     16位)

      8   ORIFR  (16位)

      (索引是十进制值)

    “到底什么是寄存器 ORIFR?”

    我不知道。  该寄存器未在我们的调试驱动程序中实现,似乎无法从 CCS 访问。   忽略它可能是安全的。

    "我们如何在 RAM 中运行应用程序代码?"

    通过 MF_REG_0寄存器中的运行状态机控制位(EXE_DIR)控制执行。  请参阅第3.2.7节和附录 B

    "C2000 JTAG 接口的协议是什么?"

    JTAG 1149.1

    "为什么我必须重试一些调试步骤才能使其正常工作?"

    C28x 中的调试逻辑由 TCK 时钟驱动。  如果 JTAG 探头没有自由运行的 TCK、则需要在每次扫描结束时运行一些额外的 TCK 周期、以确保调试逻辑保持活动状态、以便对最后一条命令执行操作。  确保在每次扫描结束时额外执行16个 TCK 周期。  此外、您应该在 TRST 为低电平时以及释放 TRST 之后运行一些 TCK、以确保调试逻辑完全初始化。

    "如何执行系统重置?"

    这取决于系统复位的含义。  您可以通过 TLR 重置调试逻辑。  您可能能够执行 CPU 复位。  如果设备有 ICEPick 路由器,则可以执行设备级重置。  但您无法执行板级复位或上电复位等操作。

    要在 C28x 上执行 CPU 复位、请按照以下基本步骤操作:

      设置 MF1中的 RESET 位

      在内核上执行一个单步执行(实际执行复位所需)

      检查 SSR、直到您看到复位被确认

      清除 MF1中的 RESET 位

    “为什么我的目标不响应内存请求?”

    您的目标可能不允许调试请求。  这由 ST1寄存器的 DBGM 位控制。  您可以通过在 MF0中设置其他位来覆盖此设置:

    #define MF0_QUAL_LD       ((UINT32) 0x00000080)/* 7载入限定字段(6:0)*/

    #define MF0_IGN_HPI       ((UINT32) 0x00000040)/* 6 1=忽略 HPI         */

    #define MF0_IGN_DBG       ((UINT32) 0x00000020)/* 5 1=忽略 DBGM        */

    #define MF0_IGN_ALL       ((UINT32) 0x00000060)/* 6:5 忽略 HPI 和 DBGM */

    #define MF0_DFR_MASK      ((UINT32) 0x0000001F)/* 4:0 DFR               */

    通过设置"QUAL"字段、可以强制进行调试访问。  设置 MF0_QUAL_LD 来设置这些位。  忽略 HPI 告诉调试逻辑让您在应用程序执行“高优先级中断”时停止。  忽略 DBGM 告诉调试逻辑忽略 ST1中 DGBM 位的状态。  您应该先将 DFR、Debug Frame 设置为-1。  因此、加载到 MF0以停止内核的值应为 :0x00080FF。

    "为什么我无法连接到其中一个主板?"

    如果 CSM 已锁定、则无法调试目标。  除了调试器之外,您还需要其它方法来解锁电路板。  (某些电路板使用芯片上的引脚配置特定的引导模式、以使您能够刷写芯片以恢复。)