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.

How to run IPC projects using CCS for K2L EVM

I have successfully built the K2L EVM project provided as part of ti\mcsdk_bios_3_01_03_06\demos\image_processing\ipc\evmtci6630k2l\slave. As per the following instructions from the FAQ page.

http://processors.wiki.ti.com/index.php/IPC_FAQ_for_Keystone_Devices#Q:_After_building_the_slave_code_of_the_Image_processing_demo_using_CCS.2C_where_it_needs_to_be_replaced_in_the_linux_file_system.3F

It states that we need to copy the built image to linux file system. When we do this the image processing demo and IPC mechanism works fine. But instead of ARM booting the DSP, when we use JTAG and load the .out file using CCS, the IPC functionality stops working. In both the cases the .out (DSP image is same).

Are we missing anything from the CCS side.

My requirement is like this.

1)Build and run DSP IPC project from CCS

2)ARM to be the master core. We don't want to use mpmcl module for loading DSP image.But use CCS to build and debug the IPC project.

  • Yes. It is possible. Please refer the IPC FAQ for more information about examples.

    Thank you.

  • Hi Laxmi,

    Actually this requirement doesnot seems to be simple. It requires lot of effort.

    Option 1:
    The simple way of debugging the DSP code is to insert the print messages.

    Option 2:
    After understanding how the MPM module loads the DSP image into DDR3 memory, you can try modifying the "loadJSFile" java script file to load the DSP image into memory which is similar to that of loading the u-boot and kernel into MSMC RAM. But by this method also, you can only load the program but you cannot debug the lines of code..... When we use JTAG and load the .out file, compare the load address that the MPM uses for loading the DSP images Vs the load address that the CCS uses.

    As far as I know, as of now, you can only build the slave side code in CCS but cannot run.

  • Laxmi,

    I'm wondering why you need to load the DSP from CCS. Are you really interested in using CCS to debug the DSP? If so, then that is simple to achieve.

    Use mpmcl to load and run the DSP as usual. In CCS, load the symbols from the same executable file you loaded with mpmcl. Then, after the DSP is running, connect CCS to the DSP. From that point forward, you will be able to debug the DSP.

    Disconnect CCS from the DSP before you shutdown using mpmcl.

    If you are trying to debug the DSP startup sequence, then you can add a spin loop. Once connected with CCS, you can release the spin loop. Don't put the spin loop too early, otherwise the Linux side will timeout and reset the DSP.

    If your DSP application does not use IPC with the HOST (ARM), but only uses IPC between the DSP processors, then you can load and run the DSP with CCS as usual. But if your DSP application uses IPC with the HOST, then the method above is the best.

    ~Ramsey

  • Hi Ramsey,

    Many thanks for your suggestion. We have followed a similar approach as described by you. We found out this information from the following link.

    http://processors.wiki.ti.com/index.php/MCSDK_UG_Chapter_Developing_Transports#KeyStone2_Specific_Details

     KeyStone II IPC Details

    1. KeyStone II platforms must use MPM to load and run DSP applications linked with IPC 3.x that wish to perform ARM to DSP, and vice versa, over MessageQ. MPM reads the DSP image on download and sets the kernel appropriate parameters for IPC.
    2. CCS can be used to debug DSP applications after MPM has loaded and run the app using the load symbols facility.
    3. Headers and libraries for the ARMv7 IPC component and IPC transports are provided as a part of linux-devkit.
    4. The ARMv7 IPC's NameServer runs as a Linux daemon from the filesystem provided in the MCSDK LINUX component.

    It would be have been good if this is put in IPC FAQs.

    Best Regards

    LN