这几天用TI DSP5402做项目,之前都用5409,程序空间少了一半,程序写完后在ccs上跑的时候老报空间不足,因此用了很多的精力和时间对程序进行优化,特征是不能减的了,能优化的就是代码空间,以下是一些小结:
1.添加string.h、math.h等外接库会增加很多代码,所以对于memset,sqrt等考虑自己写。
今天找到的一个挺好用的sqrt实现算法,据说比一般编译器默认的要优化好几倍:
float sqrt(float number) { long i; float x, y; const float f = 1.5F; x = number * 0.5F; y = number; i = * ( long * ) &y; i = 0x5f3759df - ( i >> 1 ); y = * ( float * ) &i; y = y * ( f - ( x * y * y ) ); y = y * ( f - ( x * y * y ) ); return (number * y); }
还一个fabs:
float fabs( float f ) { int tmp = * ( int * ) &f; tmp &= 0x7FFFFFFF; return * ( float * ) &tmp; }
在pc上做仿真,运行效果与库函数无异,但是到了DSP则出现计算结果不一致的情况,追踪的结果是上面这个fabs出了问题,
然后换成 float fabs( float f ) return ((f