你好,
最近在研究DM8168的dvr_rdk开发包,ARM端跑linux。现在想将采集到的YUV图像在DSP端做一定的算法处理,可能是自己写的算法太复杂了,导致运行时间太长,系统失去实时性。因此想对DSP端代码进行优化,我记得之前在CCS上跑程序时,有设置优化等级,如- O1 、-O2等。这个里面也有吗?要是有的话,应该在哪里设置?
除此之外,还有什么方法对代码进行优化么?
Michael Huang:
makefile里有编译参数
whh1990:
回复 Michael Huang:
嗯。多谢。不过,我修改过makefile里的优化等级,o0~o3都是一样的,对算法消耗时间一点都没有影响
Louis:
回复 whh1990:
你可以使用CCS单独调试你的DSP算法,确定DSP算法的性能瓶颈,再考虑优化,-o3的优化效果不明显的话,一般是编译器排出来的流水不够好,或者是你的算法本身就需要优化。最好的优化方法是直接算法层面的运算量减少,再是考虑数据结构的组织以及搬移、计算的并行和编译器优化。
whh1990:
回复 Louis:
好像是我自己搞错了。因为是DM8168 dvr_rdk 里的makefile,没有理解太明白,结果给make加了-o3编译选项,我看了一下make参数,加-o3肯定是没有作用的。我想添加编译器优化选项,应该是在交叉编译工具***-gcc 的参数选项里加吧。但是dvr_rdk是调用的其他路径的makefile,没有找的交叉编译工具***-gcc在哪体现。糊涂了。。。。
Louis:
回复 whh1990:
默认情况,DSP的代码是debug模式,可以在Rules.make中将下面的饿debug改成release试一下。
ifeq ($(PROFILE_c6xdsp), ) PROFILE_c6xdsp := debugendif
whh1990:
回复 Louis:
试过了,没有变化,我在config_2G.bld里找到了编译选项,将-o2添加到***-gcc后面,也是不起作用的。
whh1990:
回复 Louis:
还有,DSP在做算法时,将Cache打开,效率会高很多,这个是在哪里打开的啊