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.

[参考译文] AM6442:SysConfig 会为 PRU_ICSSG0/1 生成不兼容的时钟配置

Guru**** 2535150 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1564581/am6442-sysconfig-generating-incompatible-clock-configurations-for-pru_icss0-1

器件型号:AM6442
主题:SysConfig 中讨论的其他器件

工具/软件:

SDK:工业通信 v11.0.0.08

SysConfig 1.22.0+3893

在我的当前工程中、使用了两个 PRU-ICSS:

- PRU_ICSS0 配置为 RF50_0、作为 EtherCAT 相关性。

- 为 RF51_0 内核配置了 PRU_ICSS1。

它们以不同的时钟速率运行、但 SysConfig 为两者分配了相同的父时钟(在本例中为=2)。 这导致其中一个 模块无法按预期工作:如果我延迟了 RF51_0 的启动、我可以验证 ICSS0 运行是否正常、但在调用 PowerClock_init () 后会立即“中断“。

/* Core R5F0_0 */
SOC_ModuleClockFrequency gSocModulesClockFrequency[] = {
    { TISCI_DEV_PRU_ICSSG0, TISCI_DEV_PRU_ICSSG0_CORE_CLK, 200000000,2},
    { TISCI_DEV_PRU_ICSSG0, TISCI_DEV_PRU_ICSSG0_UCLK_CLK, 192000000, SOC_MODULES_END},
    { TISCI_DEV_PRU_ICSSG0, TISCI_DEV_PRU_ICSSG0_IEP_CLK, 200000000,5},

    { SOC_MODULES_END, SOC_MODULES_END, SOC_MODULES_END, SOC_MODULES_END },
};

/* Core R5F1_0 */
SOC_ModuleClockFrequency gSocModulesClockFrequency[] = {

    { TISCI_DEV_PRU_ICSSG1, TISCI_DEV_PRU_ICSSG1_CORE_CLK, 333333333,2},
    { TISCI_DEV_PRU_ICSSG1, TISCI_DEV_PRU_ICSSG1_UCLK_CLK, 192000000, SOC_MODULES_END},
    { TISCI_DEV_PRU_ICSSG1, TISCI_DEV_PRU_ICSSG1_IEP_CLK, 200000000,5},

    { SOC_MODULES_END, SOC_MODULES_END, SOC_MODULES_END, SOC_MODULES_END },
};

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

    尊敬的 Martin:

    我已经听取了您的意见并进行了研究。 请等待一段时间恢复。

    此致、

    Tushar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这会导致其中一个端口无法按预期工作:如果我延迟 RF51_0 的启动、我可以验证 ICSS0 运行正常、但在调用 PowerClock_init () 后立即“中断“。

    您能否确认,它在 Soc_Module SetClockFrequency() API 中是否失败?

    如果是、请共享使用的 moduleId 和 clockId。  

    根据我的理解、ICSSG0 似乎在 R5F0-0 内核上运行正常、但 ICSSG1 模块无法在 R5F1-0 上运行。

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

    尊敬的 Tushar:

    [引述 userid=“16414" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1564581/am6442-sysconfig-generating-incompatible-clock-configurations-for-pru_icss0-1/6027071

    您能否确认,它在 Soc_Module SetClockFrequency() API 中是否失败?

    如果是、请共享使用的 moduleId 和 clockId。  

    [/报价]

      从 R5F1_0 调用 PowerClock_init () 内的 SOC_moduleSetClockFrequencyWithParent() 后、出现故障。

    模块 Id = 82

    clkId = 0

    根据我的理解、ICSSG0 似乎在 R5F0-0 内核上运行正常、但 ICSSG1 模块无法在 R5F1-0 上运行。

    实际上、ICSSG0 启动正常、但在 R5F1_0 上调用此函数后、它停止正常工作。 ICSSG1 按预期工作。

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

    对我来说,这似乎是预料之中的。 因为 ICSSG0 和 ICSSG1 的父时钟相同。 对于 R5F0-0、当您尝试将 ICSSG0 的父时钟设置为 200MHz 时、它按预期工作。 但是、当尝试为 R5F1-0 上的 ICSSG1 将相同的时钟设置为 333MHz 时、ICSSG0 无法正常工作、因为 ICSSG0 的时钟配置也在运行时更改为 333MHz、导致其失败。

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

    可以根据为 PRU 时钟选择 3 个独立的时钟源
    【常见问题解答】PRU_ICSSG:如何在 CCS 中查看和设置 PRU 内核频率?

    乍一看我在常见问题解答中所写的内容、333MHz 和 200MHz 只来自 1 个时钟(因此修改相同的时钟)。 第 1 步是使用 AM64x 时钟树工具进行检查、并查看另一个时钟源是否也可配置为提供 200MHz 或 333MHz。

    请注意、每个时钟周期恰好为 5ns (200MHz) 和 3ns (333.333333MHz)。

    如果 200MHz 和 333MHz 只能由同一时钟源提供、是否可以选项以每个时钟周期 4ns 的速率运行固件((250MHz、应使用总线时钟而不是 PRU_ICSSG 时钟) 、或以其他 ICSSG 子系统使用的时钟频率运行?

    此致、

    Nick

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

    再次检查了时钟树工具。 硬件支持将 200MHz 配置到一个 ICSSG、将 333MHz 配置到另一个 ICSSG。

    200MHz ICSSG 应 使用 MAIN_PLL2_HSDIV0_CLKOUT 作为时钟源。
    333MHz ICSSG 应使用 MAIN_PLL0_HSDIV9_CLKOUT 作为时钟源。

    此致、

    Nick