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/processor-SDK-OMAPL138:无法使用 remoteproc.0从 Linux 加载 DSP 固件、因为 DSP 在 IRAM 中包含部分存储器

Guru**** 2538950 points
Other Parts Discussed in Thread: OMAP-L138

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/761983/linux-processor-sdk-omapl138-unable-to-load-dsp-firmware-from-linux-using-remoteproc-0-because-dsp-contains-partial-memory-in-iram

器件型号:PROCESSOR-SDK-OMAPL138
主题中讨论的其他器件:OMAP-L138

工具/软件:Linux

在 DSP 上使用 TI-PROCESSORSDK-RTOS 05.00.15、在 ARM 上使用 TI-PROCESSOR-SDK-LINUX-05.00.15。

使用 OMAP-L138为我们的定制板开发了定制固件、它基于 LCDK 板、但它没有用于视频等的多个芯片、我正在使用定制编解码器。

如果我只连接并加载默认的 ARM GEL 文件、然后启动 DSP 代码、我将使固件直接加载到 DSP 中。

我无法使用 Linux 执行此操作、已附加资源表文件、已加载所有正确的 IPC 模块。

每当我使用#pragma 并 使用 app.cfg 文件或使用 CONFIG-Bld 文件将段指定为 IRAM (L2 RAM)中的任何存储器时、都会发生这种情况

Build.platformTable["ti.platforms.evmOMAPL138:dsp"]={
externalMemoryMap:[
["DDR"、{
名称:"DDR"、空格:"代码/数据"、访问:"rwx"、
基地址:0xC3100000、len:0x800000、
注释:"DSP 程序存储器(8 MB)"
}
]、
代码内存:"DDR"、
数据存储器:"DDR"、
stackMemory:"DDR"、
L1DMode:"32K"、
L1PMode:"32K"、
L2Mode:"0K"
}; 

如果我将任一内存指定为不在 DDR 中、则 Linux 中的 Remoteproc 将无法加载固件。

但是、由于驱动程序及其通过 McASP 和 EDMA 与编解码器进行通信、我的数据存储器必须位于 IRAM 中。

那么、如何在初始加载到其他相应存储器后从 DDR 加载存储器。 我尝试四处搜索、但找不到任何东西。

注意:如果我启动 Linux 并使其运行、那么我可以使用 JTAG 使用我的原始设置将 DSP 固件加载到 DSP 内核中、并且工作正常。

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

    您使用的是定制板还是 LCDK?

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉、我看到您已经指出了这一点。 这一点正在研究中。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果我只连接并加载默认的 ARM GEL 文件、然后启动 DSP 代码、我将使固件直接加载到 DSP 中。 

    您说过您可以这样加载 DSP 应用吗? 加载 ARM GEL 文件意味着您在 ARM 上运行 RTOS。 如果是这种情况、则与在 ARM 上运行 Linux 不同。

    请参阅 http://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/linux/Foundational_Components_IPC.html#ipc-for-am57xx 、了解在 ARM 上运行 Linux 时如何定制 DSP 代码。

    要使用 Remoteproc,还需要有资源表,您可以在 http://processors.wiki.ti.com/index.php/IPC_Resource_customTable 中找到更多信息 。 DSP 存储器映射不起作用。

    您可以在 TI EVM 的发布包中的 Linux 文件系统中尝试使用 TI IPC 示例 ex02_MessageQ、并了解其工作原理。

    希望这些信息能解答您的问题。

    雷克斯

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

    Rex、我实际上已经尝试了所有这些。 MessageQ 应用程序加载正常、并且工作正常。 随处理器 SDK Linux 提供的 IPC 示例可以正常工作。 我的问题是如何从 SYS/BIOS 内将内容映射到 OMAP-L138的 L2RAM/IRAM 中并通过 Remoteproc 加载、因为如果我将内容映射到 DDR 之外的内容、那么 Remoteproc 只会为该特定内存区域抛出错误。

    下面是工作内容:

    1.我可以通过运行 Linux 的 JTAG 将 DSP 代码直接加载到芯片中,这样可以正常工作。

    2.如果在 DDR 中完成了所有存储器映射、我只能使用 remoteproc 将 DSP 代码加载到芯片中、如 config.bld 示例、我在原始帖子中放置。

    我想知道我如何将代码映射到 DDR 以外的位置、并让 Linux 能够使用 Remoteproc 加载固件

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

    您是否已尝试按照 software-dl.ti.com/.../Foundational_Components_IPC.html 中"更改 DSP 存储器映射"中的指令进行操作

    雷克斯