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.

c6678 MultiCore Navigator Linking RAM



您好!

        我看了相关资料说Linking RAM是对descriptor进行index,但我一直没搞懂Linking RAM具体存了什么东西?

比如说我要把一个描述符push进某一FDQ(之前是一个空队列),我想问QM指向该FDQ的头指针里会存什么?

Linking RAM对应该描述符的位置具体会存什么?如果能画个图给我说明push前后相关内存区域的变化就更加

感激不尽了。

       谢谢!

  • 可以把硬件队列理解为数据结构中的单向链表,只是硬件队列是由硬件来维护队列中各个元素的链接关系,而单向链表则是需要软件维护。所以在初始空队列时,头指针指向的是NULL,一旦push一个元素到队列头,则头指针自动更新指向该元素。对应描述符存储的的字段如Navigator user guide相应章节,主要存储的是对每个packet的描述,如packet地址、长度等信息。

    参考Navigator training guide:http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/24488.aspx

  • 请问一下link ram中存放的内容是一个一个的写入queue N寄存器D的内容吗?

    另外,你提到的硬件队列是单向链表,应该是指link ram是以单向链表来组织的吧

    那么问题来了:单向链表除了node内容本身外,还需要next node的指针,那在使用QMSS外部内存作为link ram时,使用的link ram大小需要将单向链表的next node指针计算进来吗?

  • link RAM为每个描述符对应一个表象,这个表象用于维护push/pop Queue之后各个描述符的link关系,link ram中每个表象与描述符的对应关系有memory region配置定义。

    这里的链接关系是由QMSS 硬件来维护,如push一个描述符到queue tail,则还会将queue中最后一个描述符与push当前的描述符建立link关系,这都是硬件做的,不需要软件维护。

  • 恩恩,对于linking ram大小的计算,找到答案了,如下:

    在配置外部linking ram时,一个desc需要配置64bit的linking ram,个人猜测,这个64bit应该是分成俩32bit来用,

    一个32bit用于存放register D的内容,另外一个32bit用于存放next node指针,呵呵

    关于“link ram中每个表象与描述符的对应关系有memory region配置定义”这个,还要再研究一下memory region的配置

  • link RAM中各个表象的内容。