求助,谢谢指导!
我在awr1843的信号数据处理过程中,要对fft的结果进行累加处理,就自己写了个简单的程序,如下:
void MmwDemo_sum(MmwDemo_DSS_DataPathObj *obj, int32_t rxAntIdx, uint32_t rangeIdx, uint32_t* waitingTime, int32_t txAntIdx)
{
uint32_t idx;
volatile uint32_t startTimeWait;
{
uint32_t idx;
volatile uint32_t startTimeWait;
if (rxAntIdx == 0)
{
for (idx = 0; idx < obj->numDopplerBins; idx++)
{
obj->rxAntSum[idx] = obj->fftOut2D[idx];
// obj->rxAntSum[idx].real = obj->fftOut2D[idx].real;
// obj->rxAntSum[idx].imag = obj->fftOut2D[idx].imag;
}
{
for (idx = 0; idx < obj->numDopplerBins; idx++)
{
obj->rxAntSum[idx] = obj->fftOut2D[idx];
// obj->rxAntSum[idx].real = obj->fftOut2D[idx].real;
// obj->rxAntSum[idx].imag = obj->fftOut2D[idx].imag;
}
}
else
{
for (idx = 0; idx < obj->numDopplerBins; idx++)
{
obj->rxAntSum[idx].real += obj->fftOut2D[idx].real;
obj->rxAntSum[idx].imag += obj->fftOut2D[idx].imag; //简单的做加法
}
}
else
{
for (idx = 0; idx < obj->numDopplerBins; idx++)
{
obj->rxAntSum[idx].real += obj->fftOut2D[idx].real;
obj->rxAntSum[idx].imag += obj->fftOut2D[idx].imag; //简单的做加法
}
}
}
上述,fftOut2D、rxAntSum均为cmplx32ReIm_t类型数据
typedef struct cmplx32ReIm_t_
{
int32_t real; /*!< @brief real part */
int32_t imag; /*!< @brief imaginary part */
} cmplx32ReIm_t;
{
int32_t real; /*!< @brief real part */
int32_t imag; /*!< @brief imaginary part */
} cmplx32ReIm_t;
就上述这么一个简单的加法程序,同等条件下,完成一次numDopplerBins = 512的加法时间竟然要用到 35.5us, 而512点fft耗时仅为 7.2us, why?why?
初次接触TI DSP,查询了下,说是采用TI DSP的 内联指令的可以提高处理效率的,怎么整? 求助大侠们知道我吧上述简单的加法改造下,谢谢!
Shine:
您可以先尝试使用-o优化选项优化代码,请参考下面的wiki网站。
processors.wiki.ti.com/…/C6000_Compiler:_Recommended_Compiler_Options