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.

[参考译文] 回复:Compiler/AM5728:IPC Memory setup

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/669489/re-compiler-am5728-ipc-memory-setup

我们可能不会、但下面是一个示例:

我们确定的调试问题是、在调试两个 DSP 时、SYS/BIOS 生成的 linker.cmd 文件都使用 EXT_RAM 来完成所有部分... 因此.text 等... 所有这些都位于同一个 EXT_RAM 中。

第一个问题:
1.如何通过 SYS/BIOS 将代码(.text)输入到 say L2 RAM 中? 还是其他部分? 我可以对自己的自定义创建段执行此操作、但默认段如.text .bss 等...
调用 IPC_Start()时失败,因为现在我手动将所有段放在 L2 RAM 中,用于一个 DSP,因此 IPC 没有“共享”RAM .... 因为我没有编写 IPC 模块... 由于 SYS/BIOS 没有创建两个单独的段、例如 DSP1的.text 和 DSP2的.text、我假设 IPC_START 中的共享段发生故障的原因、因为我将所有内容移动到一个 DSP 上的 L2存储器、因此它不会与 DSP 发生冲突... 但是、由于我不知道 SYS/BIOS 中的 IPC/共享存储器是如何设计的... 如何分配内存、以便在请求共享内存部分时 IPC_Start 不会失败? 需要共享哪个部分 我们如何确保每个 DSP 都具有适当的私有空间和共享空间?

第二个*。cmd 文件的想法很简单、允许我对 CMD 文件进行编程、而无需将任何自定义设置馈送到 SYS/BIOS 接口、以便它自动生成它... 这样、用户就可以将自定义设置放在单独的链接器命令文件中、并将其与 SYS/BIOS 分离。

谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    为上述内容添加更多内容? 我意识到您不知道每个人的需求、但"默认"应用程序生成是否应该创建两个能够处理每个 DSP 的独立 SYS/BIOS 配置?

    鉴于默认情况下会将其转储到相同的存储器空间中、我想我需要的是 SYS/BIOS 所需的信息... 原因通过快速修复将其移动到一个 DSP 上的 L2存储器可以解决冲突、但会导致尝试使用 IPC_Start 函数时发生冲突、因为它需要共享存储器... 由于我不知道它是如何工作的、哪些文档告诉我如何为多 DSP 情况配置内存? 例如:我可以看到冲突、但我应该如何以不会使需要共享存储器的其他模块崩溃的方式来纠正冲突?

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

    尊敬的 Rob:

    使用 IPC 时、您可以使用 config.bld 文件修改存储器映射、如下所示。 您需要将平台更改为 ti.platforms.evmDRA7XX:dsp1以支持此功能。

    VAR SR_0 ={
    名称:"SR_0"、空格:"data"、访问:"rw"、
    基地址:0x8E000000、len:0x1000000、
    注释:"SR#0存储器(16 MB)"
    };
    
    Build.platformTable["ti.platforms.evmDRA7XX:dsp1"]={
    externalMemoryMap:[
    ["DSP1_PROG"、{
    名称:"DSP1_PROG"、空格:"代码/数据"、访问:"rwx"、
    基地址:0x8C000000、len:0x1000000、
    注释:"DSP1程序内存(16 MB)"
    ]]、
    ["SR_0"、SR_0]
    ]、
    代码内存:"DSP1_PROG"、
    dataMemory:"DSP1_PROG"、
    stackMemory:"DSP1_PROG"、
    L1DMode:"32K"、
    L1PMode:"32K"、
    L2Mode:"128K"
    };
    
    Build.platformTable["ti.platforms.evmDRA7XX:dsp2"]={
    externalMemoryMap:[
    ["DSP2_PROG"、{
    名称:"DSP2_PROG"、空格:"代码/数据"、访问:"rwx"、
    基地址:0x8D000000、len:0x1000000、
    注释:"DSP2程序内存(16 MB)"
    ]]、
    ["SR_0"、SR_0]
    ]、
    代码内存:"DSP2_PROG"、
    dataMemory:"DSP2_PROG"、
    stackMemory:"DSP2_PROG"、
    L1DMode:"32K"、
    L1PMode:"32K"、
    l2Mode:"128K"
    }; 

    IPC_Start 需要共享区0 (SR_0)。 我建议使用我们的 MessageQ 示例作为参考、可以在 IPC\examples\DRA7XX_BIOS_elf\ex02_MessageQ 中找到它。 我们的 IPC 示例基于 makefile、但如果需要、我可以指导您将它们移植到 CCS。  

    如果您正在运行 Linux 的 ARM 和运行 RTOS (SYS/BIOS)的 DSP 之间使用或计划使用 IPC、请告知我们、因为这将需要一些额外的步骤。  

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

    非常感谢。

    1. 我假设我还需要制作 ti.platforms.evmDRA7XX:dsp2?  我假设我将为 SR_0分配相同的0x8e000000基地址并分配 DSP2_PROG 空间,例如0x8d000000?

    2. 您如何知道(根据文档) IPC 需要此共享区域?  我的意思是、我查看了代码、看到了一个需要共享区域的虚假区域的调用、 但是、如果我使用另一个模块、我如何知道如何创建 适当 的段、或者这是唯一需要自己共享段的模块?我如何知道如何将其称为 SR_0?  因为这是所需的存储器、 并附加到您的 IPC 代码中。

    我在示例中看不到任何内容、这些内容会显示您在此处所展示的创建共享段的内容。

    我正在查看您的 SYS/BIOS 或 spruex3t.pdf、 发现 只有一个提到.bld 文件。  我还对其进行了 google、并获取了以下链接:  

    如何指定在 code composer 中使用此特定的 config.bld 文件?

    它们是否 是基址选择背后与 SYS/BIOS 相关的任何逻辑、即:是否有任何特定于您选择的0x8c000000、例如对于 DSP1?

    是的、我将需要在 ARM 和 DSP 之间使用 IPC、而 ARM 运行 Linux、DSP 运行 SYS/BIOS。

    谢谢。

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

    由于 我们现在将深入探讨 IPC 主题、因此该主题已从该主题 e2e.ti.com/.../666472中分离出来。

    1.是的、没错。 所有内核都应使用相同的 config.bld、因此 DSP2不需要其他内核(请注意、它位于示例的共享文件夹中)。 只需将其添加到项目文件夹或在 Build Settings -> XDCtools -> Advanced Options -> Build configuration file 下指定
    这可在 IPC 用户指南或 CDOC processors.wiki.ti.com/.../SharedRegion_Module 中找到
    downloads.ti.com/.../_ipc_8h.html
    这些文档中有大量信息可供消化、因此很容易错过。

    除了对应于 DDR 中的某个段之外、没有任何特定的与选择0x8c000000相关的内容。

    我应该已经用不同的措辞来描述我之前答复的最后一句、如果你在 ARM Linux 和 DSP RTOS 之间使用 IPC、那么这实际上会改变一点、因为 ARM 将负责资源管理。 Remoteproc 将使用 Linux 上的 DTS 文件处理内存分配。 在 DSP 端、资源表用于通知 Remoteproc 有关 DSP 资源的信息。 本培训视频介绍了这一点 、training.ti.com/intro-to-ipc-for-keystone-and-sitara

    我建议查看我们的 DRA7XX_Linux_elF/ex02_MessageQ 示例、以帮助您快速入门。 这个 wiki 页面也是一个很好的资源 、processors.wiki.ti.com/.../Linux_IPC_on_AM57xx

    如果您有任何疑问或需要进一步澄清、请告知我们。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此外、我应该提到、在这种情况下、SharedRegion 不再使用。 对于 ARM Linux 至 DSP RTOS、应使用 CMA 或 CMEM。 本应用手册非常详细地解释了这一点、 www.ti.com/.../sprac60.pdf