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.

[参考译文] J784S4XEVM:GTC 旋转时间与配置的频率不匹配

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1488554/j784s4xevm-gtc-spin-time-does-not-match-the-configured-frequency

器件型号:J784S4XEVM

工具/软件:

在我的 j784S4 EVM 板中、GTC 时钟由 CTRL_MMR0_CFG0:CFG0_GTC_CLKSEL 配置为 MAIN_PLL3_HSDIV1_CLKOUT:

MAIN_PLL3 clkout 为 1GHz:

 MAIN_PLL3 的 HSDIV1 为 7

因此、GTC 频率为:  1GHz/(HSDIV1+1)= 125MHz

我使用以下 spin_time 函数根据 GTC 频率旋转一些时间:

void SPIN_TIME (u32_L20_t WAIT_TIME)

 uint64_t ts_start;
 uint64_t ts_CURR;
 uint32_t time_period;

 uint64_t time_ran;

 TIME_PERIOD = GTC_GET_PERIOD ();/*返回以秒为单位左移 40、

                    已验证周期与 125MHz */匹配

TS_START = GTC_COUNTER_get64 ();

应该做

   TS_CURR =  GTC_COUNTER_get64 ();

   time_ran =((uint64_t)(ts_CURR - ts_start)* time_period)>> 20u;
}while (time_ran <(uint64_t) wait_time);

返回;
}

但我只得到我设置的旋转时间的一半。 当我从第 77 行第 78 行走时、预计是 40ms、但总能得到它应该得到的数字的一半左右

我已经使用不同的 10ms 500ms、1s 进行了测试、并且始终会得到大约一半的喷溅。

还有另一个问题:即使我设置 CNTCT.HDBG=1、当我停止在调试器中时、GTC 计数器也应该冻结、但它会不断增加

如何在调试过程中停止计数器嘀嗒声?

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

    您好、Jim、

    让我进一步探究您的 spin_time 函数实现并返回给您。

    [引述 userid=“346969" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1488554/j784s4xevm-gtc-spin-time-does-not-match-the-configured-frequency

    还有另一个问题:即使我设置 CNTCT.HDBG=1、当我停止在调试器中时、GTC 计数器也应该冻结、但它会不断增加

    如何在调试过程中停止计数器嘀嗒声?

    [/报价]

    我重新附上了我之前提供的文本文件、其中包括有关如何在第 27 行停止 GTC 的说明。 GTC 映射到时隙 0、与 MCU 计时器类似、映射到时隙 105。 此外、请注意步骤 2、您可以在完成后手动设置该位、也可以将其添加到 CMM 脚本中。

    e2e.ti.com/.../4520.cpu_2D00_suspend_2D00_mapping.txt

    谢谢、

    Neehar

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

    HDBG 位正在工作、谢谢。

    仅供参考、旋转时间代码实现应该是可以的。 多年来、我一直使用不同供应商的不同处理器对其进行测试、适用于其他处理器。 重点可能是时钟频率

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

    您好、Jim、

    当 GTC_CLKSEL_clk_sel[3:0]设置为 000 时、GTC 时钟将被选择为 MAIN_PLL3_HSDIV3_CLKOUT、就像您说的那样。

    假设 HSDIV 值为 7、预期的 GTC 频率实际上为 2000MHz / 8 = 250MHz。

    [引述 userid=“346969" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1488554/j784s4xevm-gtc-spin-time-does-not-match-the-configured-frequency

    MAIN_PLL3 clkout 为 1GHz:

    [/报价]

    您在哪里看到了该值?

    谢谢、

    Neehar

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

    您是如何从 MAIN_PLL3 获得 2GHz 的?   根据下面的配置、该频率为 1GHz

    下面是计算方法:

    MCU_SYSCLK0

     

     

     

     

     

    十六进制

    12 月

    Fout

    FOUTPOSTDIV

     

     

     

    (FREF/REFDIV)*(FBDIV+FRAC >>24)

    FOUT/(DIV1+DIV2)

    FREF

     

    19200000

    2000000000.38

    1000000000.19

    FBDIV

    0x68

    104.

     

     

    FRAC

    0x2AAAAB

    2796203.

     

     

    REFDIV

    1.

    1.

     

     

    DIV1

    1.

    1.

     

     

    DIV2

    1.

    1.

     

     

    GTC 时钟没有使用  FOUTPOSTDIV? 它使用的是下表中的 FOUTP 或 FOUTN?

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

    您好、Jim、

    明天我将跟进并澄清所有问题。  

    谢谢、

    Neehar

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

    GTC 计数器还有另一个问题:

    如果我启用数据缓存、GTC 计数器将停止;我必须禁用数据缓存、然后 GTC 计数器将计时。  为什么 DCache 状态会影响 GTC?

    SDK 中是否有 GTC 测试应用程序?  如果有 GTC 测试应用、我可以使用 TI 示例来重现问题

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

    您好、Jim、

    很抱歉、因为我的带宽很低。

    GTC 时钟没有使用  FOUTPOSTDIV? 它使用的是下表中的 FOUTP 还是 FOUTN?

    主 PLL3 没有 FOUTPOSTDIV 输出、GTC 使用通过主 PLL3 HSDIV 的 FOUTP 的输出。  对于 2GHz 的 fout、计算是正确的、用于 GTC 的主 PLL HSDIV1 将除以 PLL3_HSDIV_CTRL1[0:6]+ 1、 实际上对于您的情况、该值为 2000MHz / 8 = 250MHz。

    此外、FOUTPOSTDIV = FOUTP/(POSTDIV1) * POSTDIV2)、您已通过分母中的 POSTDIV1 + POSTDIV2 计算得出。

    是否使用 TISCI 进行时钟设置? 您的寄存器值与我的设置不同、我之前提供的信息假设您使用的是TI SCI。  

    此外、如果您已手动设置时钟、请确保其处于下面提供的工作频率范围内。

    [引述 userid=“346969" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1488554/j784s4xevm-gtc-spin-time-does-not-match-the-configured-frequency/5726746 #5726746“]

    如果我启用数据缓存、GTC 计数器将停止;我必须禁用数据缓存、然后 GTC 计数器将计时。  为什么 DCache 状态会影响 GTC?

    [/报价]

    PDK 中没有任何 GTC 测试应用。  很抱歉、我不熟悉该位。 这是哪个寄存器的一部分?  

    最后、您的具体用例是什么?

    谢谢、

    Neehar

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

    数据缓存是 SCTLR 中的一个位。 它是一个非常基本的控制寄存器。 应用程序启用指令缓存和数据缓存以提高性能。 ICache enable 没有任何问题、但是当我启用 d-cache 时、GTC 不再打勾

    以下是启用 dcache 时的测试结果:

    检查点 1:运行时 69.ms

    检查点 2:从运行时间 69 毫秒继续运行至 4.5 秒、GTC 计数器未勾选、保持相同的计数器

    GTC 在到达断点之前正在运行;之后它不再更新。

    如果禁用了 dcache、则 GTC 计数器正在正确更新。

    该应用程序完全相同、只启用或禁用 SCTLR.C 位。

    我已经上传了精灵供您比较。  e2e.ti.com/.../test_5F00_binaries.zip

    我认为任何应用程序逻辑都不会导致此问题

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否使用 TISCI 进行时钟设置? 您的寄存器值与我的设置不同、我之前提供的信息假设您使用的是TI SCI。  [/报价]

    我使用闪存脚本设置时钟。 如何将时钟设置为正确的状态?  对于没有引导加载程序的 r5f 应用、TI 针对设置时钟有何建议?  在 TI 启动代码中、我找不到时钟设置、SRAM、DRAM 等的信息   

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

    您好、Jim、

    [引述 userid=“346969" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1488554/j784s4xevm-gtc-spin-time-does-not-match-the-configured-frequency/5731976 #5731976“]

    数据缓存是 SCTLR 中的一个位。 它是一个非常基本的控制寄存器。 应用程序启用指令缓存和数据缓存以提高性能。 ICache enable 没有任何问题、但是当我启用 d-cache 时、GTC 不再打勾

    [/报价]

    该查询似乎偏离了线程标题、您能否为此创建新线程? 我可以为您提供帮助。

    我使用闪存脚本设置时钟。 如何将时钟设置为正确的状态?  对于没有引导加载程序的 r5f 应用、TI 针对设置时钟有何建议?  从 TI 启动代码中、我找不到时钟设置、SRAM、DRAM 等的信息  

    您是否正在使用 SBL 运行 FreeRTOS? 还是使用 GEL 将裸机运行到 CMM 脚本?

    谢谢、

    Neehar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否使用 SBL 运行 FreeRTOS? 或使用 GEL 将裸机运行到 CMM 脚本?

    我正在运行 FreeRTOS 以及 GEL 到 CMM 脚本。 没有引导加载程序。 用于 MCU R5F 的 SBL 是 A72 上 u-boot 的一部分? SBL 存储在何处?

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

    您好、Jim、

    GEL 到 CMM 脚本应该正确设置 PLL 和时钟。 您的时钟当前是否有任何问题?

    SBL 存储在哪里?

    中的 SBL 通常与引导介质一起存储、具体取决于情况。 例如、使用 SD 卡引导时、它作为 tiboot3.bin 存储在引导分区中。

    您是否仍有 GTC 问题? 是否可以关闭此主题?

    谢谢、

    Neehar

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

    调试后、GTC 停止勾选问题。 我怀疑这是调试器问题。 我已在此主题中上传二进制文件。 如果您可以使用调试器加载 elf、并检查 GTC 在断点处停止后是否仍在计时。

    我已经准备好材料并将其上传到该主题。 如果我创建新主题、则需要准备这些信息并重新上传。 我们可以解决这一主题中的问题。 这仍然是 GTC 问题  

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

    您好、Jim、

    这是否与 DCache 位有关?

    处理该位的用例是什么?

    谢谢、

    Neehar

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

    通常我们在启动时为性能启用 DCache、之后不会更改。 问题是:在启动时启用 dcache 时、调试器中断/恢复执行后 GTC 不会嘀嗒声;如果在启动时未启用 dcache、则 GTC 在调试器中断/恢复执行后继续嘀嗒声  

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

    您好、Jim、

    如何配置 GTC? 您能提供代码吗?

    您使用的是 PDK 或定制应用中的代码?

    谢谢、

    Neehar

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

    您好、Jim、

    接下来、该问题是否仍然存在?

    谢谢、

    Neehar

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

    问题仍然存在:启用 dchache 时、如果我从调试器中断程序、GTC 计数器会冻结、不会再打勾。 我认为这是一个缓存刷新问题、但不确定它是由调试器导致的、或者在 r5f 设置中缺少某些 dcache 刷新配置。

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

    您好、Jim、

    如何配置 GTC?

    您使用的是自定义代码还是来自 PDK 的代码?

    谢谢、

    Neehar

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

    我将尝试使用 SDK 应用重现问题

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

    谢谢 Jim、我将等待您的调查结果。

    谢谢、

    Neehar