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.

[参考译文] AM2612:[AM263x/AM261] FreeRTOS 中双核存储器处理和高速缓存一致性的最佳实践

Guru**** 2815985 points

Other Parts Discussed in Thread: AM2612

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1622141/am2612-am263x-am261x-best-practices-for-dual-core-memory-handling-and-cache-coherency-in-freertos

器件型号: AM2612

尊敬的 TI E2E 团队:

我目前正在使用开发一个系统 AM2612 双核 MCU 持续更新 FreeRTOS 。 为确保系统稳定性和实时性能、我正在寻找有关多核存储器处理的全面指南或最佳实践。

具体而言、我想澄清以下几点:

  1. 存储器分区: 在两个 R5F 内核之间分配 TCM (TCMA/B) 和共享 SRAM 时、建议采用什么策略?

  2. 高速缓存一致性: 由于 AM2612 具有 L1 缓存、因此在共享存储器中保持一致性的最佳方法是什么? 我应该使用 MPU 将共享区域设置为“不可缓存“、还是手动管理更好Cache Clean/Invalidate

  3. 内核间同步: 为了在双核 FreeRTOS 环境中保护共享资源、必须使用 硬件信标 (HWSEM) 与 FreeRTOS 信标配合使用的模块?

  4. DMA 和存储器: 使用 DMA 在共享 SRAM 和本地 TCM 之间移动数据时、是否有任何特定的对齐或放置要求(例如 32 字节对齐)?

如果有双核 FreeRTOS 工程的任何应用手册或链接器脚本示例、请告知我。

此致、
插孔  

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

    你好、Jack

    您可以参阅上述示例以了解入门信息  

    software-dl.ti.com/.../EXAMPLES_DRIVERS_IPC_NOTIFY_ECHO.html

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

    你好、Nilabh。

    感谢您的答复。  

    ‑将使用您的 MCU SDK 评估多个 μ C 内核用例。 empty‑我们注意到一个“多核“样本(例如,在一个或基本模板下)、我们无法找到额外的多‑内核示例来明确说明缓存一致性和共享 μ 存储器可靠性。

    我们已经观察到、应用在单‑μ C 内核配置中的行为正常、但存在如下问题 数据丢失/损坏 显示 双‑内核或更高 。 我们怀疑 高速缓存一致性和/或 DMA 交互 测试是根本原因。

    请提供:

    1. 多‑内核示例工程 这表明:

      • ‑Ω 间内核通信(邮箱/RPMsg/消息单元/共享存储器)
      • 内核之间的共享‑μ A 缓冲器切换 缓存维护 (清除/失效)、存储器屏障和 MPU 属性 (不可缓存‑或通过‑写入等)
      • 安全交互 DMA (不‑可缓存区域或传输前/后显式缓存维护)
    2. 文档或应用手册 打开:

      • 推荐 MPU/MMU 共享区域的设置(正常的非‑可缓存与设备/严格‑有序,可共享属性,推测预取控制)
      • 必需 高速缓存维护 API (例如,按地址/行/范围清除/失效)和 内存障碍 (DMB/DSB/ISB) 在生产商/消费者边界
      • 缓存‑行对齐 和缓冲区大小调整指导(例如,与缓存行对齐,避免错误共享)
      • RTOS 集成 提示(例如零‑复制队列,IOMMU/DMAMUX 设置、ISR 与任务‑级别切换)
      • 已知 勘误表 或影响多‑内核一致性或 DMA 的限制
    3. 参考配置

      • 的链接器脚本或段属性示例 不可缓存‑μ s 共享存储器(例如,专用的 SRAM/TCM/OCRAM 部分)
      • 样本数据 高速缓存策略 表和 MPU 区域定义及注释
      • 示例 RPMsg/邮箱 具有缓存‑安全共享缓冲区的配置

    如果 SDK 中存在示例名称/路径(例如,“多核 hello world“、“RPMsg Shared memory echo、“邮箱 ping‑pong “等)、请共享确切的名称 项目名称和位置

    如果需要、我们可以提供有关目标器件/SDK 版本的更多详细信息。 提前感谢您的指导。

    此致、
    插孔

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

    您好、Jack、

    有像 IPC 共享记忆库示例这样的示例、它们具有完全相同的用途、您是否查看过它们?

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

    github.com/.../ipc

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

    我将 补充一些一般性意见

    如果您尚未了解、请查看 AM261x MCU+ SDK:使用 MCU SDK 优化应用。 AM261x MCU+ SDK:开发人员指南 提供了更多此类信息

    在两个 R5F 内核之间分配 TCM (TCMA/B) 和共享 SRAM 的建议策略是什么?

    因此、这取决于应用。 AM2612 上每个 R5F 的 TCM 为 256KB 等待状态。 您可以将时间关键型代码和数据放置在这里。 没有高速缓存时的 OCRAM 访问延迟约为 24 个 R5F 周期。 是否缓存 OCRAM 取决于用例。 如果性能不是关键问题、从软件的角度来看、不进行缓存可能会更简单。 正如您观察到的那样、使缓存管理失效/刷新也会造成一些损失、这取决于您多久执行一次此操作以及系统中涉及 DMA 访问等。

    是否必须使用 硬件信标 (HWSEM) 模块与 FreeRTOS 信标一起?

    建议使用硬件 spinlock、因为 AM26x 中的 R5F 集群不会像同步基元那样通过 LDREX/strex 进行内核同步。