器件型号: TMDS64EVM
在我的 PRU0 代码中、我负责设置时钟、并按照 AM64x TRM 中“用于对 PLLCTRL、HSDIV 和 PLL 进行编程的 5.4.5.7.4 整个序列“(具体表 5-472)列出的分步说明进行操作。
该代码的目的是设置以下时钟:
- ICSSG1_CORE_CLK(使用 MAIN_PLL2_HSDIV0_CLKOUT)
- ICSSG1_IEP_CLK(使用 MAIN_PLL2_HSDIV5_CLKOUT)
- RGMII_250_CLK/RGMII_MHz_50_CLK /RGMII_MHz_5_CLK(使用 MAIN_PLL0_HSDIV4_CLKOUT)
按照表 5-472 中的顺序步骤操作时、对于“禁用 HSDIV (s)“步骤、我执行以下代码行以清除 PLL2 HSDIV CTRL0 寄存器中的位 15 (CLKOUT_EN):
MAIN_PLL_MMR_CFG_PLL2_HSDIV_CTRL0 且~μ s (1 << 15);
其中、I define th MAIN_PLL_MMR_CFG_PLL2_HSDIV_CTRL0 是定义为寄存器地址 0x68002080 的宏。
执行该行时、我收到以下错误消息、指示某种类型的电路板复位:
ICSS_G1_PRU_0:错误:(错误–1170 @ 0x300A2000)无法访问 DAP。 重置器件、然后重试此操作。 如果错误仍然存在、请确认配置、对电路板进行下电上电、和/或尝试更可靠的 JTAG 设置(例如下 TCLK)。 (仿真包 20.0.0.3178)
ICSS_G1_PRU_0:20 次尝试后无法确定目标状态
ICSS_G1_PRU_0:在断开连接之前从目标删除调试状态失败。 程序存储器中可能仍嵌入了断点操作码。 建议在连接并重新加载程序之前重置仿真器、然后再继续调试
如果我注释掉这一行、我根据表 5-472 执行的整个时钟设置序列会在 PLL0 和 PLL2 都没有错误的情况下运行、包括与同一 MAIN_PLL_MMR_CFG_PLL2_HSDIV_CTRL0 寄存器的所有其他交互(在这些步骤中会对其进行多次访问,包括在步骤结束时将位 15 设置为 1)。 与 MAIN_PLL_MMR_CFG_PLL2_HSDIV_CTRL0 交互的唯一时间 会导致问题、是当我清除上述位 15 时。
清除 MAIN_PLL_MMR_CFG_PLL2_HSDIV_CTRL0 位 15 导致此处出现独特的独立问题的原因、或者如何解决该问题?