最近在学习多核导航,通过查看技术手册、查看论坛以及STK例程,大致理解了RX FLOW的作用,但是有如下几个问题:
文档中说如果不指定rx flow,那么rx channel N将会使用Rx flow N,具体如下所示:
1、这里所谓的不指定rx flow是什么意思?是不对SOURCE_TAG_LO字段赋值吗?就此问题通过修改STK代码做了如下测试:
测试1:如果不对SOURCE_TAG_LO赋值的话,SOURCE_TAG_LO的默认值是0,此时使用的是rx flow 0。
测试2:SKT例程中使能了8对TX-RX通道,但是定义了6个rx flow(0~5),假如设置SOURCE_TAG_LO为大于5的任意数,先遍历8192个队列,再将描述符压入TX队列后,然后遍历8192个队列,发现没有哪个队列中的描述符个数发生了变化,也就是说TX侧既没有自动回收描述符,接收侧也没有收到描述符,那么这个描述符哪儿去了?
2、发送侧只管把描述符压入发送队列,那么接收侧的接收通道号是不是就是手册中 所说的RX channel N,这个N是在哪儿指定的,还是系统随机分配的?
user3881891:
我测试代码有点问题,经过修改再次测试发现测试2中发送侧实际上是完成了描述符的回收的,但是接收侧没有反应。请TI的老师帮忙解答一下,谢谢。
Shine:
回复 user3881891:
请问您对STK里的代码有做修改吗?如果有修改的话,做了怎样的修改?
user3881891:
回复 Shine:
测试1是将这行代码屏蔽;测试2是将等号右值改成固定数字8。
现在有如下问题
问题1:手册中不指定RX flow 是如何做到不指定RX flow的?
问题2:如果屏蔽上述代码,则接收侧默认使用的是rx flow 0来处理描述符,根据技术手册描述,是否就可以推断在不设置描述符的src_tag_lo字段时,接收侧就必须使用通道0来接收数据?
问题:3:如果将描述符压入发送队列,我如何得知RX侧使用的哪个通道来接收数据的?
问题4:就是如测试2操作,发送侧描述符已经回收了,接收侧没有反应,那么描述符去哪儿了,还在stream I/F中吗?