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.

[参考译文] SK-TDA4VM:通过在 A72上运行的 Linux 引导 MCU2_0

Guru**** 2538950 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1254765/sk-tda4vm-booting-mcu2_0-through-linux-running-on-a72

器件型号:SK-TDA4VM

您好!

我正在尝试使用从 A72内核运行的 Linux 为 MCU2_0内核加载 IPC 示例。 我已经为 IPC 示例自定义了存储器映射、增加了 MCU2_0内核的 DDR 大小、并尝试使用 Linux 进行加载。 我在 k3-j721e-rtos-memory-map.dtsi 文件中进行了所有必要的更改,我增加了内核内存区域大小,但仍然收到错误,请帮我解决。

我收到以下错误

Platform 5c00000.r5f:为 Remoteproc 模式配置 R5F

 remoteproc remoteproc 4:5c000.r5f 可用

remoteproc remoteproc 4:启动固件映像 j7-main-r5f0_0-fw、大小为530072

remoteproc remoteproc 4:错误的 phdr da 0xa2000000 mem 0x84c00

 Remoteproc remoteproc4:无法加载程序段:-22

此致、

苏里亚

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

    您好、Surya:

    [quote userid="526746" url="~/support/processors-group/processors/f/processors-forum/1254765/sk-tda4vm-booting-mcu2_0-through-linux-running-on-a72我正在尝试使用 A72内核运行的 Linux 为 MCU2_0内核加载 IPC 示例。 我已经为 IPC 示例自定义了存储器映射、增加了 MCU2_0内核的 DDR 大小、并尝试使用 Linux 进行加载。 我在 k3-j721e-rtos-memory-map.dtsi 文件中进行了所有必要的更改,我增加了核心内存区域大小,但仍然收到错误,请帮我解决这个问题[/报价]

    您能帮助我理解用于在 MCU2_0上加载示例的命令吗?

    您是否正在使用 vision_apps?

    您能否告诉我在  k3-j721e-rtos-memory-map.dtsi 中完成了哪些与内存相关的更改?

    此致、

    尼基尔

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

    您好、Surya:

    感谢您分享这些信息。

    但在这里、我想知道您所做的改变是什么吗? 我看到、VRING 地址和 MCU2_0代码区域的基地址和大小仍与 SDK 中的 vision_apps 相同。

    [quote userid="526746" url="~/support/processors-group/processors/f/processors-forum/1254765/sk-tda4vm-booting-mcu2_0-through-linux-running-on-a72我正在尝试使用 A72内核运行的 Linux 为 MCU2_0内核加载 IPC 示例。 我已经为 IPC 示例自定义了存储器映射、增加了 MCU2_0内核的 DDR 大小、并尝试使用 Linux进行加载

    您能告诉我上面提到的变化在哪里吗?

    此外、能否在不进行存储器映射定制的情况下运行 IPC 示例?

    此致、

    尼基尔

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

    尊敬的 Nikhil:

    视觉应用示例:

      /*针对 MCU2_0的 DDR 用于代码/数据[大小31.00MB ]*/
      DDR_MCU2_0        ( Rwix ): origin = 0xA2100400 , length = 0x01EFFC00
    自定义存储器更改:
      /*用于 MCU2_0的代码/数据 DDR [大小127.00 MB ]*/
      DDR_MCU2_0        ( Rwix ): origin = 0xA2100400 , length = 0x07EFFC00
    如果您观察上述行、我已经将 DDR_MCU2_0的大小增加到127MB、 在视觉应用示例中、它只有31MB、 这是我的定制中的主要更改。
    关于 IPC 示例、我 在没有进行任何存储器定制的情况下尝试了 IPC 示例、 它运行起来没有任何问题。 只有当我更改大小时、它才不起作用、这正是 我观察到的。
    此致、
    苏里亚
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    [报价用户识别="526746" URL="~/support/processors-group/processors/f/processors-forum/1254765/sk-tda4vm-booting-mcu2_0-through-linux-running-on-a72/4747885 #4747885"]
    /* Linux 资源表 MCU2_0的 DDR [大小1024 B ]*/
      DDR_MCU2_0_resource_table (Rwix):origin = 0xA2100000、length = 0x00000400
      /*针对 MCU2_0的 DDR 用于代码/数据[大小31.00MB ]*/
      DDR_MCU2_0        ( Rwix ): origin = 0xA2100400 , length = 0x01EFFC00
      /* IPC VRING 的内存。 必须为非缓存或缓存一致[ size 32.00 MB ]*/
      IPC_VLING_MEM           : origin = 0xAA000000 , length = 0x02000000
      //用于远程内核记录的内存[大小256.00 KB ]*/
      应用日志 MEM            : origin = 0xAC000000 , length = 0x00040000
    [/报价]

    因此、您已将 MCU2_0的代码区域从31MB 增加到127MB。 我想知道您为什么增加了这个区域?

    在上面附加的链接器文件中、您的 IPC_VLING_MEM 仍将0xAA000000作为基址、而在 Linux 文件中则不同。
    您也应该在此处进行相同的更改。

    您能否告诉我、您是仅在 MCU2_0上运行 IPC、还是也涉及其他内核(MCU2_1、C66、C7等)?

    此致、

    尼基尔

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

    尊敬的 Nikhil:

    抱歉、我之前共享了 Vision 示例文件、  

    这是我创建的自定义存储器映射文件、

    内存
    {
      /* R5F_TCMA_VECS [大小64 B ]*/
      R5F_TCMA_VECS       (  X ): origin = 0x00000000 , length = 0x00000040
      /* R5F_TCMA [大小31.94 KB ]*/
      R5F_TCMA         (  X ): origin = 0x00000040 , length = 0x00007FC0
      /* MCU2_0的主 OCRAM [大小256.00 KB ]*/
      MAIN_OCRAM_MCU2_0    ( RWIX ): origin = 0x03600000 , length = 0x00040000
      /* R5F_TCMB0 [大小32.00KB ]*/
      R5F_TCMB0         ( Rwix ): origin = 0x41010000 , length = 0x00008000
      /* Linux IPC MCU2_0的 DDR [大小1024.00KB ]*/
      DDR_MCU2_0_IPC      ( Rwix ): origin = 0xA2000000 , length = 0x00100000
      /* Linux 资源表 MCU2_0的 DDR [大小1024 B ]*/
      DDR_MCU2_0_resource_table (Rwix):origin = 0xA2100000、length = 0x00000400
      /*用于 MCU2_0代码/数据 DDR [大小127.00 MB ]*/
      DDR_MCU2_0        ( Rwix ): origin = 0xA2100400 , length = 0x07EFFC00
      /* IPC VRING 的内存。 必须为非缓存或缓存一致[ size 32.00 MB ]*/
      IPC_VLING_MEM           : origin = 0xAF000000 , length = 0x02000000
      /*用于 MCU2_0的 DDR 用于本地堆[大小16.00 MB ]*/
      DDR_MCU2_0_local_heap  ( RWIX ): origin = 0xB8000000 , length = 0x01000000
      /*内核以太网共享描述队列。 必须为非缓存或缓存一致[大小 8.00 MB ]*/
      INTERCORE_ETH_DESC_MEM       : origin = 0xC3000000 , length = 0x00800000
      /*内核以太网共享数据缓冲区。 必须为非缓存或缓存一致[ size 24.00MB ]*/
      INTERCORE_ETH_DATA_MEM       : origin = 0xC3800000 , length = 0x01800000
    我已经增加了代码区域、因为我的应用程序大小变大了、当我使用默认存储器映射进行编译时、我收到了编译器的错误、指出我的应用程序大小变大、因此我增加了代码存储器。
    目前、我仅单独运行 MCU2_0内核、而不运行 C66和 C7内核。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    在本例中、看起来是正确的。
    您的 IPC 示例是否基于来自 PDK 示例的 IPC 回声测试?

    如果需要、您能否再次确认传递给 Virtio IPC 模块初始化的 VRING_BASE_ADDRESS 是否也为0xAF000000?
    因为在基于 PDK 的示例中、我看到这个基地址采用了硬编码。

    此致、

    尼基尔