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:共享存储器创建和管理

Guru**** 2910960 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/1568264/am2434-shared-memory-creation-and-management

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

工具/软件:

您好、  

我正在使用 AM2434 EVM 板、我正在尝试制作软件 IPC、而不使用硬件 IPC 以及可用的 API(如 IPC_Notify 或 IPC_RP_Message)。
我需要的是有关如何执行以下操作的任何指导(如果可用):

-在内核之间创建一个共享存储器。
-访问创建的存储器部分。
-从记忆区读取。

提前感谢您。

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

    您好、

    以下指南将为您提供帮助:  【常见问题解答】PROCESSOR-SDK-AM64X:如何仅与两个内核进行 IPC 通信? (例如 R5FSS0-0 和 R5FSS1-1)。 

    谢谢、

    Vaibhav

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

    另请参阅来自 MCU+ SDK AM243 的现有 IPC 示例。 您可以在 SDK_INSTALL_PATH/examples/drivers/ipc 中找到它们

    MCU+ SDK 示例链接至 IPC: https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/latest/exports/docs/api_guide_am243x/EXAMPLES_DRIVERS_IPC_NOTIFY_ECHO.html

    希望这有所帮助。

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

    实际上、我想要一个没有中断的 IPC。 因此、我创建了一个共享内存区域(即 USER_SHARED_MEM)、我试图自己写入该区域并使用 spinlock 来防止出现竞态条件。 我的问题是变量未正确访问。

    如果您能提供帮助、我需要一个关于如何在两个内核之间创建共享变量的指南。

    提前感谢您。

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

    您好、

    感谢您的耐心等待、因为我们正值 TI 印度假日、因此我们延迟了回复。

    如果您能提供帮助、我需要的是有关如何在两个内核之间创建共享变量的指南。

    使用共享变量一词、您是指简单的 uint32_t var? 此变量将如何在多个内核中使用。

    期待您的答复。

    谢谢、

    Vaibhav

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

    尊敬的 Vaibhav:

    是的、我想先用一个简单的 uint32_t var 作为起点。 我尝试了示例示例 (ipc_spinlock_sharedmem)、但将其放入具有两个内核的系统项目中时、这种方法并不起作用。 我不确定问题实际上是什么、但我创建的变量在某种程度上被其他内核看不到、它仍然是本地的、不是共享的。

    这就是我在代码中创建变量的方式:
    Volatile uint32_t mySharedVar___attribute__(aligned (128)、section (.bss.user_shared_mem“)));)


    这就是我在前面提到的示例中发现它创建的方式。
    提前感谢您。

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

    您好、

    我想验证您是否看到最新的 AM243 11.1 SDK 中提供了默认示例成功?

    示例: https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/latest/exports/docs/api_guide_am243x/EXAMPLES_DRIVERS_IPC_SPINLOCK_SHAREDMEM.html

    您是否看到 gUserSharedMem 的不同值和如下所示的输出:

    谢谢、

    Vaibhav

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

    「我没有,我没有。 以下是我执行的步骤:
    -使一个空的系统项目包含 2 个核心项目。
    -将 spinlock 代码复制到两个核心。
    -运行整个项目。

    症状是每个内核看不到共享区域、只能将变量作为局部变量使用。
    经过一些调查,我发现了这个问题。 问题在于缺少 MPU 配置。

    以下是解决方案(缺少的配置):

    -从的“内存区域“部分 s. ysconfig :我们可以看到 USER_SHM_MEM 起始地址和大小。
    -现在、我们需要做的是转至中的“MPU ARMv7“部分 其中概述了 SysConfig 、选择覆盖 USER_SHM_MEM 范围的内存区域、然后将其设置为 S 很好。

    -这解决了我的问题,两个核心现在正正确地访问变量。

    感谢您的帮助 VaibhavBlush


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

    您好、

    默认示例中提到了相同的设置、如下所示:

    如果您从空工程开始、则需要添加这些工程、否则 spinlock 共享存储器的默认 IPC 示例具有该示例。

    将此主题标记为已关闭。

    谢谢、

    Vaibhav