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.

test IPC.MessageQ using image_processing demo



I am a newcomer of SYS/BIOS and BIOS configuration. And I am doing a test based on IPC.MessageQ module using ti-provided demo source code under the MCSDK directory "C:\ti\mcsdk_bios_3_00_03_15\demos\image_processing\ipc". It can be recompiled and loaded into my target successfuly, and it can run through the main() function, but it can't run into the task functions named "slave_main" and "DDR_MEM_MGMT"--it can't stop at the breakpoints at the beginning of the task functions.

When I comment out the directive below in the BIOS configuration file, It can run into the task functions mentioned above.
//BIOS.addUserStartupFunction('&IpcMgr_ipcStartup');
So I guess there could be something wrong with it, but I have no idea how to deal with it.

Could you tell me what's wrong with my test, whether I missed some configuration?

Test environment:
  () target: EVMK2H Rev40
  () emulator: onBoard Emulator
  () host: XP and CCS5.5
  () sdk: mcsdk_3_00_03_15, bios_6_35_04_50, xdctools_3_25_03_72, ipc_3_00_04_29

Thanks for any response in advance.

  • Hi,

    I have assigned this thread to IPC experts to look into. If you are in the beginning of your development, then we would recommend you to start development with latest Processor SDK released for K2H. Please find the download and migration guide link below my signature.

    Thank you.

  • Hi Xin li3,

    Are you able to run the pre-built Image processing demo from TI rootfs ?

    If you want to run the image processing demo in Keystone-2 then you need to run the Linux on ARM core and MPM would load the slave code on DSP core for image processing.

    You need to run the matrix browser and you can find IPC demo and image processing processing apps.

    Please refer to the following TI wiki page.

    processors.wiki.ti.com/.../MCSDK_UG_Chapter_Getting_Started

    processors.wiki.ti.com/.../MCSDK_Image_Processing_Demonstration_Guide

    processors.wiki.ti.com/.../IPC_FAQ_for_Keystone_Devices
  • Hi Shankari G,

    I tried to run the pre-built image processing demo from TI rootfs. but it doesn't work normally.

    note: I didn't run the matrix browser because I think it is a little complex for a newcomer and we won't use it in my actual project.

    The following is what I did on my EVM:

    1. Load and start dsp slaves as followings, it seems work fine.

    root@keystone-evm:/usr/share/matrix-gui-2.0/apps/demo_imageproc# ./run_dsp.sh

    [ 2111.660021] rpmsg_proto rpmsg8: deleting rpmsg src: 1024, dst: 61

    [ 2111.665080]  remoteproc0: stopped remote processor 2620040.dsp0

    reset succeeded

    [ 2111.703738] rpmsg_proto rpmsg9: deleting rpmsg src: 1024, dst: 61

    [ 2111.708820]  remoteproc1: stopped remote processor 2620044.dsp1

    reset succeeded

    [ 2111.745860] rpmsg_proto rpmsg10: deleting rpmsg src: 1024, dst: 61

    [ 2111.751011]  remoteproc2: stopped remote processor 2620048.dsp2

    reset succeeded

    [ 2111.788852] rpmsg_proto rpmsg11: deleting rpmsg src: 1024, dst: 61

    [ 2111.794002]  remoteproc3: stopped remote processor 262004c.dsp3

    reset succeeded

    [ 2111.832643] rpmsg_proto rpmsg12: deleting rpmsg src: 1024, dst: 61

    [ 2111.837807]  remoteproc4: stopped remote processor 2620050.dsp4

    reset succeeded

    [ 2111.875715] rpmsg_proto rpmsg13: deleting rpmsg src: 1024, dst: 61

    [ 2111.880875]  remoteproc5: stopped remote processor 2620054.dsp5

    reset succeeded

    [ 2111.918589] rpmsg_proto rpmsg14: deleting rpmsg src: 1024, dst: 61

    [ 2111.923748]  remoteproc6: stopped remote processor 2620058.dsp6

    reset succeeded

    [ 2111.961689] rpmsg_proto rpmsg15: deleting rpmsg src: 1024, dst: 61

    [ 2111.966901]  remoteproc7: stopped remote processor 262005c.dsp7

    reset succeeded

    load succeeded

    load succeeded

    load succeeded

    load succeeded

    load succeeded

    load succeeded

    load succeeded

    load succeeded

    [ 2113.849104]  remoteproc0: powering up 2620040.dsp0

    [ 2113.854344] virtio_rpmsg_bus virtio0: rpmsg host is online

    [ 2113.858837]  remoteproc0: registered virtio0 (type 7)

    [ 2113.870845] virtio_rpmsg_bus virtio0: creating channel rpmsg-proto addr 0x3d

    [ 2113.876703] rpmsg_proto rpmsg16: inserting rpmsg src: 1024, dst: 61

    run succeeded

    [ 2113.897332]  remoteproc1: powering up 2620044.dsp1

    [ 2113.902435] virtio_rpmsg_bus virtio1: rpmsg host is online

    [ 2113.907047]  remoteproc1: registered virtio1 (type 7)

    [ 2113.919089] virtio_rpmsg_bus virtio1: creating channel rpmsg-proto addr 0x3d

    [ 2113.924931] rpmsg_proto rpmsg17: inserting rpmsg src: 1024, dst: 61

    run succeeded

    [ 2113.949410]  remoteproc2: powering up 2620048.dsp2

    [ 2113.955292] virtio_rpmsg_bus virtio2: rpmsg host is online

    [ 2113.959909]  remoteproc2: registered virtio2 (type 7)

    [ 2113.971313] virtio_rpmsg_bus virtio2: creating channel rpmsg-proto addr 0x3d

    [ 2113.977210] rpmsg_proto rpmsg18: inserting rpmsg src: 1024, dst: 61

    run succeeded

    [ 2114.001977]  remoteproc3: powering up 262004c.dsp3

    [ 2114.006952] virtio_rpmsg_bus virtio3: rpmsg host is online

    [ 2114.011454]  remoteproc3: registered virtio3 (type 7)

    [ 2114.023736] virtio_rpmsg_bus virtio3: creating channel rpmsg-proto addr 0x3d

    [ 2114.029602] rpmsg_proto rpmsg19: inserting rpmsg src: 1024, dst: 61

    run succeeded

    [ 2114.056424]  remoteproc4: powering up 2620050.dsp4

    [ 2114.061463] virtio_rpmsg_bus virtio4: rpmsg host is online

    [ 2114.065957]  remoteproc4: registered virtio4 (type 7)

    [ 2114.078193] virtio_rpmsg_bus virtio4: creating channel rpmsg-proto addr 0x3d

    [ 2114.084036] rpmsg_proto rpmsg20: inserting rpmsg src: 1024, dst: 61

    run succeeded

    [ 2114.107088]  remoteproc5: powering up 2620054.dsp5

    [ 2114.112106] virtio_rpmsg_bus virtio5: rpmsg host is online

    [ 2114.116614]  remoteproc5: registered virtio5 (type 7)

    [ 2114.128846] virtio_rpmsg_bus virtio5: creating channel rpmsg-proto addr 0x3d

    [ 2114.134684] rpmsg_proto rpmsg21: inserting rpmsg src: 1024, dst: 61

    run succeeded

    [ 2114.156336]  remoteproc6: powering up 2620058.dsp6

    [ 2114.161535] virtio_rpmsg_bus virtio6: rpmsg host is online

    [ 2114.166038]  remoteproc6: registered virtio6 (type 7)

    [ 2114.178089] virtio_rpmsg_bus virtio6: creating channel rpmsg-proto addr 0x3d

    [ 2114.183923] rpmsg_proto rpmsg22: inserting rpmsg src: 1024, dst: 61

    run succeeded

    [ 2114.208503]  remoteproc7: powering up 262005c.dsp7

    [ 2114.213464] virtio_rpmsg_bus virtio7: rpmsg host is online

    [ 2114.217966]  remoteproc7: registered virtio7 (type 7)

    [ 2114.230251] virtio_rpmsg_bus virtio7: creating channel rpmsg-proto addr 0x3d

    [ 2114.236092] rpmsg_proto rpmsg23: inserting rpmsg src: 1024, dst: 61

    run succeeded

     

    2. Run arm master, it doesn't give any other output after printing out serveral lines of html scripts as followings. 

    root@keystone-evm:/usr/share/matrix-gui-2.0/apps/demo_imageproc# ./cgi-bin/image__processing_evmtci6638k2k_master.out

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    <html>

    <head><meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">

    <title>Multicore Image Processing Demonstration - Output</title>

    <style type="text/css">

    #imageblock {border-width: 1; border: solid; height:640px; overflow: auto;}

    </style>

    </head>

     

    3. I added two printf()s respectively right before and right after the function call ipc_start() in master code, compiled and run it and it only printed out the first one. So it turns out that it stops or waits something to happen in the ipc_start(). 

    Could you tell me whether that is a normal case or not? If it is, what happens in it? If not, how to deal with it?

  • Hi Xin,

    Please follow this thread to make the image processing demo work normally.

  • Hi Shankari G,

    Thanks for your quick reply.

    Now the image processing demo works fine when both master.out and slave.out are loaded and run from linux rootfs.

    What I want to achieve is:

    (1) Online-debug slave.out via emulator, i.e., I can edit, compile, load and run slave codes, and view run-time status through CCS.

    (2) Run master.out from linux rootfs

    But after doing the both above, master.out prints out an error ***IPC_start() failed*** as following, or blocks in the function IPC_start().

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head><meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
    <title>Multicore Image Processing Demonstration - Output</title>
    <style type="text/css">
    #imageblock {border-width: 1; border: solid; height:640px; overflow: auto;}
    </style>
    </head>
    Ipc_start: NameServer_setup() failed: -1
    <body style="font-family: helvetica;">
    <table style="text-align: left; background-color: white; height: 132px;">
    <tbody>
    <tr>
    <td style="width: 147px;"><img src="../../images/dspchip.png"></td>
    <td><span style="font-size:200%;">Multicore Image Processing Demonstration - Output</span></td>
    </tr>
    </tbody>
    </table> <br>
    <br><br><strong>Following error occured while processing the request</strong><br><br>IPC_start() failed<br><br></body>
    </html>

    Could you tell me how to achieve the online debug, or how to let IPC_start() work correctly?

  • Hi Shankari G, 

    Are you still there?