TI中文支持网
TI专业的中文技术问题搜集分享网站

F2811 CCS3.3 开优化编译链接时报错LL$$MPY未定义的错误如何解决?

项目需要使用F2811以及CCS3.3进行开发,其中涉及到32bit*32bit得64bit结果的计算,不开优化时,编译可以通过,开o2优化后,链接过程中提示LL$$MPY未定义的错误

32bit*32bit得64bit的实现方式如下:

temp = ((S64_T)src0) * src1;

不开o2优化时,生成的汇编文件显示该代码生成IMPY与QMPY两条指令,并且链接没有错误

开o2优化后,链接过程中提示LL$$MPY未定义的错误,看到生成的lst文件中也有提示LL$$MPY未定义的提示

请问这是什么原因造成的呢?解决这个问题有什么思路呢?是否和编译器的配置有关?

我的工程的编译配置主要参数如下:

-g -k -q -al -fr -ml -v28

再补充一个问题:2000系列DSP以及CCS3.3所支持的intriscs就只有ccs安装路径中文档514里面提到那些吗?请问还有其他的吗?因为优化代码需要使用这些工具。

还望各位讨论交流

10#:

如果你使用以下语句会有什么差别吗?

temp = ((S64_T)src0) * ((S64_T)src1);

是只有spru514文档里提到的Intrinsics,没有其它了。

项目需要使用F2811以及CCS3.3进行开发,其中涉及到32bit*32bit得64bit结果的计算,不开优化时,编译可以通过,开o2优化后,链接过程中提示LL$$MPY未定义的错误

32bit*32bit得64bit的实现方式如下:

temp = ((S64_T)src0) * src1;

不开o2优化时,生成的汇编文件显示该代码生成IMPY与QMPY两条指令,并且链接没有错误

开o2优化后,链接过程中提示LL$$MPY未定义的错误,看到生成的lst文件中也有提示LL$$MPY未定义的提示

请问这是什么原因造成的呢?解决这个问题有什么思路呢?是否和编译器的配置有关?

我的工程的编译配置主要参数如下:

-g -k -q -al -fr -ml -v28

再补充一个问题:2000系列DSP以及CCS3.3所支持的intriscs就只有ccs安装路径中文档514里面提到那些吗?请问还有其他的吗?因为优化代码需要使用这些工具。

还望各位讨论交流

Fenghao Qiao:

回复 10#:

谢谢您。

你说的这个方法我回头可以试试,我现在换成IQxmpy来进行这一步计算,我只取了其中一部分的结果

有两个问题还想向您继续请教:

1.   可以自己将一些简单的汇编指令封装成类似intrinsics吗?TI这里有没有参考的例子?比如取反这样的操作,514文档里的减法也不是我需要使用的减法

2.   请问TI关于2811这边有提供封装的C实现的指令吗?我想通过类似的封装通过VS来仿真debug我的代码,以便我查找自己代码问题,因为目前通过仿真器想DSP导入数据测试代码的方式比较麻烦,而且工作量还很大。

谢谢你了

项目需要使用F2811以及CCS3.3进行开发,其中涉及到32bit*32bit得64bit结果的计算,不开优化时,编译可以通过,开o2优化后,链接过程中提示LL$$MPY未定义的错误

32bit*32bit得64bit的实现方式如下:

temp = ((S64_T)src0) * src1;

不开o2优化时,生成的汇编文件显示该代码生成IMPY与QMPY两条指令,并且链接没有错误

开o2优化后,链接过程中提示LL$$MPY未定义的错误,看到生成的lst文件中也有提示LL$$MPY未定义的提示

请问这是什么原因造成的呢?解决这个问题有什么思路呢?是否和编译器的配置有关?

我的工程的编译配置主要参数如下:

-g -k -q -al -fr -ml -v28

再补充一个问题:2000系列DSP以及CCS3.3所支持的intriscs就只有ccs安装路径中文档514里面提到那些吗?请问还有其他的吗?因为优化代码需要使用这些工具。

还望各位讨论交流

Fenghao Qiao:

回复 10#:

谢谢您提供给我的文档。

我的意思是,比如将一些加减乘计算写成库函数的形式,使得它能够达到与intrinsics类似的效果。因为我在514里面找的intrinsics非常有限,比如里面的减法只看到一个long与int进行计算的,而我的实际需求是SUB16,SUB32等,还有我在文档里找到16bit乘法的intrinsics,它的输出参数要求第二数得是立即数,而我的实际需求似MPY_16_16_32(Src0,Src1)这样的形式。

因为我定点话移植时,想着这样可以直接替换别人算法中的定点库。

项目需要使用F2811以及CCS3.3进行开发,其中涉及到32bit*32bit得64bit结果的计算,不开优化时,编译可以通过,开o2优化后,链接过程中提示LL$$MPY未定义的错误

32bit*32bit得64bit的实现方式如下:

temp = ((S64_T)src0) * src1;

不开o2优化时,生成的汇编文件显示该代码生成IMPY与QMPY两条指令,并且链接没有错误

开o2优化后,链接过程中提示LL$$MPY未定义的错误,看到生成的lst文件中也有提示LL$$MPY未定义的提示

请问这是什么原因造成的呢?解决这个问题有什么思路呢?是否和编译器的配置有关?

我的工程的编译配置主要参数如下:

-g -k -q -al -fr -ml -v28

再补充一个问题:2000系列DSP以及CCS3.3所支持的intriscs就只有ccs安装路径中文档514里面提到那些吗?请问还有其他的吗?因为优化代码需要使用这些工具。

还望各位讨论交流

Fenghao Qiao:

回复 10#:

在此还要感谢您关于32*32得64位结果的回复。

我目前使用IQxmpy,提取64为结果中的有效位作为输出,这个问题暂时得到了解决。

项目需要使用F2811以及CCS3.3进行开发,其中涉及到32bit*32bit得64bit结果的计算,不开优化时,编译可以通过,开o2优化后,链接过程中提示LL$$MPY未定义的错误

32bit*32bit得64bit的实现方式如下:

temp = ((S64_T)src0) * src1;

不开o2优化时,生成的汇编文件显示该代码生成IMPY与QMPY两条指令,并且链接没有错误

开o2优化后,链接过程中提示LL$$MPY未定义的错误,看到生成的lst文件中也有提示LL$$MPY未定义的提示

请问这是什么原因造成的呢?解决这个问题有什么思路呢?是否和编译器的配置有关?

我的工程的编译配置主要参数如下:

-g -k -q -al -fr -ml -v28

再补充一个问题:2000系列DSP以及CCS3.3所支持的intriscs就只有ccs安装路径中文档514里面提到那些吗?请问还有其他的吗?因为优化代码需要使用这些工具。

还望各位讨论交流

10#:

回复 Fenghao Qiao:

理解你的想法,不过intrinsics是由编译器决定的,所以我不确定是否支持用户去添加自定义的函数,不过你还是可以按照上面的建议去尝试看看。

赞(0)
未经允许不得转载:TI中文支持网 » F2811 CCS3.3 开优化编译链接时报错LL$$MPY未定义的错误如何解决?
分享到: 更多 (0)