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.

[参考译文] AM623:了解 DMA 的防火墙

Guru**** 2478765 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1460476/am623-understanding-firewall-for-dma

器件型号:AM623

工具与软件:

您好!

因为这是一个复杂的主题、我想问我是否正确理解防火墙:

在我们的系统中、除了 A53内核上的一些安全应用程序之外、我们还使用 Linux。 从软件的角度来看、内存分离是由管理程序和 MMU 处理的。
但是、我们在 Linux 中使用 CPSW 网络驱动程序、该驱动程序也可以访问 DMA 引擎。 所以我们必须确保、当传入的数据包被 DMA 写入内存时、它只能写入特定的内存区域。 据我所知、这就是防火墙的用途。

您是否认为这是该场景的可行配置(从 TRM 获取的 ID):

-将完整内存配置为 PRIVT-ID 4 (COMPUTE_CLUSTER0)的后台区域,以实现正常的系统访问
-配置为 DMA 缓冲区分配的区域作为前景区域的 priv-ID 4 + 192 ( DMA 保留 priv-ID)

这将阻止 DMA 写入系统的其他部分、对吧? 或者、我会在这里错过什么吗?

谢谢

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

    您好!

    假设 DDR 是存储器、您可以按如下方式配置相应的 FWL ID 1 (#regions = 8):

    • 使用以下三个权限设置为整个地址空间配置后台区域:
      • 允许使用通配符 privid 0xC3访问所有人。
      • 允许使用通配符 privid 0xC3 (冗余)的所有人访问。
      • 阻止对 DMA 的访问(privid = 0)。
    •  通过以下三个权限设置、为分配给 DMA 的缓冲区配置前台区域:
      • 允许使用通配符 privid 0xC3访问所有人。
      • 允许使用通配符 privid 0xC3 (冗余)的所有人访问。
      • 允许使用通配符 privid 0xC3 (冗余)的所有人访问。

    这将阻止对整个 DDR 地址空间(分配给它的缓冲区除外)的 DMA 访问。

    此致、

    Prashant

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

    您好!

    感谢您的讲解、听起来很有希望。 是的、DDR 是存储器、我在 TRM 中找到了相应的防火墙。 但是、 您能告诉我 DMA 的 privid 0记录在哪里吗?

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

    您好!

    但没有文档记载。 TIFS 将 DMA privid 配置为0。

    作为实验、您可以为 privid 0配置防火墙阻止访问并从 DMA 启动事务。 这将导致 privid 0的防火墙异常、从而确认 DMA privid。

    此致、

    Prashant

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

    您好!

    好的、我像你建议的那样对它进行了测试、它成功阻止了帧接收。 再次感谢。