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.

[参考译文] RTOS/AM5728:IPU STB 示例错误

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/679567/rtos-am5728-ipu-stb-example-error

器件型号:AM5728
主题中讨论的其他器件:TIDEP0074

工具/软件:TI-RTOS

大家好、我正在使用 AM572x 定制板。

我尝试构建一个由 TI 提供的 IPU STB 示例(tiSTB-MacFilter.tar.gz)、
但发生了错误、但未完成。

我认为 IPU STB 示例和 PDK 似乎不匹配。

ENV:
#### BIOS 端相关性####
BIOS_install_DIR =$(depot)/BIOS_6_46_01_38
IPC_INSTALL_DIR =$(返厂维修)/IPC_3_43_02_04
XDC_INSTALL_DIR =$(返厂维修)/xdctools_3_32_00_06_core
pdk_install_DIR =$(depot)/pdk_am57xx_1_0_4
pdk_install_path =$(depot)/pdk_am57xx_1_0_4/包

#### BIOS 端工具链####
TI.targets.arm.elf.M4 =$(depot)/ti-cgt-arm_16.12.0.STS
TI.targets.elf.c66 =$(depot)/ti-CGT-C6000_8.0.3


错误日志:

"ICSS_emacDrv.c"、第66行:致命错误:无法打开源文件"ti/drv/ICSS_EMAC/ICSS_emacDrv.h"

"pktProcEng.c"、第86行:致命错误:无法打开源文件"ti/drv/ICSS_EMAC/test/src/icSS_switch_emac.h"
"ICSS_emacDrv.c"、第525行:警告:无符号整数与零之间的无意义比较
"ICSS_emacDrv.c"、第1716行:错误:标识符"DMTIMER_SRC_CLK_FREQ"未定义
"ICSS_emacDrv.c"、第1719行:错误:标识符"DMTIMER4_ID"未定义

 

 

此致、

John Kim

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Kim:

    我不确定您在哪里收到了 IPU STB 示例。 您可以按照 STB 版本说明尝试使用默认 PDK 版本进行编译、然后转到具有 PDK 1.0.10的最新 PRSDK 4.3 software-dl.ti.com/.../index_FDS.html。

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

    您好、Garrett、

    我从 TI 主页收到了61850设计 PDF。

    有一个 IPU STB 示例。

    e2e.ti.com/.../AM572x_5F00_IEC61850Design.pdf

    PDF 标题:  

    TI Designs
    适用于 IEC61850的数据包处理引擎参考设计
    GOOSE 转发

    内容:

    5.8构建应用程序
    若要构建应用程序:
    1.从 git.ti.com/.../tidep0074克隆应用程序源代码
    $ git 克隆 git://git.ti.com/apps/tidep0074.git
    2.更新产品.mak
    3.$制作
    app_host 在 host/bin/release/下生成、在 dsp1/bin/release/下生成 server_dsp1.xe66
    在 ipu1/bin/release 下设置 SERVER_ipu1.xem4以进行测试。

    此致、

    John Kim

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

    此 TI 设计基于 Processor SDK 2.0.2 (software-dl.ti.com/.../index_FDS.html ),如果迁移到最新的 PRSDK,则可能会出现编译和链接问题。 您可以继续转到最新的 PRSDK 4.3、看看是否出现任何问题。 PDK 软件包\ti\drv\ICSS_EMAC\src\ICSS_emacDrv.c 中的一些 API 可能已更改、然后示例中的 ICSS_emacDrv.c 可能也需要相应更新。 您对该示例感兴趣的背景吗?

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

    Garrett、

    要在 ARM 中负责 IEC 61850协议栈、网络负载太大。
    因此、由负责从 IPU 进行61850过滤的 PRU 处理以太网数据包是有效的。

    我对 IPU STB 示例感兴趣、以应用 TI-RTOS HSR/PRP 解决方案。

     

    此致、
    John Kim

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

    Garrett、

    我尝试使用 PDK 2.02进行构建。
    构建正常运行、没有错误。

    但是,当您运行映像时,会出现以下错误:

    错误日志:

    e2e.ti.com/.../ipu1_2D00_error.txt

    e2e.ti.com/.../ipu1_2D00_error2.txt

     

     

    我有疑问。

    RSC_TABLE_vayu_IPC.h 的(L3_EMIF_SDRAM 0xA0000000)区域是哪个存储器区域?

    0xA0000000是 AM5728上的外部 DDR RAM 区域。

    #define L3_EMIF_SDRAM 0xA0000000
    #define IPU_EMIF_SDRAM 0x10000000


    TYPE_DEVMEM、
    IPU_EMIF_SDRAM、L3_EMIF_SDRAM、
    SZ_256M、0、0、"IPU_EMIF_SDRAM"、
    }、


    最好的雷加雷亚雷斯
    John Kim

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

    rsc_table_vayu_ipu.h 中的 L3_EMIF_SDRAM 0xA0000000区域如您所示- DDR3 RAM、并映射到虚拟地址0x10000000。
    您是否使用与 Processor SDK Linux 2.0.2相同的 Linux 内核、以及是否无法从 IPC 运行默认 ex02_MessageQ 示例?

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

    Garrett、

    在 IPC 示例中、它工作正常。
    但是、在 IPU STB 示例中、会发生错误。

    我可能认为 RSC_TABLE 存储器区域似乎存在问题。


    am572x-idk.dts
    ipu1_CMA_pool:ipu1_CMA@95800000{
    兼容="共享 dma-pool ";
    REG =<0x0 0x95800000 0x0 0x2000000>;//32M
    可重复使用;
    状态="正常";
    };
    cmem_block_mem_0:cmem_block_mem@a0000000{
    reg =<0x0 0xa0000000 0x0 0x0c000000>;
    无地图;
    状态="正常";
    };
    cmem_block_mem_1_ocmc3:cmem_block_mem@40500000{
    REG =<0x0 0x40500000 0x0 0x100000>;
    无地图;
    状态="正常";
    };


    rsc_table_vayu_ipu.h
    /* IPU 内存映射*/
    #define L4_DRA7XX_BASE 0x4A000000

    /* L4_CFG 和 L4_WKUP */
    #define L4_PERIODIFY_L4CFG (L4_DRA7XX_BASE)
    #define IPU_Peripheral_L4CFG 0x6A000000
    #define L4_PERFICE_L4PER1 0x48000000
    #define IPU_PERIPU_ L4PER1 0x68000000
    #define L4_PERFICE_L4PER2 0x48400000
    #define IPU_PERIPU_ L4PER2 0x68400000
    #define L4_PERFICE_L4PER3 0x48800000
    #define IPU_PERIPU_ L4PER3 0x68800000
    #define L4_PERFICE_L4EMU 0x54000000
    #define IPU_Peripheral_L4EMU 0x74000000

    #define L3_PERBIASE_PRUSS 0x4B200000
    #define IPU_PERIPS_PRUSS 0x6B200000
    #define L3_peripheral_DMM 0x4E000000
    #define IPU_PERIPHERAL_DMM 0x6E000000

    #define L3_IVAHD_CONFIG 0x5A000000
    #define IPU_IVAHD_CONFIG 0x7A000000
    #define L3_IVAHD_SL2 0x5B000000
    #define IPU_IVAHD_SL2 0x7B000000

    #define L3_TILER_MODE_0_1 0x60000000
    #define IPU_TILER_MODE_0_1 0xA0000000
    #define L3_TILER_MODE_2 0x70000000
    #define IPU_TILER_MODE_2 0xB0000000
    #define L3_tiler_mode_3 0x78000000
    #define IPU_tiler_mode_3 0xB8000000

    #define L3_OCMC_RAM 0x40300000
    #define IPU_OCMC_RAM 0x60300000

    #define L3_EMIF_SDRAM 0xA0000000
    #define IPU_EMIF_SDRAM 0x10000000

    #define IPU_MEM_TEXT 0x0
    #define IPU_MEM_DATA 0x8000000
    #define IPU_MEM_IOBUFS 0x90000000

    #define IPU_MEM_IPC_DATA 0x9F000000
    #define IPU_MEM_IPC_VRING 0x60000000
    #define IPU_MEM_RPMSG_VRING0 0x60000000
    #define IPU_MEM_RPMSG_VRING1 0x60004000
    #define IPU_MEM_VING_BUFS0 0x60040000
    #define IPU_MEM_VING_BUFS1 0x60080000

    #define IPU_CMEM_IOBUFS 0x85000000 //=> DSP 存储器部分的虚拟地址
    #define CMEM_PHY_IOBUFS 0xA0000000 //=> CMEM (共享)存储器部分的物理地址
    #define IPU_CMEM_IOBUFS_SIZE (SZ_1M * 70)//=> CMEM 段的大小
    #define IPU_MEM_IOBUFS_SIZE (SZ_1M * 90)
    #define IPU_MEM_DATA_SIZE (SZ_1M * 5)
    #define PHYS_MEM_IPC_VRING 0x95800000
    #define PHYS_MEM_IOBUFS 0xBA300000

    /* rpmsg vdev 条目*/

    TYPE_VDEV、virtio_ID_RPMSG、0、
    RPMSG_IPU_C0_features、0、0、0、2、 {0、0}、
    /*无配置数据*/
    }、
    /*两个振铃*/
    {IPU_MEM_RPMSG_VRING0、4096、IPU_RPMSG_VQ0_SIZE、1、0}、
    {IPU_MEM_RPMSG_VRING1、4096、IPU_RPMSG_VQ1_SIZE、2、0}、

    TYPE_CARVEOUT、
    IPU_MEM_TEXT、0、
    IPU_MEM_TEXT_SIZE、0、0、"IPU_MEM_TEX"、
    }、

    TYPE_CARVEOUT、
    IPU_MEM_DATA、0、
    IPU_MEM_DATA_SIZE、0、0、"IPU_MEM_DATA"、
    }、

    TYPE_CARVEOUT、
    IPU_MEM_IPC_DATA、0、
    IPU_MEM_IPC_DATA_SIZE、0、0、"IPU_MEM_IPC_DATA"、
    }、

    TYPE_TRACE、TRACEBUFADDR、0x8000、0、"TRACE:SYSM3"、
    }、

    TYPE_DEVMEM、
    IPU_MEM_IPC_VRING、PHY_MEM_IPC_VRING、
    IPU_MEM_IPC_VING_SIZE、0、0、"IPU_MEM_IPC_VRINing"、
    }、

    TYPE_DEVMEM、
    IPU_MEM_IOBUFS、PHY_MEM_IOBUFS、
    IPU_MEM_IOBUFS_SIZE、0、0、"IPU_MEM_IOBUFS"、
    }、

    TYPE_DEVMEM、
    IPU_tiler_mode_0_1、L3_tiler_mode_0_1、
    SZ_256M、0、0、"IPU_tiler_mode_0_1"、
    }、

    TYPE_DEVMEM、
    IPU_tiler_mode_2、L3_tiler_mode_2、
    SZ_128M、0、0、"IPU_tiler_mode_2"、
    }、

    TYPE_DEVMEM、
    IPU_tiler_mode_3、L3_tiler_mode_3、
    SZ_128M、0、0、"IPU_tiler_mode_3"、
    }、

    TYPE_DEVMEM、
    IPU_Peripheral_L4CFG、L4_Peripheral_L4CFG、
    SZ_16M、0、0、"IPU_PERIPS_L4CFG"、
    }、

    TYPE_DEVMEM、
    IPU_PERIPS_L4PER1、L4_PERIPS_L4PER1、
    SZ_2M、0、0、"IPU_PERIPS_L4PER1"、
    }、

    TYPE_DEVMEM、
    IPU_PERIPS_L4PER2、L4_PERIPS_L4PER2、
    SZ_4M、0、0、"IPU_PERIPS_L4PER2"、
    }、

    TYPE_DEVMEM、
    IPU_PERIPS_L4PER3、L4_PERIPS_L4PER3、
    SZ_8M、0、0、"IPU_PERIPS_L4PER3"、
    }、

    TYPE_DEVMEM、
    IPU_Peripheral_L4EMU、L4_Peripheral_L4EMU、
    SZ_16M、0、0、"IPU_PERIPS_L4EMU"、
    }、

    TYPE_DEVMEM、
    IPU_PERIPS_PRUSS、L3_PERIPS_PRUSS、
    SZ_1M、0、0、"IPU_PERIPS_PRUSS"、
    }、

    TYPE_DEVMEM、
    IPU_IVAHD_CONFIG、L3_IVAHD_CONFIG、
    SZ_16M、0、0、"IPU_IVAHD_CONFIG"、
    }、

    TYPE_DEVMEM、
    IPU_IVAHD_SL2、L3_IVAHD_SL2、
    SZ_16M、0、0、"IPU_IVAHD_SL2"、
    }、

    TYPE_DEVMEM、
    IPU_Peripheral_DMM、L3_Peripheral_DMM、
    SZ_1M、0、0、"IPU_PERIPS_DMM"、
    }、

    TYPE_DEVMEM、
    IPU_OCMC_RAM、L3_OCMC_RAM、
    SZ_4M、0、0、"IPU_OCMC_RAM"、
    }、

    TYPE_DEVMEM、
    IPU_CMEM_IOBUFS、CMEM_PHYS_IOBUFS、
    IPU_CMEM_IOBUFS_SIZE、0、0、"IPU_CMEM_IOBUFS"、
    }、

    此致、
    John Kim

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

    John、

    为什么必须更新 DTS 和 RSC 表而不使用示例工程中的默认表? 您的.cfg 文件中也有'Resource.customTable = true;'?

    此致、
    Garrett

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

    Garrett、

    在 IPU STB 示例中、默认设置为资源自定义表= true。

    "/*启用在 BIOS 资源表上运行的内存转换模块*/
    VAR Resource = xdc.useModule ("ti.ipc.remoteproc.Resource");
    resource.customTable = true;"

    我不使用默认设置的原因、例如、
    1.我无法为 IPU 分配256 MB 的 DDR 内存。 (256MB 太大)
    2.我将使用 CMEM 的存储器区域。

     

    此致、

    John Kim

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

    您可以在 AM572x IDK 上执行原始项目、并仅修改 CMA 和 CMEM 大小、以查看其是否仍然崩溃、然后移植到您的定制板。 该应用程序实际上不使用256MB 的大内存,因此它可以让您毫无问题地将内存减少到32MB。 CMEM 始终用于应用。 在 DTS 中更新大小(而不是地址)后、请确保重建并使用新的.dtb。

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

    Garrett、

    感谢你的答复。

    我尝试更改内存区域。  IPU STB 示例是默认设置。

    在 Linux 分配的 CMEM 区域中、IPU 使用以太网数据包区域。

    CMEM 区域

    cmem_block_mem_0:cmem_block_mem@a0000000{
    reg =<0x0 0xa0000000 0x0 0x0c000000>;
    无地图;
    状态="正常";
    };

    IPU1资源表


    TYPE_DEVMEM、
    IPU_EMIF_SDRAM、L3_EMIF_SDRAM、
    SZ_32M、0、0、"IPU_EMIF_SDRAM"、
    }、

     

    3.错误日志

    e2e.ti.com/.../IPUSTBEX_5F00_ERR.log

     

     

    此致、

    John Kim

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

    这是 PLSDK 2.0.2中的 Linux 内核吗? 您可以尝试从 Server_exec()中注释 ICSS_TX()和 ICSS_Rx(),以检查地址是否正确:

    pRxPkt0 =(uint32 *)(msg->RxPhysAddr[test_port][0]+ VIRT1);
    pRxPkt1 =(uint32 *)(msg->RxPhysAddr[test_port][1]+ VIRT1);

    这些地址从 Linux CMEM 分配并通过 IPC 传输到 IPU。

    请注意、pRxPkt0/1地址是转换+VIRT1的虚拟地址、定义为

    #define VIRT1 (-0x90000000U)/* PA 0xA0000000<->VA 0x10000000,请参阅 RSC 表*/

    从而与您的配合使用
    #define IPU_CMEM_IOBUFS 0x85000000 //=> DSP 存储器部分的虚拟地址
    #define CMEM_PHY_IOBUFS 0xA0000000 //=> CMEM (共享)存储器部分的物理地址
    需要相应地重新定义 VIRT1。

    如果 pRxPkt0/1设置正确、那么您可能需要深入到 ICSS_TX ()和 ICSS_Rx ()中尝试缩小异常发生位置的范围。

    此致、
    Garrett