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.

请教:使用Ti tools dm8127 IPNC RDK DSP端内存划分



如题,往DSP端添加算法代码后,编译成功。

但是编译出来的文件obj文件过大。原有demo自带的oe674文件大约500k左右,而我的有1.25M。

导致连接出错(提示:error #10234-D:unresolved symbol remain)。

现在想尝试重新划分dsp的mem,linker.cmd中有说明:该文件系自动生成,编辑无效。

请问:

1、上述连接错误是由dsp内存配置引起的吗?

2、不使用CCS,现有RDK工具链下,如何能重新配置dsp端内存大小?

非常感谢。

  • ipnc_rdk\ipnc_mcfw\mcfw\src_bios6\cfg\ti814x文件夹下的config_XXXM.bld中就是你的内存分配。

    unresolved symbol remain

    意思是说有声明了但未定义的函数调用,你看下unresolved symbol remain下面的是什么函数,找到那个位置就知道你出了啥问题了。

  • Robin 说的不错。 

    但我觉得你不像是内存问题,还是链接问题吧, 感觉有的文件或者函数链接时找不到。 

    如果要改内存配置,不需要CCS,就是一个文本设置文件, 另外要注意对应的cache 设置。

  • 谢谢楼上的兄弟。

    改了内存配置,让DSP_CODE_MEM变大后这个问题依然存在。

    还得考虑别的原因,但是肯定不是函数申明后没定义这样的错误。

    另外请TI 牛人冒个泡:

    1、排除算法实现本身,如何开发出类似于demo中DMVAL这样的库出来?

    2、在xdais这样的算法框架程序中为什么不能调用普通的C函数?

     

  • undefined                              first referenced

    symbol                                    in file

    SELFALG_TI_IALG                /home/.../ipnc_rdk_bios6.ae674<SelfAlgLink_priv.oe674>

    SELFALG_TI_process          /home/.../ipnc_rdk_bios6.ae674<SelfAlgLink_priv.oe674>

    error #10234-D:unresolved symbol remain

    错误信息类似这样的提示。。。。

    补充一下,在没有调用普通C函数之前,算法框架能正常从link获取到yuv并进行简单的灰度统计处理。

    调用普通C函数(自己添加的算法)之后,出现的上述错误。

  • 相信我说的,你这个就是

    SELFALG_TI_IALG  

    SELFALG_TI_process  

    申明了但未定义,我在移植过程中经常碰到这种错误。

  • 呵呵,谢谢 Robin Edson 。

    问题是经反复检查,这两个东东确实定义了,而且函数

    SELFALG_TI_process  申明 定义 调用是一致的。。。

    而且他不是报错自己定义的C函数申明未定义,报的是类似于****_TI_process这样的算法框架的错误。

    我再检查一下。。。

  • 也有可能是你该包含的头文件没有包含,譬如ti的共用接口头文件。

  • 搜索路径加了吗? 

  • 谢谢关注。

    实验好几次发现,该函数如果在调用它的同一文件中定义,就不会出错。

    如果放到另外一个c文件中定义,声明放到头文件中,或者在调用它的文件中用extern声明,都会出现上述错误。

    求解释。。。

  • 外部调用的时候包含你声明的那个头文件了吗?

  • 请教Robin Edson

    mcfw 机制dsp算法第一次执行成功,系统就crash了,不会出现第二次调用。

    算法涉及到动态内存分配。

    首先问题肯定不是出现在算法处理不过来,mcfw视频流出现问题。

    麻烦给点线索或者你有没有遇到过类似的问题。

  • 不好意思,我没做过dsp那边的算法,所以没有类似的经历,crash的原因很可能就是你动态内存分配部分的问题,有可能是分配的内存过大或者过于频繁导致内存分配越界之类的问题。分析下你的dsp侧算法代码,看有没有内存泄露之类的。

  • 哦,谢谢了。

    从打印信息来看是dsp和video m3挂掉了,算法在pc上调试无内存泄漏。

    继续求助。。。

  • 把打印信息贴上来,一起分析分析哈。

  • 需要看看打印信息, 我碰到几次, pc上往往都没问题, 但到DSP问题就多了。 

    简单的一点, 写个hello word 在DSP, 看看是否还挂掉吧。

    simon blak 说:

    哦,谢谢了。

    从打印信息来看是dsp和video m3挂掉了,算法在pc上调试无内存泄漏。

    继续求助。。。

  • 简单处理一帧的dsp算法很流畅,没有问题。

    这是出问题时的log,没有什么太有用的信息。

    SystemServer:Fail at SYS_MSG_DO_BOOT_PROC
    [09/Nov/2012:06:17:54 +0000] boa: server version Boa/0.94.13
    [09/Nov/2012:06:17:54 +0000] boa: server built Aug 29 2013 at 05:01:29.
    [09/Nov/2012:06:17:54 +0000] boa: starting server pid=528, port 80
    SOAP 1.2 fault: SOAP-ENV:Sender [no subcode]
    "End of file or no input: Network is unreachable"
    Detail: [no detail]
    SOAP 1.2 fault: SOAP-ENV:Sender [no subcode]
    "End of file or no input: Network is unreachable"
    Detail: [no detail]
    SOAP 1.2 fault: SOAP-ENV:Sender [no subcode]
    "End of file or no input: Network is unreachable"
    Detail: [no detail]
    SOAP 1.2 fault: SOAP-ENV:Sender [no subcode]
    "End of file or no input: Network is unreachable"
    Detail: [no detail]
     [c6xdsp ] Self Process Recv New Data Msg!
     [c6xdsp ] Before Function AlgRun
     [c6xdsp ] Width:256,Height:256
     [c6xdsp ] OK
     [c6xdsp ] After Function AlgRun
     [c6xdsp ] Cost Process Time:252ms


     [host]
    Usecase is Active !!!
     [m3vpss ]  71476: CAMERA: Fields = 1535 (fps = 25), Total Resets = 0 (Avg 0 ms per reset)
     [m3vpss ]  131512: CAMERA: Fields = 1501 (fps = 25), Total Resets = 0 (Avg 0 ms per reset)


     [host]
    Usecase is Active !!!
     [m3vpss ]  ==================== CameraLink_PrintDetails ====================
     [m3vpss ]  154272: CAMERA: Fields = 3606 (fps = 25, CPU Load = 23)
     [m3vpss ]  154272: CAMERA: Num Resets = 0 (Avg 0 ms per reset)
     [m3vpss ]  =================================================================