This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

【多核编程】- QMSS和CPPI

你好:

1.具体应用场景:雷达信号实时处理

2.硬件环境:目前暂时是在EVMC6678上运行

3.软件架构:结合SRIO,通过QMSS和CPPI接收外部数据,分发给每个核以及核间通讯

4.问题:

a.发送数据时,当将一个packet写到发送队列时,该队列会立刻将数据发送出去还是会等待发送队列中的数据包到达该队列的阈值?

b.发送队列和PKTDMA 发送通道号是怎么样的一个对应关系,同时,接收队列和PKTDMA 接收通道对应关系是怎么样的

c. 接收packet时,数据接收到后会存放在接收FIFO中,然后PKTDMA会从Rx Free Descriptor Queue  pop一个空的 Descriptor,然后用收到的Descriptor信息填充Rx Free Descriptor,最后将Rx Free Descriptor 写到Rx Queue,数据写到对应地址,我想知道我描述的这个接收过程是对的吗?

谢谢!

  • 您好,

    首先非常感谢您的关注!

    1. 将packet写到TxQ时,会首先在TxQ中排队,一旦到头上就会立即被packetDMA pop出去发送;

    2. TxQ与Tx channel是一一对应的,接收侧没有特定的对应关系,具体需要参考相应的navigator device手册,一般来说建议将接收侧的channel初始全部enable;

    3. 完全正确。

  • 你好:

    TXQ队列有很多个,但是TX channel却只有16个.,如何一一对应?

    \谢谢

  • 对于第一个问题:您的意思是:对于发送而言,队列没有阈值这个限定,只要packet到了queue 头,就会被发送,但是对于接收来说,应该是有阈值这一说法,因为接收的数据达到阈值后,会产生一个中断!

    另外,我想知道对于一个队列而言,这个队列里面可以存放的packet个数有没有限制?

  • 你好:

    Memory Region R Descriptor Setup Register 中的DESC_SIZE 和 Queue N Register D 中的DESC_SIZE 有什么区别吗? 对于这两个我有点弄不清到底哪个表示descriptor的大小?

    多谢

  • 您好,

    对于每个navigator device的TxQ与Tx channel是一一对应的,如SRIO有16个TxQ和16个Tx channel。

    接收侧可以配置accumulator的寄存器来设定中断产生阈值,具体参考navigator手册PDSP一节。

    每个队列中存放的descriptor没有数量的限制。

  • 您好:

    1.Memory Region R Descriptor Setup Register 中的DESC_SIZE 和 Queue N Register D 中的DESC_SIZE 有什么区别吗? 对于这两个我有点弄不清到底哪个表示descriptor的大小?

    2.我看过TI  Multicore Navigator的一个培训视频,里面讲到过 job management 的一个功能,可以实现 resource sharing 和load balanceing,我想知道这个具体的实现流程是怎么样的?能否提供一些demo?

    谢谢!

  • 你好:

    希望能尽快得到您对上面这个问题的回复,谢谢!

  • 1. 都是表示descriptor size,同一memory region中的descriptor具有相同的大小;每个queue中的descriptor可以有不同的size;

    2. navigator非常灵活,你所说的功能需要在理解其所有的功能后进行应用,如一个主控核负载将不同的descriptor push到不同的Queue pend queue中,产生相应的中断到每个核上,从而实现一个主控核进行任务管理的工作,可以参考mcsdk中的image process demo以及Navigator的例子。

  • 您好:

    按照您的意思:假若memory region 0 的descriptor 大小是32byte,如果我要将这个memory region 的descriptor  push到一个队列中,那么该队列的descriptor  大小必须是32byte,如果是其他的值就不对,是这样的吗?

    多谢!

  • 每个队列对descriptor的大小没有限制,只是在push的时候必须在D寄存器中的填上描述符的size。

  • Andy Yin你好,

    PKTDMA能像EDMA一样传输数据的目的地址不是连续的,而是跳变吗?

  • pktDMA只能传输一维数据,不能跳跃。