TI中文支持网
TI专业的中文技术问题搜集分享网站

疑似参数传递造成程序运算问题(6678)

我在6678上编了一个波束形成cbf的程序,其中cbf主要算法编到了函数execute_cbf中,然后用其他公司提供的时间获取函数测其运行的时间,函数编写如下,发现了一个问题。
现象1:当函数编写按照第一种execute_cbf来时,测出的时间是500ms,如果按照第二种函数来时,测出的时间是950ms。。。。可是这两个函数的唯一区别就是fft_srio是直接赋值还是通过函数传参赋值,实在是想不到为什么?
现象2:当我在函数声明、函数定义、函数调用中将第一个参数,即address_srio删去,然后,fft_srio直接赋值为0xA6000000时,时间消耗时950ms。

static OS_PROCESS(cbf_dsp2)
{
        /**************省去*************/
        time_begin = C6678_Timer8_SystemTime_Get();
        execute_cbf(0xA6000000, cbf_data, gengxin);
        time_end = C6678_Timer8_SystemTime_Get();
        printf("time:  %lfms\n",(double)(time_end-time_begin)/1000/1000);
}

第一种:
void execute_cbf(unsigned int address_srio, double * signal_out, unsigned int gengxin)
{
  /*********省去一些变量定义**********/
    double * fft_srio = address_srio;
    /*********省去一些变量定义**********/
    /*********将fft_srio处数据copy出来进行cbf计算**********/
    /*********省去一些数据处理过程**********/
}
第二种:
void execute_cbf(unsigned int address_srio, double * signal_out, unsigned int gengxin)
{
  /*********省去一些变量定义**********/
    double * fft_srio = 0xA6000000;
    /*********省去一些变量定义**********/
    /*********将fft_srio处数据copy出来进行cbf计算**********/
    /*********省去一些数据处理过程**********/
}

此程序是在6678上的一个核运行的,使用Enea操作系统,软件版本是5.1。希望TI能够有人帮我看看,这个到底是哪里的问题。

Allen35065:

这个看不出来有什么错误,你可以在子程序里加上TSCL来统计cycle看看具体是什么环节增加了cycle;

我猜这两种汇编出来的结果应该是不一样的,可能会影响到执行效率。

赞(0)
未经允许不得转载:TI中文支持网 » 疑似参数传递造成程序运算问题(6678)
分享到: 更多 (0)