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.

[参考译文] MCU-PLUS-SDK AM243X:GTC 的使用

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1323925/mcu-plus-sdk-am243x-usage-of-gtc

器件型号:MCU-PLUS-SDK AM243X

您好!

我们使用的是 MCU+ SDK 09.00。 我刚刚注意到、TRM 中有一个 GTC、SDK 中有一个。 我在搜索可以通过内核使用的时间检查机制时发现了这个机制。 驱动程序文档非常少、但至少对我们来说、似乎可以通过多个内核来使用它。 因此、我们可以对从一个内核到另一个内核的调用持续时间进行基准测试。 另一方面、我在您的任何基准测试示例中都看不到。 我只能在用于中断的 sci_client 资源管理中的某个位置找到它。

该模块是否正常工作? 我们喜欢11 µs 通过 RPMessage 进行一个直接调用。 这似乎是合法的,但我想知道为什么它不使用更多的时间。

如果我从多个内核访问它、它的行为是怎样的? 例如:

-初始功能不同步,如果我在启动时从多个内核初始化它是一个问题吗?

- GTC_getCount64 ()"线程"是否安全?

-如果一个内核执行 TRM 中所述的重置,会发生什么情况(这在驱动程序中没有实施顺便)。 而另一个内核同时读取该值?

此致

Felix

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

    尊敬的 Felix:

    该模块功能齐全、以下链接指向测试用例、即 GTC

    mcupsdk-core/test/drivers/GTC at next·TexasInstruments/mcupsdk-core GitHub ·

     - 初始功能不同步,如果我在启动时从多个内核初始化它是一个问题吗?

    我们还没有进行过这方面的尝试、但从 Init 代码中写入的寄存器来看、这似乎不是问题。

    - GTC_getCount64 ()"线程"是否安全?

    我认为不需要进行线程安全实现、因为 API 中没有读取修改写入。 已在 API 中处理原子读取。

    -如果一个内核执行 TRM 中所述的重置,会发生什么情况(这在驱动程序中没有实施顺便)。 而另一个内核同时读取该值?

    这将导致错误的计时器读取。 仅当所有内核针对复位对齐后、才应执行复位。

    此致、

    Ashwin

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

    该线程针对每个请求解锁。 然而,在未来你可以简单地点击:"询问相关的查询"并发布一个新的问题  

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

    尊敬的 Ashwin:

    我们刚刚注意到了一点:无法从多个内核初始化 GTC。 至少我们在从闪存引导时没有让它运行。 CCS 加载完成、但闪存引导在写入寄存器时带来中止。

    那么、我们要将 GTC 初始化移到引导加载程序中。 这只是一个提示、因为前面的语句:"我们还没有尝试过、但看看正在 Init 代码中写入的寄存器、这似乎不是问题。" 是由我们尝试的、它似乎不起作用。

    此致

    Felix

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

    Felix、您好!

    我们刚刚注意到一个问题:无法从多个内核初始化 GTC。 至少我们在从闪存引导时没有让它运行。 CCS 加载已结束、但闪存引导会在写入寄存器时导致中止。[/QUOT]

    实际上、GTC 计时器是非常简单的计时器、任何内核都可以进行写入和读取、因此没有问题。

    此外、同样的代码可在 CCS 中正常运行、而不能在闪存中正常运行。 这是奇怪的行为。

    请告诉我从 CCS 加载示例时您使用的引导模式是什么? 是否为无引导模式?

    此致、

    Anil。

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

    嘿、Swargam、

    因此、当我们通过 CCS 加载时、它直接位于先前从闪存引导的同一个板上。 这就是我们配置的 xSPI-Bootmode (标准 OSPI 与我们使用的闪存不能一起使用)。

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

    Felix、您好!

    [报价 userid="45384545" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1323925/mcu-plus-sdk-am243x-usage-of-gtc/5298494 #52994"]因此、当我们通过 CCS 加载时、它直接位于之前从闪存引导的同一电路板上。 正是 xSPI 引导模式

    实际上、我不明白为什么当您从闪存加载示例而不是使用 CCS 时会收到数据中止。

    例如、如果您将开发板保持在无引导模式、并尝试从 CCS 加载示例、则可能会有一个 SOC 没有使用任何防火墙初始化的可能性。 因此、从 CCS 加载示例时不会出现防火墙问题、如果您确实从闪存定义加载示例、SBL 将初始化所有防火墙。在这种情况下、当您从闪存加载时、可能会出现防火墙访问问题。

    这样、您使电路板始终处于 xSPI 引导模式、然后、再从 CCS 加载示例。

    实际上、此过程看起来是可以的。 在此过程中、除了从 CCS 之外、从闪存加载文件时也不会遇到任何问题。

    例如,如果我们假设 GTC 有防火墙,那么即使它在 CCS 或闪存加载中,您也无法访问。

    另一个问题是您没有同时将 GTC 与 DMA 配合使用?

    你可以在下面分享详细信息,我尝试 重现 问题在我身边.

    我希望您使用相同的 TI SBL。

    您要在哪些内核上 访问 GTC?

    停止 GTC 定时器的依据是什么?

    需要启动哪个内核、需要停止哪个内核?

    请分享所有详细信息以及 您 使用的 MCU+SDK 版本 ?  

    此致、

    Anil。

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

    嘿、Swargam、

    我们不会将 DMA 与 GTC 一起使用。 我们仅使用 MCU-Plus SDK 中提供的 API。

    我们使用 OSPI_SBL 作为基础、但我们可以根据需要进行修改。 但是、如果进行了 SDK 更新、我们也会更新引导加载程序。

    我们从 mcu0_0和 mcu0_1访问 GTC。

    我不理解下一个问题。 我们没有直接停止 GTC 计时器。

    因此、我们仅从两个内核通过 SDK 函数对其进行初始化。 两个内核都访问 GTC 读数。 我们已更新为 SDK 09.01

    此致、

    Felix

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

    Felix、您好!

    所以、您的要求很简单。

    您需要在两个内核中读取 GTC 计数器。

    在这里、您不需要将 GTC 初始化为两个内核。

    您可以在 R5F0_0或 R5F0_1中初始化 GTC 计数器、并在两个内核中读取、而不会出现任何问题。

    显示连接。

    [报价用户 id="453845" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1323925/mcu-plus-sdk-am243x-usage-of-gtc/5301357 #5301357"]

    因此、我们仅从两个内核通过 SDK 函数对其进行初始化。 两个内核都访问 GTC 读数。 我们已更新为 SDK 09.01

    [报价]

    现在、迁移到 MCU+SDK 09.01版本后、您的问题是否已得到解决?

    此致、

    Anil。

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

    嗨、Anil、

    我们可以看到问题已解决、因为我们可以将 GTC 初始化代码切换到引导加载程序中。 使用 SDK 09.01进行提示仅意味着该线程以 SDK 09.00开头。

    重新打开的目的是通知您,如果同时从两个内核调用 gtc_init (),我们将看到它不会起作用。

    此致

    Felix

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

    Felix、您好!

    您可以   从 SBL 或 任何一个 R5F 内核初始化 GTC 没有问题、并且在两个内核上启动 GTC 是不正确的。

    在任何一个内核上初始化 GTC 后、您可以从 所有内核读取它、没有问题。

    我可以接受您的上述建议、在 SBL 中配置 GTC 并在 R5F 应用中读取它。

    我将关闭此主题、为新查询打开新主题。

    此致、

    Anil。