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 combine MessageQ into NDK?

Dear Sir/Madam,

Now we have received the UDP packet from NDK example program into a large buffer in system heap(DDR 3 now). And we want to send near 300K bits data from the ddr3 buffer to Share memory(MSMC) every 1ms.

         So we send MessageQ/per millisecond to a new task which is parelleled to UDP receiving task under NDK bios. And this new task is used to send the data by memcpy(up to 9000 cycle) or EDMA(up to 5000 cycle). But unluckily this NDK core will run wrong if the UDP stream suppresses 1Mbps and the wrong information is:    

ti.sdo.ipc.heaps.HeapMemMP: line 820: assertion failure: A_invalidFree: Invalid free xdc.runtime.Error.raise: terminating execution

         The information of our system:

The messageQ heapmemory is 0x20000 from 0x0C000000 to 0x0C020000(max to 0x0C050000).

The NDK system heap is 0x300000 in DDR3.

The qmss and cppi is from 0x0C050000 because the core 0 is for BCP, the core 1&2 is for FFTC, the core 3 is for NDK. The message send to core 3(NDK) is 12 byte from core 0.

The 1ms timer is in core 0. Now I can see the nes task do the msgFree() command but I donot know whether it run sucessfully because the above quetiosn. Can the TI enginerrer help me on this problem or sovle our need by other methods?

Thank you sincerely in advanced!

Alan

  • Can anyone help on it? Thanks!

  • Still waiting! I know this quetsion is queit troublesome!

  • Hi Chen,

    There is a long weekends(Holidays) in TI USA. Kindly bear with us for the delayed response.

    Thanks.

  • I am deeply sorry about that I do not know about the holiday schedule in U.S.

    Because the TI China's deyisupport forum is not very experienced on the NDK module, I wish to recieve your help on this question if the holiday is over.

    Thank you very much!

    Alan

  • Alan,

    I have some questions about your application.

    1) Which core is responsible for copying data from DDR to MSMC?

    2) You mentioned core0 sends a message to core3? Why is this?  You have NDK running on core3 and you mentioned that you need to copy the data received from UDP from DDR to MSMC.

    3) Where is the IPC Shared Memory Region? What is the size of the IPC Shared Memory Region?

    Looks like something is accessing invalid memory.  If you disable memory copy but keep sending msg part, do you still have the same problem?

    Xiaohui

  • Hi, .

    I use c6671 and,

    I eventually success the use of dual port ethernet a week ago becuase John who works for TI helped me a lot.

    But, I met another problem nowadays.

    That is when I sent multicaste messages every 1ms, It becomes back out. i mean die the whole system.

    But every 100ms is OK with my borad.

    Our spec of this :

    1. get multicast messages every 1ms from linux server (40Byte)

    2. assemble the data around 126Byte and send back to linux server.

    I don't know what do I have to do now. Just I am doing changing all of variable which I think concerned with this problem.

    But as I mentioned it doesn't work.

    Please help me.

    Thanks, Ryan.

  • I make progress here a little bit.

    Actually  it's not a progress, :) just I check one thing more.

    That is just eth0 works fine but eth1 doesn't work with 1ms multicast receive but it works with 100ms muticast recevie.

    Just I think It doesn't work with accumulator when it set up in Setup_Rx in numu_eth.c.

    Anybody have any ideas? Please tell me someone who have any idea about this.

    Thanks, Ryan

  • Deeply sorry for the late answer because I thought I should waiting for the holiday ended!

    1) I use the core 3 (the fourth core) to triger the EDMA to copy the data (also use memcpy) to copy the data to MSM.

    2) Because the LTE ask for triger the system every 1ms so core 3 should renew the data on MSM every 1ms also. NDK not  only receives the data from PC but also collects the short socket packets to a bigger buffer as the codeword of the LTE system.

    3)IPC share memory is at MSMC from 0x0c000000 to 0x0C020000(max to 0x0C050000) (I think it is big enough).

    I still met the same problem if I disabled memory copy but kept sending msg part.

    Thank you very much in advanced!

    Alan

  • Ryan, 

           I think your problem is much like the problem I met. But I am sorry that now I have no idea to solve it.

          Have you solve the problem by yourself now?

    Alan