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.

recieve data tiwce from dsp one time,the second recieved data is wrong

Other Parts Discussed in Thread: OMAPL138

Hi,

    I'm recently use DSPLINK to implement the communication between the two CPUs of OMAPL138,I need to tranfer data from dsp to arm twice one time ,but I only allocate only one buffer from the POOL,this is right ??before i call SIO_issue,I init the buffer ,strangely ,on the ARM ,I only can recieve the right data from the first transfer,the data from the second tranfer is random,where is the problem ?by the way ,on the ARM,I only allocate a buffer for the two CHNL_issue()call,that is ,when the first set CHNL_issue,CHNL_Reclaim finished ,i drectly use the CHNL_Reclaim ‘s output param ChannelIOInfo *ioReq as the second call CHNL_issue's input param,whether i can do by this way ???

        Thank you

minLi

  • Just a few suggestions.

    When using CHNL, you must always issue an buffer to the stream in order to reclaim another buffer.  If the buffer you are reclaimed is immediate re-issued without it being processed or copied, it data may get corrupted since the buffer reside in shared memory that both processor have access to.

    In general, a CHNL_reclaim call should not be made without at least one outstanding CHNL_issue call. Calling CHNL_reclaim with no outstanding CHNL_issue calls has undefined results.

    Also, do you have cache enabled?  CHNL on ARM and SIO on the DSP do not handle any cache coherency.  That means the application (or the driver) must properly handle the proper writeback (on the sender side) and invalidates (on the receiver side) to ensure data isn't stale.