如题,往DSP端添加算法代码后,编译成功。
但是编译出来的文件obj文件过大。原有demo自带的oe674文件大约500k左右,而我的有1.25M。
导致连接出错(提示:error #10234-D:unresolved symbol remain)。
现在想尝试重新划分dsp的mem,linker.cmd中有说明:该文件系自动生成,编辑无效。
请问:
1、上述连接错误是由dsp内存配置引起的吗?
2、不使用CCS,现有RDK工具链下,如何能重新配置dsp端内存大小?
非常感谢。
Robin Edson:
ipnc_rdk\ipnc_mcfw\mcfw\src_bios6\cfg\ti814x文件夹下的config_XXXM.bld中就是你的内存分配。
unresolved symbol remain
意思是说有声明了但未定义的函数调用,你看下unresolved symbol remain下面的是什么函数,找到那个位置就知道你出了啥问题了。
Yuanwei:
Robin 说的不错。
但我觉得你不像是内存问题,还是链接问题吧, 感觉有的文件或者函数链接时找不到。
如果要改内存配置,不需要CCS,就是一个文本设置文件, 另外要注意对应的cache 设置。
simon blak:
回复 Yuanwei:
谢谢楼上的兄弟。
改了内存配置,让DSP_CODE_MEM变大后这个问题依然存在。
还得考虑别的原因,但是肯定不是函数申明后没定义这样的错误。
另外请TI 牛人冒个泡:
1、排除算法实现本身,如何开发出类似于demo中DMVAL这样的库出来?
2、在xdais这样的算法框架程序中为什么不能调用普通的C函数?
simon blak:
回复 simon blak:
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函数(自己添加的算法)之后,出现的上述错误。
Robin Edson:
回复 simon blak:
相信我说的,你这个就是
SELFALG_TI_IALG
SELFALG_TI_process
申明了但未定义,我在移植过程中经常碰到这种错误。
simon blak:
回复 Robin Edson:
呵呵,谢谢 Robin Edson 。
问题是经反复检查,这两个东东确实定义了,而且函数
SELFALG_TI_process 申明 定义 调用是一致的。。。
而且他不是报错自己定义的C函数申明未定义,报的是类似于****_TI_process这样的算法框架的错误。
我再检查一下。。。
Robin Edson:
回复 simon blak:
也有可能是你该包含的头文件没有包含,譬如ti的共用接口头文件。
Yuanwei:
回复 simon blak:
搜索路径加了吗?
simon blak:
回复 Yuanwei:
谢谢关注。
实验好几次发现,该函数如果在调用它的同一文件中定义,就不会出错。
如果放到另外一个c文件中定义,声明放到头文件中,或者在调用它的文件中用extern声明,都会出现上述错误。
求解释。。。
Robin Edson:
回复 simon blak:
外部调用的时候包含你声明的那个头文件了吗?