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/TMDSEVM572X:CMEM 忙池

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/668267/linux-tmdsevm572x-cmem-busy-pools

器件型号:TMDSEVM572X

工具/软件:Linux

您好!  

是否有任何方法可以了解使用 CMEM 池的内容? 我尝试了"cat /proc/cmem、发现缓冲池 很忙。 我使用的是从 Yocto 构建的 Processor SDK 4.01。 我没有在 DSP 或 IPU 内核上运行任何内容。  


root@am57xx-EVM:~# cat /proc/cmem

块0:池0:1 bufs 大小0xc000000 (请求0xc000000)

池0忙 bufs:
ID 0:phys addr 0xa0000000 (缓存)

池0空闲 bufs: 

使用从 Yocto 构建的 Processor SDK 4.01。

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

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

    默认情况下、cmem 块为保留存储器(用于 DSP 或 IPU)。 它们的固件会"声明"该信息。

    您可以构建跟踪 cmem 使用情况的应用程序:
    processors.wiki.ti.com/.../CMEM_Overview

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

    由于我没有在 IPU 或 DSP 内核上运行任何内容(我已从/lib/firmware 目录中删除固件)、并且仍然看到 cmem 块处于繁忙状态、这是否意味着 Linux 上运行了一些 IPU 或 DSP 应用程序、正在保留该块?

    谢谢、
    Jimit
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    … 我能够使用以下方法查找使用 cmem 的进程:

    lsof | grep cmem

    ti-MCT-daemon 正在保留 cmem 池。 当我停止服务时、我能够看到池可用。 那么、后续问题-

    1) 1)如果我没有在任何应用程序(包括 IPU 和 DSP 固件)中使用 OpenCL、那么禁用 ti-MCT-daemon 服务是否安全? 我将使用 ti-IPC 在 ARM 和 IPU/DSP 内核之间进行通信、并使用 cmem 在 ARM 和 DSP 之间共享大数据块。

    2) 2)如果我想使用 OpenCL 将音频编解码器处理卸载到其中一个 DSP 内核、我是否仍然可以将其禁用? 还是最好为我的应用程序定义单独的 cmem 池?

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

    可能会终止 TI-MCT 守护程序、但在某些情况下、您可能需要此服务。
    有关更多信息、请参阅以下用户指南:
    downloads.ti.com/.../multiprocess.html

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

    Yordan、您好!

    我将研究多进程守护程序。  

    目前、我继续测试 ARM 的 CMEM 缓冲池分配、并使用 MessageQ 将物理地址传递到 DSP 内核上运行的代码。 我能够验证 ARM 上的 CMEM_ALLOC()调用是否成功、并验证 DSP 内核上是否接收到0xa0000000的物理地址。 但是当我尝试使用  DSP 内核上的 Resource_physToVirt()将该物理地址转换为虚拟地址时,它失败并返回-1。 我已附加 RSC_Table_vayu_dsp.c 以供参考。 可以帮我解决这个问题吗?

    e2e.ti.com/.../rsc_5F00_table_5F00_vayu_5F00_dsp.c

    此致、

    Jimit

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

    我按照本文档中提到的说明修改资源表-
    www.ti.com/.../sprac60.pdf

    现在、我能够将 PHY 转换为 DSP 内核上的虚拟地址并访问 CMEM 缓冲器。

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

    感谢您更新该主题。

    此致、
    Yordan