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.

DSP component problem



Dear all,


I am developing a new DSP component based on the audio decoder component. I copied all similar functions, and compiled the code successfully, but when I tried to access the component through an application, the DSP does not respond. I assume that the new component is causing the DSP to crash. I tried to obtain some log from the DSP side, and this is what I get:

N:DSP   P:0 #:00057 T:000000072eea1a15 M:xdc.runtime.Main S:OmxRpc_rcmIfGetHandle:ComponentName:OMX.TI.C67X.TRUDEC
N:DSP   P:0 #:00058 T:000000072eeb1d67 M:xdc.runtime.Main S:Module<ti.omx> Entering<OmxRpc_Params_init> @line<93>
N:DSP   P:0 #:00059 T:000000072eebefa5 M:xdc.runtime.Main S:Module<ti.omx> Leaving<OmxRpc_Params_init> @line<99> with error<0:ErrorNone>
N:DSP   P:0 #:00060 T:000000072eecd3e1 M:xdc.runtime.Main S:Module<ti.omx> Entering<OmxRpc_object_create> @line<109>
N:DSP   P:0 #:00061 T:000000072eee1c77 M:xdc.runtime.Main S:Module<ti.omx> Entering<OmxRpc_Instance_init> @line<570>
N:DSP   P:0 #:00062 T:000000072eef0ea9 M:xdc.runtime.Main S:Module<ti.omx> Entering<omxrpc_module_init_client> @line<324>
N:DSP   P:0 #:00063 T:000000072ef06715 M:xdc.runtime.Main S:Entered function:omxrpc_module_init_client (3)
N:DSP   P:0 #:00064 T:000000072ef1da3b M:xdc.runtime.Main S:Module<ti.omx> Entering<OmxRpc_rcmClientCreate> @line<976>
N:DSP   P:0 #:00065 T:000000072ef2c089 M:xdc.runtime.Main S:Entered function:OmxRpc_rcmClientCreate (0x99e65744, OmxRpcRcmServer_3, 2)
N:DSP   P:0 #:00066 T:000000072ef38605 M:xdc.runtime.Main S:Module<ti.omx> @<OmxRpc_rcmClientCreate> @line<983> msg<Before RcmClient_Params_init>
N:DSP   P:0 #:00067 T:000000072ef472f5 M:xdc.runtime.Main S:Module<ti.omx> @<OmxRpc_rcmClientCreate> @line<985> msg<After RcmClient_Params_init>
N:DSP   P:0 #:00068 T:000000072ef5648f M:xdc.runtime.Main S:Module<ti.omx> @<OmxRpc_rcmClientCreate> @line<990> msg<Before RcmClient_create>
N:DSP   P:0 #:00069 T:000000072f05a145 M:xdc.runtime.Main S:Module<ti.omx> @<OmxRpc_rcmClientCreate> @line<992> msg<After RcmClient_create>
N:DSP   P:0 #:00070 T:000000072f06e49d M:xdc.runtime.Main S:Module<ti.omx> Leaving<OmxRpc_rcmClientCreate> @line<1013> with error<0:ErrorNone>
N:DSP   P:0 #:00071 T:000000072f07cdc1 M:xdc.runtime.Main S:omxrpc_module_init_client: Located the remoteCoreRcmServer
N:DSP   P:0 #:00072 T:000000072f090d63 M:xdc.runtime.Main S:Module<ti.omx> Entering<OmxRpc_rcmClientRemoteFxnLocate> @line<1033>
N:DSP   P:0 #:00073 T:000000072f09e9c3 M:xdc.runtime.Main S:Entered OmxRpc_rcmClientRemoteFxnLocate (0x99512b00, 0, 0x99e657d0)
N:DSP   P:0 #:00074 T:000000072f0ade71 M:xdc.runtime.Main S:main: calling RcmClient_getSymbolIndex(OmxRpcGetHandle)
N:DSP   P:0 #:00075 T:000000072f1330b5 M:xdc.runtime.Main S:main: returned from RcmClient_getSymbolIndex(OmxRpcGetHandle) with status :0
N:DSP   P:0 #:00076 T:000000072f14658d M:xdc.runtime.Main S:main: calling RcmClient_getSymbolIndex(OmxRpcFreeHandle)
N:DSP   P:0 #:00077 T:000000072f1ce341 M:xdc.runtime.Main S:main: returned from RcmClient_getSymbolIndex(OmxRpcFreeHandle) with status :0
N:DSP   P:0 #:00078 T:000000072f1e47ef M:xdc.runtime.Main S:main: calling RcmClient_getSymbolIndex(OmxRpcCreateProxyLite)
N:DSP   P:0 #:00079 T:000000072f254f29 M:xdc.runtime.Main S:main: returned from RcmClient_getSymbolIndex(OmxRpcCreateProxyLite) with status :0
N:DSP   P:0 #:00080 T:000000072f268cab M:xdc.runtime.Main S:main: calling RcmClient_getSymbolIndex(OmxRpcGetHeapMemStats)
N:DSP   P:0 #:00081 T:000000072f2f51ad M:xdc.runtime.Main S:main: returned from RcmClient_getSymbolIndex(OmxRpcGetHeapMemStats) with status :0
N:DSP   P:0 #:00082 T:000000072f30912d M:xdc.runtime.Main S:main: calling RcmClient_getSymbolIndex(OmxRpcDeleteProxyLite)

After that I do not get any more log, so this is why I am assuming the DSP has crashed. Do you have any ideas of what is causing the DSP to behave this way? How can I obtain more debugging information in this case?

Thanks,

Danillo

  • Would you please confirm which DSP you are using? I need to know to see if this is the right forum...

  • I'm using DM8168 on a Z3 board, with EZSDK load from Z3 as well.

  • Thanks, the post is in the right forum...one of our apps team with expertise on this part will be replying soon...

  • Hi Danillo,

    I hope you followed the steps mentioned in

    http://processors.wiki.ti.com/index.php/MP3_Decoder_Integration_in_EZSDK

    to integrate your new codec TRUDEC.

    Can you confirm if this audio decoder is xDAIS compliant and it follows IAUDDEC1 XDM interface?

    Thanks

    Ram

  • Hi Ram,

    my codec TRUDEC is actually a video CODEC, based on IVIDDEC2 XDM interface and xDAIS compliant. 

    I do not have any problems with compiling the code, but when I run the application, the A8 sides halts waiting for the DSP to respond. From the log I could not detect what happened at the DSP side, but I think there was some bug in the DSP code, and the DSP becomes non-responsive. How can I debug the DSP better, to check what happened and in what part of the code the DSP is dying? I only get a limited amount of log, for example, I do not see the log from the RcmClient_getSymbol function. Is there any way to output more comprehensive log messages?

    Thanks,

    Danillo

  • just to add some more information. My problem is not on the codec part, but on the OMX component that should call this codec via CodecEngine. Similar to ADEC component, I created a TRUDEC component that will call the CodecEngine and instantiate my codec. I followed all the steps similar to ADEC component, to derivate my own component, but then when the application asks for the handle of the component on the DSP side, I think that is when the DSP crashes (I can't tell exactly, but the logs do not come anymore). So I guess my problem is how to debug a new OMX component, what should I look for when analyzing the log information?

    Any thoughts?

  • Maybe just start off with one of the simple example copy codecs and once you have one of those working you can move onto implementing your own codec.
    Ralph

  • Dear Ralph,

    thanks for the suggestions. I actually decided to look into the vlpb component, and was able to create my own component based on vlpb. Now I have all the functions of my codec implemented in my copy of the vlpb component, and it seems to be working fine. However, some of the optimizations that I did on my codec before I still need to do for my DSP OMX component. How can I use the internal memory of the DSP in an OMX component? When I allocate memory using OMX_Base_Malloc, how can I tell the function to use the DSP internal RAM memory ? Also, how can I integrate the EDMA into the DSP OMX component? Is there any equivalent to the ACPY3_copy functions I used previously with the Codec Engine?

    Thanks,

    Danillo

  • Hello,

    Sorry, I've not used OMX on DSP. I assume it is a wrapper around Codec Engine or something like that. I'll let someone from TI answer your question as my knowledge is only of OMX on ARM and Codec Engine in general.

    Ralph