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.

clarification on the ti provided ipc 3.x library

Hi,

I have Vayu Evm xc5777x CPU board. I am using ti-glsdk_dra7xx-evm_6_04_00_02 which provide component-sources/ipc_3_21_00_07 for Linux(ARM)  to ti sys-bios(DSP) communication.

I am facing some issues wrt the TI provided IPC library. The IPC library provides various methods to communicate between ARM (running linux) and DSP (running TI  SYS BIOS) cores.

I was able to communicate using Message queue’s between ARM and DSP. The message queue facilitates transfer of data upto 512 bytes. Please let us know the mechanism to increase this buffer length.

Also we have noticed from the IPC3.x documentation that the IPC library on ARM side doesn’t support “Shared memory data passing using ListMP”. Please let us know the mechanism used to do the same for this will be helpful to share data in bulk quantities. Will “cmem” ti linux utility will help us in this regard ? If so, please provide the necessary library of “cmem” for our AM5777 evm.

Please help in this regard

Regards

Naveen Shetti

  • Hi Naveen,

    I browsed the code of ipc_3_21_00_07 in latest ti-glsdk_dra7xx-evm_6_04_00_02 release, and have a couple of suggestions:

    Regarding your query:  "The message queue facilitates transfer of data upto 512 bytes. Please let us know the mechanism to increase this buffer length"

    Have you tried changing the following define:
    /linux/src/api/MessageQ.c:     #define MESSAGEQ_RPMSG_MAXSIZE     512

    As for using shared memory in SYS/BIOS & IPC, you can check the following discussions (dealing with Using shared memory with IPC and SYS/BIOS on C66xx DSPs):

    http://e2e.ti.com/support/embedded/tirtos/f/355/t/165155.aspx

    http://e2e.ti.com/support/embedded/tirtos/f/355/t/290974.aspx

    You can also post in the TI RTOS Forum: http://e2e.ti.com/support/embedded/tirtos/f/355.aspx

    Regarding CMEM utility, it is already implemented in lates glsdk release, you can grep the SYS/BIOS sources to ensure that. Useful link regarding CMEM is: http://processors.wiki.ti.com/index.php/CMEM_Overview


    Hope this helps.

    Best Regards,
    Yordan

  • Hello Yordan,

    Thanks for the reply.

    We tried to change the macro value of MESSAGEQ_RPMSG_MAXSIZE to greater than 512, but were not able to boot the kernel after that. Kernel hangs. Please let us know if any other config changes that needs to be done to address the same.

    For the usage of cmem on linux, we tried to change the macro value  to 

    #define DRA7_PHYS_ADDR_CMEM_BASE (0xc6501000)  

    and then we executed our example code as :

    insmod cmemk.ko  phys_start=0xc6501000 phys_end=0xC7101000  

    and then we tried to allocate the memory using CMEM_alloc(), it allocates the memory from the CMEM base, but when we try to write any value to this address it gives "Segmentation Fault" Not able to figure out whats the problem. Please shed some light on the same.

    Thanks & Regards

    Naveen Shetti