今天,终于彻底的移植成功了,现拿出一些时间,做一些总结,以后遇到问题也好解决。
1、16位dsp,默认整形数是16位int,所以要注意变量移位的时候,是否会溢出。
例如:1<<18就会溢出,要改成(long)1<<18;
2、GET一个新技能,
int16_t fft_buf[PART_LEN4
+ 16];
int16_t *fft = (int16_t *) (((uintptr_t) fft_buf + 31) & ~31);
或是int16_t *fft = (int16_t *) (((uintptr_t) fft_buf +15) & ~15);
可以起到ALIGN的作用,但是要注意,_buf[length+xx]中xx的大小,与& ~后面的大小有关,
也与数组的类型有关。
3、16位与16位整形乘积,默认是16位的,可能会存在溢出。
4、16位5509里面int是16位,long32位