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

navigator通信问题失败

大家好!

6678 and  ccs 5.3

我想用navigator实现一个简单的通信,就单单实现core0到core1的单向通信,即core0给core1发送一个消息。

我参考几个pdk中的qmss和cppi的例子,现在的做法是,

1. 两个核做init,包括配置linkingram,qmss和cppi的init等。

2. core0 insert一个memroy 0,然后创建一个free queue 897 并插入空descriptors。core1创建free queue 898并插入空descriptors。

3. core0打开tx channel 并打开tx queue 800. core1 打开rx channel 和rx queue 704。core1配置rx flow,其中设flowIdNum为0,rx_dest_qnum 为704,rx_fdq0_sz0_qnum为898。

4. core0从897中pop一个desc,调用Cppi_setTag将srcTagLo设置为0,然后push到tx queue 800中去。core1 直接从rx queue 704中pop获取desc。

1. 首先我想确认的是这样的流程是否正确,比如tx channel和rx channel是否只需要分别由core0和core1打开就可以了。

其次是,现在的现象是core1从rx queue 704 pop的时候,rx queue中并没有desc。调用while (Qmss_getQueueEntryCount (rxQueHnd) == 0);会一直循环在这里。

2. 我觉得我对desc配置了srcTagLo为0则这个desc就应该被flowid为0的rx flow处理,同时flowid为0的流的接收队列为704.那么我从704队列pop的时候就应该有desc才对。但是现在没有,那么可能是什么问题,哪里配的不对?

3. 还有一点就是在配insertmemory的时候,其descBase是否有要求?而Cppi_setData的第二个参数descAddr又是否有要求?比如设为L2或MSMC或DDR都可以吗,有什么要注意的吗?

谢谢

Andy Yin1:

流程是对的,你这里有初始化memory region么?建议分Tx与Rx进行调测,查看发送侧描述符是否已经回收到TxFDQ中,在接收侧确认RxFDQ中描述符上配置的地址及长度是ok的,建议参考MCSDK及STK中的navigator例程,对于你这种应用也是适用的。

ruijie yang:

回复 Andy Yin1:

谢谢Andy!

1. 有初始化,但我只让core0调用Qmss_insertMemoryRegion对memory region 0初始化,之后core0和core1都调用Cppi_initDescriptor从Qmss_MemRegion_MEMORY_REGION0中初始化描述符。但这里在初始化memory region的时候,他的descBase,就是基地址配置为了一个core0 L2地址的全局地址。这样core1不用自己初始化memory region而直接用core0初始化的region去分配描述符是可以的吧?

2. 您说查看发送侧描述符是否回到tx free queue中,请问这个回收是自动的吗? 在哪里配置呢?我看例程中都是调用push或者divert手动回收的。

3.我在创建rx free queue的时候就直接调用Cppi_initDescriptor,指明general purpose,然后系统分配队列898。但这里并不配描述符的地址和大小,描述符的地址和大小都是在insert memory region的时候配的。而如我前面说的,只有core0初始化了region。而且得到的打印信息显示rx free queue正常分配了。

core0和core1需要建立各自独立的memory region?

谢谢!

Andy Yin1:

回复 ruijie yang:

1 这种region方式可行,但是确认一下描述符的配置;

2 Tx侧是自动回收,在描述符中有returnQ字段配置;

建议你先稍微看看navigator user guide了解一下整个工作流程,及描述符的关键配置信息,可以参考STK中navigator例程。

赞(0)
未经允许不得转载:TI中文支持网 » navigator通信问题失败
分享到: 更多 (0)