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.

[参考译文] DRA829J:DRA829 的调试接口文档

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1492849/dra829j-debug-interface-documentation-of-the-dra829

器件型号:DRA829J
Thread:DRA829TDA4VM 中讨论的其他器件

工具/软件:

查找 DRA829 芯片的调试接口文档。
我们能够读取 JTAG ID (0x6BA00477)。 但我们无法读取或写入任何其他调试寄存器或访问点。
您能否向我们提供调试接口的信息:
*接入点号码
*核心订单
* IcePick !? 信息
* MCU 的初始设置
*处理 2EMU 引脚

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

    您好:

    此目标中的 TRM 描述了未提供实现所需信息的功能。  要执行该操作的信息分布在许多其他文档(例如 ARM coresight 调试和 ARM 内核文档)中。   DRA829 实现了符合 coreSight 标准的 ROM 表、可以对该表进行扫描以提供元件信息。

    对于通用调试、您可在 DAPBUS APSEL-1(用于调试组件控制,ROM 表位于 APB:0x0)上找到标准 APB-AP、在 APSEL-2 上找到一个 AXI-AP(用于系统总线访问)。   这可通过标准 ARM DP 访问。   ICE-Pick-m 是并行的、但不用于调试、仅在需要 BSDL 时才需要(EMU0=1、EMU1=0、如 CPU BSDL 文件的合规性部分所示)。

    Open-OCD、CCS、Seggar、Isystems、GHS 等众多第三方和社区 JTAG 工具已支持 Lauterbach 等...

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

    我们无法访问 AP1 和 AP2。

    在一些论坛中、我们会谈论“Power-AP",“,"Secure-AP"、"Secure-AP"或“或"SysCtrl"“"SysCtrl"。“。</s>“ 但是、我没有找到关于这些问题的任何说明。 我还没有找到有关 EMU0/1 引脚及其意义的任何说明。

    我们需要对各种 AP 及其寄存器进行概述/说明。 具体而言、是一个初始化序列、可描述需要将哪些值写入哪些 AP 寄存器、在哪些寄存器中、才能最终通过 AP 访问整个存储器区域。

    例如、在 OpenOCD 中、值 0x00190000 写入 AP3 寄存器 0xF0 或 0x00102098 写入 AP3 寄存器 0x44。 在某处必须有一个说明来解释为什么要这样做以及这些值的含义是什么?

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

    Power-AP 和安全 AP 目前并不是公开记录的寄存器的一部分。  在示例工程中、需要使用它们来处理对在 M3 上运行的 TI 内部固件的调试以及一些高安全性 (HS) 调试传感器。 有关 M3 和安全系统的文档目前仅通过 NDA 提供。

    对于 GP 器件、所有内核调试的初始状态均为开放。  R5 和 A72 内核只需要在 APSEL-1 上使用 APB-AP。  需要访问 APSEL-2 上的 AXI-AP、才能将 AXI-AP 用作系统存储器空间的存储器访问端口。

    在 APSEL-3 周围的一些示例中看到的值(您引用的这些值)是在 J7ES 上解决错误时必需的(但是此系列中的其他 SOC 不需要此值,其他地方可能有的代码出错)。   该序列会创建在 GP 器件与 Cortex-M3 建立连接所需的时钟请求。  这对于 TI 固件开发和一些高安全性用例非常有用。   人员引导固件然后在 Cortex-R5 的+其他内核上开发的常见场景不需要访问。

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

    感谢您的信息。

    我们能够与 AP1 和 AP2 配合使用、也可以在 AP7 处读取 Cortex M3 ARM ID。

    现在、我们遇到了无法再访问 A72 的问题。 因此、我们可能删除了 QSPI 闪存。

    您能帮我们在哪里找到详细的引导序列吗?如果“未编程“QSPI 存储器可能是我们无法再访问 A72 内核的问题吗?

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

    您好:

    当您的 AP1/AP2/AP7 访问正常工作时、您可以进入更高级别。

    在上电复位时、A72 域将断电。  在通电并计时之后、将无法探测到其 APB 段。  您将可以访问 M3 和 MCU-R5、因为它们的 ROM 将启动它们。

    若要彻底为系统供电以重新启用调试、用户需要移植执行系统“JTAG-init"的“的 CCS-GEL 文件、或者需要创建启动映像。  TI SDK 能够创建映像、它们将是预编译映像。  最常见的快速引导方法是使用启动映像对 SD 卡进行编程、并设置 DIP 开关以进行 SD 引导。  SDK 信息可在此处找到: https://www.ti.com/tool/PROCESSOR-SDK-J721E 。  

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

    您好:  

    感谢您的信息。

    “ 要使系统完全通电以重新启用调试、您需要移植执行系统“JTAG-init"操作“操作的 CCS-gel 文件 

    这是我们需要的! 我们想知道需要 将哪些命令写入 哪个地址和访问端口。

    在哪里可以找到执行该操作的 GEL 文件? 或者,我们怎么能找到尊敬的文档?

    此致、

    Ralf

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

    您好:

    执行此操作的参考 GEL 是 CCS 下载的一部分:

    https://www.ti.com/tool/CCSTUDIO

    我的本地计算机中的示例显示了以下文件:
       C:\ti\ccs1240\ccs\ccs_base\emulation\gel\J721E_DRA829_TDA4VM\gel
    此致、
    理查德·W·
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    感谢您的回答。 遗憾的是、GEL 文件会调用我在任何地方都找不到的函数、例如

    GEL_EvalOnTarget ()
    GEL_SetWaitInResetMode ()
    Turn_On_ LPSC_WKUPMCU2MAIN ()
    SETUP (CSL_PLL0_CFG_BASE、ADDRESS_OFFSET、MAIN_PLL_INDEX、OFC1);
    ...

    这些函数可以在哪里找到、这个初始化记录在哪里?

    多谢致以诚挚的问候

    Frank

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

    您好:

    您的问题是在度假时提出的。  对于上述函数、后续函数 turn_on_LPSC... 和 Setup() 是熟悉的、应该是 gel。  GEL 函数构成一个全局命名空间、可在加载后调用。 例如、简单的 grep 显示了 J7VCL_PSC.GEL 中定义了 Turn_On_ WKUPMCU2MAIN ()、而 SETUP () 在 J7VCL_PLL.gel 中定义。

    在已安装函数之后、有时调用不存在的函数会以 gel 形式出现。  这些通常位于主流永远不调用的路径上。  你没有引用这些,但我找到了时间。

    GEL_xyz 函数是内置函数、因此更难解析这些函数。  需要在通用 CCS 文档中查找这些信息。   GEL_SetWaitInResetMode () 在许多情况下在 DRA829 上无效、因为这会写入固件不会实现的影子寄存器。

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

    您好:

    感谢您的回答。 我找到并实现了所有函数(GEL_xyz 除外)。 很遗憾、CCS 文档没有准确描述这些 GEL_xyz 函数的作用。

    在一个电路板上、我现在可以访问 Cortex-A72 和存储器区域 (RAM、OSPI ...)。 但在另一种板上、这不起作用。 无法访问 Cortex-M3。 它可能是高安全性 (HS) 器件。 是否可以通过调试接口查明它是 HS 器件?

    它表明必须首先为 HS 器件加载证书以进行调试。 此流程是否记录在任何位置? 如何创建此证书? 以及它如何通过 JTAG 加载以及在哪里加载?

    非常感谢。

    此致、
    Frank

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

    您好:

    根据您的描述、第二个器件是 HS 器件。   这可以是 HS-SE FS(现场安全)或 HS-SE(强制安全)类型。  在功能引导模式下、JTAG 被锁定在 HS 器件的 M3 内核上。  对于其他内核、根据引导映像中嵌入的凭据、JTAG 可能会打开、也可能不打开。  可以通过 JTAG 向固件(加载后)发送一个解锁证书。  内映像解锁和 JTAG 注入解锁中使用的 x509 证书的结构是 SDK 文档的一部分:  

    https://software-dl.ti.com/tisci/esd/latest/2_tisci_msgs/security/sec_cert_format.html#sysfw-debug-ext

    https://software-dl.ti.com/tisci/esd/latest/2_tisci_msgs/security/runtime_debug.html

    https://software-dl.ti.com/tisci/esd/latest/2_tisci_msgs/security/sec_ap_data_transfer.html

    https://www.ti.com/lit/ug/sprujc1/sprujc1.pdf

    用于 JTAG 工具应用级使用的 HS 器件版本往往是透明的、并且主要依赖于收到良好的固件。 较不常见的裸机“非固件“使用在 HS 器件上很复杂、并且无法简化流程。
    此致、
    理查德·W·
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    感谢您的回复和文档链接。

    我将实施并测试通过 JTAG 加载 x509 证书以进行解锁的函数。 如果我正确理解了这一点、则当前运行的固件必须已相应做好准备。 是这样吗?

    如果不是吗? 那么是否有“裸机‘非固件'使用情况“变体? 我可能也必须实现这一点。 您能为我提供更多信息来实现此型号吗?

    非常感谢。

    此致、
    Frank

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

    您好:

    是的、您更正了功能引导解锁由 SDK 生成的引导映像处理的问题。  该启动映像有标头+证书+ Cortex-M 固件对象+ Cortex-R5-MCU 对象。  M4 和 R5 坐标图像加载基于 DIP 开关的掩码 ROM。  处理形成良好的映像后、JTAG 将解锁、您可以附加您的工具。  客户通常在一段时间 (1) 内将其 R5 进入服务器的功能视为一个干净的连接点。   常见用途是这一种。  证书可以使内核 JTAG 保持锁定状态、JTAG 工具可以发送解锁证书来将其打开。  我向其发送指针的文档和 SDK 示例中介绍了这些路径。

    您的最终目标是什么? 对所有可能的测试和调试 场景提供通用支持 是一项艰巨的任务、需要花费大量的精力和时间。  如果您的目标有限、可能有几个子路径可以描述。  如果您的目标是初始启动刷写、恢复和电路板测试、您可能可以使用 BSDL 完成所有操作、并绕过大量 SOC 内部元件。

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

    您好:

    感谢您的答复。
    然而,这与我的理论相矛盾。 我已通过边界扫描删除 bootflash、但仍然无法访问 cm3。 尽管没有更多固件正在运行。 是否存在其他阻止访问的条件?

    我的最终目标是访问第一个 Cortex-A72 内核、将可执行代码加载到 RAM 中并执行。 这是为了通过 JTAG 使用数据对外部 QSPI 闪存进行编程。 这已经在另一个 DRA829 器件上工作。 是的、这也可以通过边界扫描实现、但此型号要快得多。

    非常感谢。

    此致、
    Frank

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

    闪存映像消失后、只有 Cortex-M3-DMSC 和 MCU-R5 将作为故障图像探头的一部分进行通电。 对于 HS 器件、您将无法在功能引导模式下连接到 Cortex-M。 对于当前器件上的 HS-JTAG、MCU-R5-0 将位于 FS 附加到的位置、这可用于为 GEL 文件运行电源(第一版器件的行为对于 HS-JTAG 具有更严格的限制 FS)。   所有其他内核都会断电、因此在通电之前它们无法进行访问。  在 HS-SE 器件上、无需身份验证即可连接任何内核。  ~HS 器件的当前 SDK 中用于调试低级映像的 T Ü V 通用软件会创建一个“空 SB“、相当于一个具有 cert+firmware+while (1)-look-on-MCU-R5 的最小映像。  此说明与共享的公共文档保持一致。

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

    感谢您的答复。 如果我正确理解了这一点、那么我应该可以在没有闪存映像的情况下访问 M3? 不幸的是、情况并非如此。  
    但更好的方法是通过 MCU-R5-0 cert+firmware+while (1) 循环加载和启动。 那么这是否适用于所有器件类型? 然后是否可以通过 MCU-R5-0 为 A72-0 供电? 我可以使用哪个 JTAG 访问端口 (AP) 来访问 MCU-R5-0 并加载映像? 如何创建此映像? 映像应加载到哪个 (RAM) 地址? 很遗憾、我在公共文档中找不到该信息。

    此致、
    Frank

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

    否、您将无法访问 M3、因为我会消息:“对于 HS 器件、您将无法在功能引导模式下连接到 Cortex-M

    否、无法通过 JTAG 访问端口为 A72 供电。 这一组具有比这更复杂的先决条件。  需要在 GEL 文件或 SBL 引导加载程序中执行哪些操作。

    是的、您可以使用 R5 来设置 A72 时钟并放置一个 A72 引导映像。  SDK 代码以一种方式排列、如果可以以其他方式重新排列。  从 R5 运行的 GEL 还可以准备 A72 以运行映像。

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

    如前所述、我已经通过 JTAG 成功地为另一个器件上的 A72 供电。 不过、可以通过 M3 经由 acess 端口 7。 现在、我只能通过 R5 对 HS 器件执行此操作。

    我可以使用哪个 JTAG 访问端口 (AP) 来访问 MCU-R5-0 并加载映像? 如何创建此映像? 映像应加载到哪个 (RAM) 地址? 很遗憾、我在公共文档中找不到该信息。

    此致、
    Frank

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

    您好:

    您所写的~不准确。  即使在 GP 器件上、在复位时、也不能仅 通过 JTAG 连接 A72 并为其供电。  我甚至只是快速尝试检查这个期望。 从 JTAG AP 端口不会对 A72 进行可能的“强制“上电。  当您通过 JTAG 连接时、以前系统上的一些其他代码或 GEL 必须运行、为 A72 提供时钟、电源并设置引导复位寄存器。  您可能连接到了一个包含一些代码或初始化 GEL 的系统。   在我提到的 HS-JTAG 上、您需要使用 GEL 或创建为供电的映像、然后才能执行任何 FS 操作。  上面的 SDK 链接和 GEL 链接具有必要的文档和对象。  测试最快的方法是获取预构建的映像并将其放在 SD 卡上、然后运行它。  包中有 HS 和 GP 图像。

    对于所有 JTAG 路由、用户需要首先连接到 R5、然后运行 GEL 文件、以初始化 PLL 和 PSC(如 GEL 示例所示)。  A72 集群通电后、您可以连接到 JTAG 并对其进行调试。   此过程由代码中详述的许多小步骤组成。  您尝试启用的自定义路径没有分步文档。

    R5 MCU 通过 APB-AP 进行控制、其地址范围从 APB:0x9D010000 开始(可以在从 0x0 开始的 APB 核视图 ROM 表中看到)。  ARM 调试寄存器的布局与 ARM 和 R5 实现的 ARM 核心组件文档相匹配。  ~通电并计时、但需要执行某种代码、便可将调试器与一个成熟的 ARM 堆栈连接起来。  JTAG ap 端口没有捷径的神奇之处。

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

    您好:

    我写道:“我已经通过 JTAG 成功地为另一个器件上的 A72 供电。 但通过 M3 via acess Port 7“。 我已经为电源、时钟等编写了初始化序列。 当然,我实施的代码从 gels(如上所述)。 并且在 GP 器件上复位后直接工作。 可以使用 FS 器件。

    根据您的说明、我现在必须通过 M3 (FS AP7) 而不是通过 MCU-R5-0 执行 HS-MCU 器件的初始化序列(电源,时钟等)。 是这样吗? 但为此、我需要 MCU-R5-0 的 JTAG AP 编号。 您能告诉我这个号码吗?

    此致、
    Frank

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

    您好:

    所有非 M ARM 内核都位于 APSEL-1 上的 APB-AP 上(访问端口 1 的引用方式)。  R5-MCU 位于  APB:0x9D010000。  寄存器布局与 R5 的 ARMS 标准集成相匹配。

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

    您好:

    非常感谢。 我现在可以访问 r5-MCU、并且我的初始化序列成功运行(经过几次 address_offset 调整后)。 现在、对 A72 的访问也有效。  
    非常感谢您的支持和耐心。

    此致、
    Frank

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

    您好:

    很好、很高兴您能为您的工具找出映射。

    此致、
    理查德·W·