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

FFTC信号量

想问一个FFTC信号量的问题,DSP里面可以用信号量来发起任务,而FFTC里面的信号量是用来接收FFTC结果的,这两种要是一起用会发生冲突吗?现在我就有这样一个工程,结果是FFTC在Fftc_rxGetResult这个函数里面的Fftc_osalPendSem (pRxObjInfo->hResultSem); 语句导致无法接收结果,这个问题怎么解决?我目前是想把FFTC里面的信号量去掉,用其它方式来替代,有没有这样的用法呢?因为BCP那边有一个函数是可以的,叫做bcp_recv。在FFTC里面,可能需要改的地方是:

要使用FFTC信号量,必须要用任务来创建FFTC,否则会出错。

另外一个是FFTC里面的参数bBlockOnResult跟信号量有关吗?这个参数是什么意思?

Andy Yin1:

信号量可以有很多个只要是不同的信号量就不会有冲突的问题;其他参数的具体含义请参阅代码的使用,bBlockOnResult配置为1是说明后面需要等待前一个FFTC block处理完成。

Wei Jingwen:

回复 Andy Yin1:

也就是说bBlockOnResult设置成0也是可以的?对结果不产生影响

关于怎么去掉信号量,我已经查看了相关文档,FFTC的API函数似乎也没这方面的说明,能否指导一下怎么配置?代码该怎么改?

Andy Yin1:

回复 Wei Jingwen:

设置为1 or 0取决于你的应用流程,为什么要去掉信号量,有什么具体的问题么

Wei Jingwen:

回复 Andy Yin1:

FFTC里面的信号量是通过中断来接受结果的,在移植到别人的工程上的时候,程序卡在了信号量那里,无法接收到来自FFTC的数据,因此信号量一直处于等待状态,程序僵死,另一方面,去掉信号量也可以提高程序的运行效率,这个已经测试过。还有一个问题是,每个核都在用信号量来启动任务,当运行到FFTC的信号量的时候,程序直接跳出,就好像跟任务那部分的信号量发生冲突一样。BCP里面有个函数可以取代信号量来接受结果,所以可以去掉,但是在FFTC库函数里面我没有找到这样的函数,所以想请教一下,FFTC是不是只能通过信号量的方式来运行?

Allen35065:

回复 Wei Jingwen:

不用,用CSL库直接写FFTC寄存器也可以

Wei Jingwen:

回复 Allen35065:

表示对CSL库不熟,没用过。我的理解是可以通过CSL库直接对FFTC寄存器操作,是不是就能直接从FFTC相关寄存器获取到结果?因为我这块比较紧急,不可能重新编写FFTC,因为已经基本完成了,我是想用一个类似BCP的BCP_revc()的函数对FFTC进行操作,直接获取FFTC计算结果而不采用中断的方式。???

Allen35065:

回复 Wei Jingwen:

那你要修改代码,去掉中断,轮询FFTC RX queue,收到包就上报。

赞(0)
未经允许不得转载:TI中文支持网 » FFTC信号量
分享到: 更多 (0)