DSP

DSP开发中malloc函数应用问题

2019-07-13 09:52发布

最近在撺掇一个完全基于TMS320C6748的还原魔方机器人,图像获取和颜 {MOD}识别的问题解决的差不多了以后,就开始把解魔方的算法从VC移植到DSP上。(注:解魔方算法为kociemba算法) 不出意外,的确遇到了问题——在PC机上跑算法结果都是秒出,但是DSP跑出正确结果需要将近20分钟,而且有时候会卡住。 迷惑的我在算法的几个关键循环处添加了几个printf语句,在CCS5中进行Debug观察结果,并且和VC结果做对比——是这样: 额。。。的确跑飞了。。。 最后终于找到了这个问题的解决方案。 char* tb = tables[j] = (char*)malloc(sizeof(char)*tl) 问题出在malloc函数上面:算法中为提供足够大的搜寻空间,利用malloc函数分配了比较大的char型数组,在DSP中,动态内存分配的内存空间是在heap里,如果heap分配的空间太小,分配过程中会产生溢出,最后使算法跑飞。 如果将CCS工程中的_DSP.cmd文件中的-heap容量设置大一点,就可以完美运行。 最终结果: