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.

C6638 ARM0加载DSP报错



TI工程师你们好,在使用C6638处理器加载DSP代码时出现如下问题:

         官网提供的代码目录如下:C:\ti\mcsdk_bios_3_00_03_15\demos\image_processing\ipc编译出来的.out文件大小为         5.221M    下载启动完成:

          root@keystone-evm:~# cat /sys/kernel/debug/remoteproc/remoteproc0/
           name recovery state trace0 

     tarce0文件是存在

       在使用我们自己工程编译出来的.out文件大小为9.731M,使用ARM0核加载.out文件时发现报错

          load failed  (error: -104)

          root@keystone-evm:~# vi /sys/kernel/debug/remoteproc/remoteproc0/

          name recovery state

      tarce0文件不存在

加载方式如下:

   

export SLAVE_DIR=/usr/share/matrix-gui-2.0/apps/demo_imageproc/bin

mpmcl reset dsp0
mpmcl reset dsp1
mpmcl reset dsp2
mpmcl reset dsp3
mpmcl reset dsp4
mpmcl reset dsp5
mpmcl reset dsp6
mpmcl reset dsp7
mpmcl load dsp0 ./image_processing_evmtci6638k2k_slave.out
#mpmcl load dsp0 $SLAVE_DIR/image_processing_evmtci6638k2k_slave.out
mpmcl load dsp1 $SLAVE_DIR/image_processing_evmtci6638k2k_slave.out
mpmcl load dsp2 $SLAVE_DIR/image_processing_evmtci6638k2k_slave.out
mpmcl load dsp3 $SLAVE_DIR/image_processing_evmtci6638k2k_slave.out
mpmcl load dsp4 $SLAVE_DIR/image_processing_evmtci6638k2k_slave.out
mpmcl load dsp5 $SLAVE_DIR/image_processing_evmtci6638k2k_slave.out
mpmcl load dsp6 $SLAVE_DIR/image_processing_evmtci6638k2k_slave.out
mpmcl load dsp7 $SLAVE_DIR/image_processing_evmtci6638k2k_slave.out
mpmcl run dsp0
mpmcl run dsp1
mpmcl run dsp2
mpmcl run dsp3
mpmcl run dsp4
mpmcl run dsp5
mpmcl run dsp6
mpmcl run dsp7

请问使用这中方式加载.out文件,对文件大小有要求吗。还是需要在工程中编译.out文件时在工程中需要做什么设置,才能使用这中加载方式加载DSP代码。

  • 请问您自己的工程也是基于IPC通信的吗?
  • 会不会是这个.out用的memory和现有的冲突了?
  • 首先感谢美女工程师在这段时间给我的帮助:
    问题我可能找到了,但是目前不知道如何修改,请指教,
    首先我研究了官网给的工程编译出来的.out 的image_processing_evmtci6638k2k_slave.map发现如下分配:
    OUTPUT FILE NAME: <image_processing_evmtci6638k2k_slave.out>
    ENTRY POINT SYMBOL: "_c_int00" address: 008a7c00
    MEMORY CONFIGURATION
    name origin length used unused attr fill
    ---------------------- -------- --------- -------- -------- ---- --------
    L2SRAM 00800000 00100000 000a8022 00057fde RW X
    MSMCSRAM 0c000000 00600000 00000000 00600000 RW X
    DDR3 80000000 80000000 08000000 78000000 RWIX
    SEGMENT ALLOCATION MAP
    run origin load origin length init length attrs members
    ---------- ----------- ---------- ----------- ----- -------
    00800000 00800000 00089608 000000f0 rw-
    00800000 00800000 000000f0 000000f0 rw- .resource_table
    008000f0 008000f0 00089518 00000000 rw- .far
    00889610 00889610 00000010 00000010 r--
    00889610 00889610 00000010 00000010 r-- .const.1
    00889620 00889620 0001c442 0001c442 r-x
    00889620 00889620 00017a00 00017a00 r-x .text
    008a1020 008a1020 00004a42 00004a42 r-- .const.2
    008a5a68 008a5a68 00001000 00000000 rw-
    008a5a68 008a5a68 00001000 00000000 rw- .stack
    008a6a70 008a6a70 00000afc 00000afc rw-
    008a6a70 008a6a70 00000afc 00000afc rw- .fardata
    008a7570 008a7570 00000120 00000000 rw-
    008a7570 008a7570 00000120 00000000 rw- .cio
    008a7690 008a7690 00000008 00000008 rw-
    008a7690 008a7690 00000008 00000008 rw- .neardata
    008a7698 008a7698 00000008 00000008 r--
    008a7698 008a7698 00000008 00000008 r-- .rodata
    008a7800 008a7800 00000200 00000200 r-x
    008a7800 008a7800 00000200 00000200 r-x .vecs
    008a7c00 008a7c00 0000079c 0000079c r-x
    008a7c00 008a7c00 000000a0 000000a0 r-x .text:_c_int00
    008a7ca0 008a7ca0 000006fc 000006fc r-- .cinit
    a1000000 a1000000 08000000 00000000 rw-
    a1000000 a1000000 08000000 00000000 rw- ddr_heap

    对应的C6638ARM的k2h2.dtsi配置如下:

    dsp0: dsp0 {
    compatible = "linux,rproc-user";
    mem = <0x10e00000 0x00008000
    0x10f00000 0x00008000
    0x10800000 0x00100000>;
    reg = <0x02620040 4
    0x0235083c 4
    0x02350a3c 4
    0x02620240 4>;
    reg-names = "boot-address", "psc-mdstat", "psc-mdctl",
    "ipcgr";
    interrupt-parent = <&ipcirq0>;
    interrupts = <8 0 0 0>;
    kick-gpio = <&ipcgpio0 27 0>;
    clocks = <&clkgem0>;
    label = "dsp0";
    };

    DSP1到DSP7设置

    dspmem: dspmem {
    compatible = "linux,rproc-user";
    mem = <0x0c000000 0x000600000
    0xa0000000 0x20000000>;
    label = "dspmem";
    };
    而我们的.map分布如下c6638_core0.map
    OUTPUT FILE NAME: <SelfTest_c6638_core0.out>
    ENTRY POINT SYMBOL: "_c_int00" address: 80061dc0


    MEMORY CONFIGURATION

    name origin length used unused attr fill
    ---------------------- -------- --------- -------- -------- ---- --------
    L2SRAM_A 00800000 00010000 00000080 0000ff80 RW X
    L1PSRAM 00e00000 00008000 00000000 00008000 RW X
    L1DSRAM 00f00000 00008000 00000000 00008000 RW
    MSMCSRAM_DP 0c000000 00040000 000203c4 0001fc3c RW
    MSM_HYPMESSAGE 0c040000 00024000 00021240 00002dc0 RW X
    MSMCSRAM_FPGA 0c064000 00554000 00168f00 003eb100 RWIX
    MSMCSRAM_PHY_NR 0c5b8000 00028000 00000000 00028000 RWIX
    MSMCSRAM_HC 0c5e0000 00020000 00006901 000196ff RW X
    L2SRAM 10800000 000e0000 0004b0b2 00094f4e RWIX
    L2_FPGA_PRACH_DATA 12800000 00001f00 00001dd0 00000130 RWIX
    DDR3_CODE0 80000000 00250000 00074946 001db6ba RW X
    DDR3_CODE1 80250000 001b0000 00000000 001b0000 RW X
    DDR3_CODE2 80400000 00200000 00000000 00200000 RW X
    DDR3_CODE3 80600000 00200000 00000000 00200000 RW X
    DDR3_CODE4 80800000 00200000 00000000 00200000 RW X
    DDR3_CODE5 80a00000 00200000 00000000 00200000 RW X
    DDR3_CODE6 80c00000 00200000 00000000 00200000 RW X
    DDR3_CODE7 80e00000 00200000 00000000 00200000 RW X
    DDR3_APP_CORE0 81000000 04000000 000211f0 03fdee10 RWIX
    DDR3_APP_CORE1 85000000 04000000 00000000 04000000 RWIX
    DDR3_APP_CORE2 89000000 01000000 00000000 01000000 RWIX
    DDR3_APP_CORE3 8a000000 01000000 00000000 01000000 RWIX
    DDR3_APP_CORE4 8b000000 01000000 00000000 01000000 RWIX
    DDR3_APP_CORE5 8c000000 01000000 00000000 01000000 RWIX
    DDR3_APP_CORE6 8d000000 01000000 00000000 01000000 RWIX
    DDR3_APP_CORE7 8e000000 01000000 00000000 01000000 RWIX
    DDR3_SYS 8f000000 00400000 00000800 003ff800 RW
    DDR3_HYPLNKDATA 8f400000 00400000 00000000 00400000 RW
    DDR3_SRIO_MSG 8f800000 00168000 00000000 00168000 RWIX
    DDR3_SRIO_INIT_FLAG 8f968000 00000020 00000000 00000020 RWIX
    DDR3_SRIO_CELL_STATUS 8f968020 00000400 00000000 00000400 RWIX
    DDR3_PCIE_DSP_START a0000000 00004000 00002240 00001dc0 RWIX
    DDR3_DRV_NORM a0004000 03ffc000 00000000 03ffc000 RWIX
    DDR3_FPGA_DATA a4000000 02000000 00e19630 011e69d0 RWIX
    DDR3_AIF_DATA a6000000 01000000 00000004 00fffffc RWIX


    SEGMENT ALLOCATION MAP

    run origin load origin length init length attrs members
    ---------- ----------- ---------- ----------- ----- -------
    00800000 00800000 00000080 00000000 rw-
    00800000 00800000 00000080 00000000 rw- .L2_startflag
    0c020000 0c020000 000003c4 000003c4 rw-
    0c020000 0c020000 00000340 00000340 rw- .hyplnk_msm
    0c020340 0c020340 00000084 00000084 rw- .sharedFlag
    0c040000 0c040000 00021240 00000000 rw-
    0c040000 0c040000 00021240 00000000 rw- .hypmessage
    0c064000 0c064000 00168f00 00000000 rw-
    0c064000 0c064000 00168f00 00000000 rw- .msmc_fpga
    0c5e0000 0c5e0000 00005d01 00005d01 rw-
    0c5e0000 0c5e0000 00005d01 00005d01 rw- .qmss
    0c5e5d80 0c5e5d80 00000c00 00000000 rw-
    0c5e5d80 0c5e5d80 00000c00 00000000 rw- .cppi
    10800000 10800000 00043650 00023410 rw-
    10800000 10800000 00023410 00023410 rw- .far
    10823410 10823410 00020240 00000000 rw- .systemHeap
    10843650 10843650 00004582 00004582 rw-
    10843650 10843650 00004582 00004582 rw- .fardata
    10847bd8 10847bd8 00002800 00000000 rw-
    10847bd8 10847bd8 00002800 00000000 rw- .stack
    1084a3d8 1084a3d8 00000410 00000410 r--
    1084a3d8 1084a3d8 00000410 00000410 r-- .switch
    1084a7e8 1084a7e8 000003a4 000003a4 rw-
    1084a7e8 1084a7e8 00000114 00000114 rw- .bss
    1084a8fc 1084a8fc 00000290 00000290 rw- .neardata
    1084ab8c 1084ab8c 0000000c 0000000c r--
    1084ab8c 1084ab8c 0000000c 0000000c r-- .rodata
    1084ac00 1084ac00 00000200 00000200 r-x
    1084ac00 1084ac00 00000200 00000200 r-x .csl_vect
    1084ae00 1084ae00 00000120 00000000 rw-
    1084ae00 1084ae00 00000120 00000000 rw- .cio
    1084b000 1084b000 00000200 00000200 r-x
    1084b000 1084b000 00000200 00000200 r-x .vecs
    12800000 12800000 00001dd0 00000000 rw-
    12800000 12800000 00001dd0 00000000 rw- .l2_prach_fgpa
    80000000 80000000 00071f96 00071f96 r-x
    80000000 80000000 000684a0 000684a0 r-x .text
    800684a0 800684a0 00009af6 00009af6 r-- .const
    80071f98 80071f98 000029b0 000029b0 r--
    80071f98 80071f98 000029b0 000029b0 r-- .cinit
    81000000 81000000 00014ed0 00000000 rw-
    81000000 81000000 00014ed0 00000000 rw- .DEBUG_LOG.1
    81014f00 81014f00 0000c320 00000000 rw-
    81014f00 81014f00 00000320 00000000 rw- .DEBUG_LOG.2
    81015220 81015220 0000c000 00000000 rw- .appHeap
    8f000000 8f000000 00000800 00000000 rw-
    8f000000 8f000000 00000800 00000000 rw- .dpError
    a0000000 a0000000 00002240 00000000 rw-
    a0000000 a0000000 00002240 00000000 rw- .ddr_Pcie_dspInit
    a4000000 a4000000 00e19630 00000000 rw-
    a4000000 a4000000 00e19630 00000000 rw- .ddr3_fpga
    a6000000 a6000000 00000004 00000004 rw-
    a6000000 a6000000 00000004 00000004 rw- .appSyncSharedMem

    本人对k2h2.dtsi配置文件只是停留在简单的能看懂层面,如何将自己的.map设置添加到k2h2.dtsi中,求指教。
  • 谢谢工程师的回复,问题好像找到了,目前存在的问题是如何将自己的.MAP分配的东西添加到k2h2.dtsi配置文件,具体内容参考给美女工程师的回复,本人虽对DSP工程和linux内核都熟悉,但是对K2H2.dtsi文件如何修改成与自己产品对应的.map还是比较吃力,求指教。
  • 你好,如何建立一个IPC通信的工程有说明文档吗,目前我们用的DSP核间通信都使用的是messageQ的通信机制。
  • mpmcl load dsp0 ./image_processing_evmtci6638k2k_slave.out 如何查看执行完此命令成后具体的错误信息显示