DSP开发中malloc函数应⽤问题
最近在撺掇⼀个完全基于TMS320C6748的还原魔⽅机器⼈,图像获取和颜⾊识别的问题解决的差不多了以后,就开始把解魔⽅的算法从VC移植到DSP上。(注:解魔⽅算法为kociemba算法)
不出意外,的确遇到了问题——在PC机上跑算法结果都是秒出,但是DSP跑出正确结果需要将近20分钟,⽽且有时候会卡住。
molloc函数迷惑的我在算法的⼏个关键循环处添加了⼏个printf语句,在CCS5中进⾏Debug观察结果,并且和VC结果做对⽐——是这样:
额。。。的确跑飞了。。。
最后终于到了这个问题的解决⽅案。
char* tb = tables[j] = (char*)malloc(sizeof(char)*tl);
问题出在malloc函数上⾯:算法中为提供⾜够⼤的搜寻空间,利⽤malloc函数分配了⽐较⼤的char型数组,在DSP中,动态内存分配的内存空间是在heap⾥,如果heap分配的空间太⼩,分配过程中会产⽣溢出,最后使算法跑飞。
如果将CCS⼯程中的_d⽂件中的-heap容量设置⼤⼀点,就可以完美运⾏。
最终结果:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。