• 欢迎浏览“String me = Creater\忠实的资深Linux玩家;”,请文明浏览,理性发言,有侵犯你的权益请邮件我(creater@vip.qq.com).
  • 把任何的失败都当作一次尝试,不要自卑;把所有的成功都想成是一种幸运,不要自傲。
  •    4年前 (2014-11-01)  dsp |   抢沙发  37 
    文章评分 0 次,平均分 0.0

    如果不启用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全局结构体变量,这个结构体中分别用几个数组来存放各自的调试信息。

    这下就很明白了...

     

    除特别注明外,本站所有文章均为String me = "Creater\忠实的资深Linux玩家";原创,转载请注明出处来自http://unix8.net/home.php/3817.html

    关于

    发表评论

    暂无评论

    切换注册

    登录

    忘记密码 ?

    切换登录

    注册

    扫一扫二维码分享