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

通过多核导航接收到的数据怎么读取?

大家好:

        我现在明白多核导航接收的大致工作过程:

       在接收模式下,PKTDMA从接收完成队列 RxFDQ 中取一个free descriptor(空闲描述符),通过该描述符寻找到链接buffer, 然后把接收端口过来的净荷数据搬移到相应buffer中,最后把指向该描述符的指针push 到接收目的队列RxQ中,完成接收数据包入队的过程。用户要使用接收数据时,从RxQ 中取出描述符,查找到相应接收 buffer 然后读取即可。

       现在的问题是,我明白对于当前接收的数据包,可以通过他的描述符找到相应的buffer,但是怎么能获得之前的数据?也就是说之前的接收数据的描述符,是不是在获取当前数据的描述符的时候被释放了?如果被释放了我怎么了才能获取之前接收的数据包?

Allen35065:

RXFDQ和RXQ里的descriptor是循环使用的。

Liangzhan Xie:

回复 Allen35065:

恩恩谢谢你的答复。也就是说接受一个数据包后描述符会被释放。那么我接收的数据是不是也被清空?若被清空,是不是每次都要将接收的数据存放在自己指定的存储空间(比如DDR)。

Allen35065:

回复 Liangzhan Xie:

一般来说,接收数据包进入RXQ之后,CPU会去处理数据,然后把描述符放回RXFDQ,在放入FDQ之前,如果你将来还需要这份数据,那么你就需要把它保存起来。

Liangzhan Xie:

回复 Allen35065:

恩恩,目前我是以符号为单位进行发送与接收的,所以要等收到14个符号(一个子帧才进行处理)。此外,还一个问题,TI给出的AIF_LTE_FDD例程(2000ms的测试数据)发送的包是27720个(前两个帧用于同步,所以(200-2)*20*7=27720),正常接收却是27299个,他们之间查了421个包,这部分数据包去哪了?

Allen35065:

回复 Liangzhan Xie:

我没有跑过你说的例程,不是很确定是不是应该这样,你可以试试先跑一个10ms看看有没有问题。

Liangzhan Xie:

回复 Allen35065:

TI给的AIF_LTE_FDD例程需要2个帧(20ms)进行同步,那么测试的帧数应该至少是三个(30ms),你说的方法我待会试一试(我电脑出现了点问题,正在处理)。下面这个是官方例程的运行结果:

赞(0)
未经允许不得转载:TI中文支持网 » 通过多核导航接收到的数据怎么读取?
分享到: 更多 (0)