I am developing a DSPLINK application on a custom target based on OMAP-L137 EVM.
The target runs @ 216 Mz, and is provided with 32M SDRAM.
The application uses SIO_Issue/Reclaim calls on DSP side to transfer data to ARM by way of CHNL_Issue/Reclaim calls.
DSP side:
IDE CCS 3.3.82.13
BIOS : 5.41.03.17
CGT: v6.1.13
DSPLINK: 1.65.00.01
ARM side:
OS: Linux 2.6.37
DSPLINK: 1.65.00.01
I need inspect the behaviour of CHNL_Issue/CHNL_Reclaim on ARM side.
I could enable the trace mode of ARM components:
I followed User Guide and Wiki explanations, however I could not reduce the amount
of console logging levels that actually slow down too much my application.
Setup of TRC_ENABLE() in file gpp/src/pmg/Linux/2.6.18/drv_pmgr.c is useless: once --trace=1, all debug levels appear to be always enabled.
[Tue Jul 15 15:29:44.172 2014] Entered CHNL_issue ()
[Tue Jul 15 15:29:44.172 2014] procId [0x0]
[Tue Jul 15 15:29:44.172 2014] chnlId [0x1]
[Tue Jul 15 15:29:44.172 2014] ioReq [0xee26c]
[Tue Jul 15 15:29:44.188 2014] Entered DRV_Invoke ()
[Tue Jul 15 15:29:44.188 2014] drvObj [0xf4058]
[Tue Jul 15 15:29:44.188 2014] cmdId [0x6d03]
[Tue Jul 15 15:29:44.188 2014] arg1 [0x40078c64]
[Tue Jul 15 15:29:44.188 2014] arg2 [0x0]
[Tue Jul 15 15:29:44.188 2014] Entered _POOL_xltBuf ()
[Tue Jul 15 15:29:44.188 2014] poolId [0x0]
[Tue Jul 15 15:29:44.188 2014] bufPtr [0x40078b58]
[Tue Jul 15 15:29:44.188 2014] xltFlag [0x200]
[Tue Jul 15 15:29:44.204 2014] Leaving _POOL_xltBuf () status [0x8000]
[Tue Jul 15 15:29:44.204 2014] Status: 8000
[Tue Jul 15 15:29:44.204 2014] Leaving DRV_Invoke () status [0x8000]
[Tue Jul 15 15:29:44.204 2014] Leaving CHNL_issue () status [0x8000]
[Tue Jul 15 15:29:44.204 2014] Entered CHNL_reclaim ()
[Tue Jul 15 15:29:44.204 2014] procId [0x0]
[Tue Jul 15 15:29:44.204 2014] chnlId [0x1]
[Tue Jul 15 15:29:44.219 2014] timeout [0xc8]
[Tue Jul 15 15:29:44.219 2014] ioReq [0xee26c]
[Tue Jul 15 15:29:44.219 2014] Entered DRV_Invoke ()
[Tue Jul 15 15:29:44.219 2014] drvObj [0xf4058]
[Tue Jul 15 15:29:44.219 2014] cmdId [0x6d04]
[Tue Jul 15 15:29:44.219 2014] arg1 [0x40078c64]
[Tue Jul 15 15:29:44.219 2014] arg2 [0x0]
[Tue Jul 15 15:29:44.219 2014] Entered _POOL_xltBuf ()
[Tue Jul 15 15:29:44.219 2014] poolId [0x0]
[Tue Jul 15 15:29:44.235 2014] bufPtr [0xee26c]
[Tue Jul 15 15:29:44.235 2014] xltFlag [0x2]
[Tue Jul 15 15:29:44.235 2014] Leaving _POOL_xltBuf () status [0x8000]
[Tue Jul 15 15:29:44.235 2014] Status: 8000
[Tue Jul 15 15:29:44.235 2014] Leaving DRV_Invoke () status [0x8000]
[Tue Jul 15 15:29:44.235 2014] Leaving CHNL_reclaim () status [0x8000]
1) How can I actually select the enabling of different levels ?
I could not find in DSPLINK docs which is the correct management of CHNL_Issue or SIO_Issue
in case of errors.
2)Should such call be repeated until no error whatever results ?
In DSPLINK docs I found that is SIO_Issue call fails, the call can be repeated, but a previous SIO_flush
call must be executed.
3)What about CHNL_Issue errors ?
4)What about SIO_reclaim and CHNL_reclaim errors ?
5)Which are the constraints about allocation of SIO buffers ? Can they be allocated on external SDRAM ?
My application runs nicely for a long time on most of our targets, but on a small number of them after
some time the ARM core hangs completely (Linux drivers,console, and application appear to be frozen).
This problem occurs always when ARM executes a call to CHNL_Reclaim: the call never returns.
The DSP core is safely running: of course SIO_Issue calls continuously do report an error.
6)Any hint/suggestion about the fault origin ?
Many thanks for your attention.