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.

[参考译文] Linux/AM5728:CMA 和 CMEM 存储器映射

Guru**** 2587365 points
Other Parts Discussed in Thread: AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/636524/linux-am5728-cma-and-cmem-memory-mapping

器件型号:AM5728

工具/软件:Linux

您好!

我正在使用一个 RAM 小于 EVM (256MB)的定制 AM5728板。 我一直在修改器件树以重新分配 CMA 和 CMEM 等内存资源、但我在为系统设计新的内存映射时遇到了困难、而且不会影响任何资源。

部分挑战是了解为什么为 EVM 分配不同的 CMA 和 CMEM、以及如何为我的电路板安全地修改这些内容。 我参考了 SPRAC60、其中概述了表1中的默认 PSDK 存储器映射、如下所示:

存储器部分 物理地址
A15 Linux 内核 0x80000000
IPU2 CMA 0x95800000
DSP1 CMA 0x99000000
IPU1 CMA 0x9D000000
DSP2 CMA 0x9F000000
CMEM 0xA0000000

在我的系统上、有效的物理内存范围是0x80000000-0x8FFFFFFF、这意味着必须修改所有 CMA 和 CMEM 分配的偏移量和大小。 任何人能否就如何安全地修改这些分配提供任何指导或信息。

具体而言、有几个问题:

1) 1)上述所有 CMA 和 CMEM 分配是否均可移至0x80000000-0x8FFFFFFF 范围? 我知道位于较低地址范围(大约0x8000000000-0x81000000)的 Linux 内核以及位于较高地址范围(大约0x8F5FFFFF-0x8FFFFFFF)的器件树和 U-Boot 映像、但0x8000000000-0x8FFFFFFF 范围内是否有其他需要注意的内容?

2) 2)如何确定我的情况下每个 CMA 和 CMEM 分配所需的大小?

谢谢、

乍得

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、乍得、

    内核将 CMA 用于 DMA、而 CMEM 用于 ARM 和 DSP/IPU 内核之间的 IPC。 您需要调整尺寸。 不同的驱动程序可能对 CMA 大小有不同的要求、对 CMEM 也有相同的要求。 如果大小不够大、则在分配内存时会出现驱动程序或应用程序的问题。

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

    我希望能有一些具体的数字或方法来计算或确定棒球场的号码。

    也许甚至有一些理由说明为何选择目前的拨款。

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

    您好、乍得、

    CMA 大小是根据已知用例确定的,对于未知处理器,CMA 大小的最小默认值为8 MB。 这些尺寸也以8 MB 的倍数选择、以满足最早开发时的 CMA 粒度需求。 其中大多数源自其他 TI BU 的用例,我们几年来没有改变布局(相信它们与3.8内核实际情况相同)。 此外、目前这些分割地址和 IPC 3.x 软件中使用的地址之间存在相关性、而 IPC 3.x 在 AM57xx 和其他 BU 平台之间没有单独的构建、因此它们在所有平台上都匹配。

    CMEM 默认块为 OpenCL 应用程序保留、大小基于 OpenCL 的要求。 如果未使用 OpenCL、则可以删除 DTS 中的 CMEM 节点。 但是、如果在 ARM 和 DSP/IPU 之间使用 IPC、并且如果连续存储块是存储器分配的首选方法、则 CMEM 的大小将取决于应用发送到 DSP/IPU 的数据大小。  

    雷克斯