IPNC SDK中remote_debug_client

2014年11月2日 由 Creater 留言 »

如果不启用remote_debug_client.out,你将不会在终端中看见OSA_printf函数打印 M3/DSP 的信息。
因此,解决办法就是:

  • 1.可以运行init.sh
  • 2.直接运行./bin/remote_debug_client.out ${REMOTE_DEBUG_ADDR} &

另外他的源码位置为: $install_dir/Source/ipnc_rdk/ipnc_mcfw/mcfw/src_linux/utils/

可以略看其源码,并且在Linux启动时,我们可以看见如下信息

[c6xdsp ] Remote Debug Shared Memory @ 0xbff00000
[m3video] Remote Debug Shared Memory @ 0xbff10820
[m3vpss ] Remote Debug Shared Memory @ 0xbff21040

所以,针对不同的核,将各自的调试信息放在各自的地址上,由remote_debug_client来负责收发。

STATIC RemoteDebug_ClientObj gRemoteDebug_clientObj;
/**/
gRemoteDebug_clientObj.pCoreObj[coreId] = (RemoteDebug_CoreObj*)(gRemoteDebug_clientObj.coreObjVirtBaseAddr + sizeof(RemoteDebug_CoreObj)*coreId)

这段代码展示了为什么是上面三个地址!

typedef struct {

    volatile unsigned int headerTag;
    volatile unsigned int serverIdx;
    volatile unsigned int clientIdx;
    volatile unsigned int serverFlags[2]; // RESERVED, DO NOT USE
    volatile unsigned int clientFlags[2]; // RESERVED, DO NOT USE
    volatile unsigned int reserved;       // RESERVED, DO NOT USE

    volatile unsigned char serverLogBuf[REMOTE_DEBUG_LOG_BUF_SIZE];
    volatile unsigned char serverParamBuf[REMOTE_DEBUG_PARAM_BUF_SIZE]; // RESERVED, DO NOT USE
    volatile unsigned char clientParamBuf[REMOTE_DEBUG_PARAM_BUF_SIZE]; // RESERVED, DO NOT USE

} RemoteDebug_CoreObj

实际上,从地址0xbff00000开始,存放1个RemoteDebug_CoreObj全局结构体变量,这个结构体中分别用几个数组来存放各自的调试信息。

这下就很明白了…

广告位

发表评论

你必须 登陆 方可发表评论.