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.

TMS320C6670 Navigator descriptor问题

1、是不是在开始的时候就向TX FDQ和RX FDQ分别加载了一定数量的描述符,这些描述符本身并不完全是空的,包含返回队列号和orig_buff0_len、orig_buff0_ptr等信息。

2、当descriptor从发送队列中弹出,会发一个中断给主机,告知要进行描述符的回收,这个中断是要自己配置的还是系统默认的,这中断与accumulator list buffer被填满时产生的中断有啥区别?

3、描述符被回收到指定队列后,描述符内的内容是全被清空了还是会保留原先在TX FDQ时拥有的内容?

4、orig_buff0_len、orig_buff0_ptr是不是在描述符还没压入发送队列时就已经链接了一块缓冲区?

  • 没有完全明白你的问题,稍作回答。

    1 在初始化向FDQ中准备的描述符,可以根据应用进行初始化,也可以不做任何初始化,一般来说后续run time不会变化的字段就在初始化的时候做好就行。对于RxFDQ中的描述符信息,只需要配置orig buffer ptr 及orig buffer len即可,其他的字段可以空着,在Rx侧硬件会根据flow的配置进行覆写;

    2. QMSS提供了QpendQ及Accmulator channel产生中断,使用QpendQ时,一个描述符push到QpendQ中后会产生事件,但是描述符依然存于QpendQ中,需要软件pop描述符;使用Accumulator channel时,硬件会将描述符从Accumulator Queue中pop到相应的list buffer中;这个过程描述符的信息不会发送变化;

    3. 对于硬件负责回收,如Tx侧,描述符信息不会变化;对于Rx侧,接收的描述符放到RxQ中,描述符的信息会根据flow的配置有相应的覆写。

    4. orig buffer len及ptr是需要预先由软件配置好。

  • 非常感谢你的回答,你的回答对我太有用了,只是我是新手,还有诸多疑惑希望你能帮我解答下,谢谢!

    1、list_buffer里面存放的是描述符本身呢还是描述符的地址,因为List Entry Size有4、8、16字节,而描述符一半都有32字节,我感觉不会是描述符本身。

    2、是不是Accumulator channel每弹出一个描述符到list_buffer,就是给主机发一个中断呢,这个中断服务程序一般会执行些什么操作,实现一些什么功能?

    3、当list_buffer ping/pong page满了的时候会发一个中断,让主机获得ping/pong page的拥有权,是不是说主机就可以使用ping/pong page里面描述符所指的那些数据,这个中断到底是干嘛的,希望得到讲解!

    4、文档里总是会提及描述符的回收,假如TX_queue里面的描述符被弹出来,要被回收,这描述符是添加了很多信息的,比如packet info,buffer info,ps等,这描述符被回收到回收队列后,是否还包含这些信息?换句话说,是没有变化还是变成了空的描述符?