On a OMAP-L137 target, running Linux 2.6.37 on ARM core and DSPBIOS 5.41.3.17 on DSP core,
an acquisition system is running, supported by DSPLINK CHNL module.
DSPLINK is 1.65 version.
The DSP application is running a thread issuing SIO_issue/reclaim pairs for an OUTPUT channel.
The output buffer issued is mapped @ 0xC1F30880, size is 0x4FFC.
The ARM application is running a thread issuing CHNL_issue/reclaim pairs for an INPUT channel.
The input buffer reclaimed is mapped @ 0x40126880, size is 0x4FFC.
When the input buffer is available a second thread sends it to a client application running on a PC though TCP/IP.
Question 1.
The buffers size is not an exact multiple of cache line size: is this a potential error ?
Question 2.
The ARM thread actually executes more CNL_reclaim calls if the previous call return code is DSP_ETIMEOUT:
is this allowed or a CHNL_issue must be interlaced for every CNL_reclaim call ?
Please note that DSPLINK documentation does not report tis as an exit code, but only
* @ret DSP_SOK
* Operation successfully completed.
* DSP_EFAIL
* General failure.
* DSP_EMEMORY
* Operation failed due to memory error.
* DSP_EINVALIDARG
* Invalid parameter passed.
* CHNL_E_NOIOC
* Timeout parameter was "NO_WAIT", yet no I/O completions were
* queued.
Question 3.
On the DSP side I note that SIO_reclaim returns 0x4FFC: this is contrary to documentation
If a stream was created in SIO_OUTPUT mode, then SIO_reclaim returns an empty buffer, and nmadus is zero, since the buffer is empty.
However the system works: some configuration error is pending ?
Question 4.
On most of our boards the system works nicely for days.
On some board (identically configured) after some time the ARM core hangs,
i.e. the Linux operating system does not respond any more.
When this happens:
the DSP core is running safely, only a timeout was recognized for the SIO_reclaim call.
After the timeout , code prevents further SIO_issue/reaclim calls are performed, but the channel is still operational.
the ARM core is freezed just after the CHNL_reclaim call is issued: the call itself does not return.
Possible explanations ?
Can this be due to a device silicon bug ?
Question 5.
Should I enable debugging on DSPLINK, which TRC_ENABLE on drv_pmgr.c best fit the problem ?
Thank you for your attention.