大家好!
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都可以吗,有什么要注意的吗?
谢谢