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.

[参考译文] AM2434:[AM2434]内核之间的同步

Guru**** 2580975 points
Other Parts Discussed in Thread: AM2434, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1572288/am2434-am2434-synchronization-between-cores

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

工具/软件:

您好、  

我正在使用 AM2434 EVM 板、我正在尝试同步内核。 我发现我可以使用 IpcNotify_syncall、sendSync 和 waitSync。
但内核之间存在相移。 我要切换两个 LED、每个内核上一个。 每个内核中的每个切换都有不同的延迟、例如 1 秒和 100ms。
我使用 IpcNotify_syncall 使快速响应等待缓慢响应。 实际上、它会执行该操作。

问题是 LED 的上升沿或下降沿之间存在相移。 这种相移不是恒定的。 会在每个边沿上发生变化。
相移可能在 15 微秒到 1 毫秒之间变化。

我的问题如下:

  • 我需要了解为什么会出现这样的相移。
  • 如何消除这种相移?
  • sendSync 和 waitSync 如何工作? 他们如何交换消息?

提前感谢您。

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

    尊敬的 Salah:有关 IPC Notify 的信息、请参阅 MCU+SDK 用户指南 :AM243x MCU+ SDK:IPC Notify

    IPC Notify 示例 (AM243x MCU+ SDK:IPC Notify Echo) 的主要功能是:

    • 使用进行初始内核同步  IpcNotify_syncall () 确保在开始发送消息之前所有内核均已准备就绪
    • 主内核向所有参与的内核发送初始消息
    • 远程内核消息返回
    • 使用信标进行同步/完成  

    回到您关于  IpcNotify_sendSync () 和  IpcNotify_waitSync () 如何工作的问题。

    • IpcNotify_syncall(): 使用两相同步。 首先将同步信号发送到所有已启用的内核、然后等待来自所有已启用的内核的所有同步信号
    • IpcNotify_sendSync (): 基本上、使用实现屏障同步 I PC_NOTIFE_CLIENT_ID_SYNC 在 IpcNotify_sendMsg() 中

    int32_t IpcNotify_sendSync(uint32_t remoteCoreId)
    {
        return IpcNotify_sendMsg(remoteCoreId,
                    IPC_NOTIFY_CLIENT_ID_SYNC, /* Uses IPC_NOTIFY_CLIENT_ID_SYNC - a reserved client ID for sync operations */
                    0xFF, /* message value is dont care */
                    1 /* wait for messahe to be put in the HwFifo */
                    );
    }

    • IpcNotify_waitSync(): 基本上、等待来自指定远程内核的同步消息、并在接收到同步通知或发生超时时时返回

    我不确定相位如何偏移、我猜您是指延迟?如果是、同步延迟期间将取决于其他内核响应的时间。 如果我误解了问题、请告诉我。 此外、如果您可以详细说明一下您尝试实现的目标(两个不同内核中的两个 LED 同步闪烁? 还是别的?) 好极了。

    谢谢您、

    Paula

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

    您好、Paula、

    正如您所说的、我尝试做的是、两个不同内核中的两个 LED 同步闪烁。
    我的问题是、它们并不是真正同步的。 并且 LED 之间具有较小的延迟。 延迟以微秒和毫秒为单位。

    我不确定这是同步问题还是计时器有问题。
    所以,现在,我的问题是:

    - IpcNotify_sendSync 和 IpcNotify_waitSync API 是软件 IPC 机制还是硬件 IPC 机制?
    -这些 API 是否使用硬件中断?

    -关于计时器,我看到板可以上升到 800MHz。 如何实现这一点? 从 SysConfig 中、我可以选择 MCU_HFOCS0 但我想它只提供 25MHz。 也许我之前提到的延迟是由于计时器或其他原因而发生的。 因此、如果您告诉我如何为单个计时器获取板上的 800MHz、那会很有帮助。

    如果您需要对我的问题做出更多解释、请告诉我。
    提前感谢您的帮助。

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

    你好 Hatem、让我检查一下、很快就会回来

    Paula

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

    你好 Hatem ,对不起我迟到的答复。  

    - IpcNotify_sendSync 和 IpcNotify_waitSync API 是软件 IPC 机制还是硬件 IPC 机制?
    -这些 API 是否使用硬件中断?[/报价]

    IpcNotify_sendSync 和 IpcNotify_waitSync 是在  IPC Notify 框架之上构建的软件机制。 因此、这些 API 在底层使用硬件中断

    -关于计时器、我看到该电路板可以达到 800MHz。 如何实现这一点? 从 SysConfig 中、我可以选择 MCU_HFOCS0 但我想它只提供 25MHz。 也许我之前提到的延迟是由于计时器或其他原因而发生的。 因此、如果您告诉我如何为单个计时器获得板上的 800MHz、将会很有帮助。

    AM243x 支持高达 800MHz 的频率、但并非所有外设都以该速度运行。 换句话说、有一个 25MHz 振荡器用作基准时钟、可以从中获取其他时钟。 不是该主题的专家、但请参阅时钟树工具(或我们的 TRM)、了解有关计时器和时钟的更多详细信息。  

    谢谢您、

    Paula

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

    非常感谢您的帮助。 Blushμ s