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.

Navigator例程里的几点疑惑



1、Low(High)Priority Accumulation queues

These queues can also be used as general purpose
queues.以前看过Low(High)Priority Accumulation queues作为发送队列的例子,而且Accumulation queues是作为General Purpose queue,是不是没有下载PDSP固件,Low(High)Priority Accumulation queues就作为General Purpose queue?

2、看到例程代码里分了QueueManageRegs、QueueManageProxyRegs、QueueManageVBUSM、QueueManageProxyVBUSM这四类,不明白为什么要这样分?

3、

我想问下,这个中断握手的操作是硬件自己做的呢还是要在自己的中断服务程序里配置?

4、

例程里 maxPageEntries为2,那么list_buffer里ping/pong缓冲区的索引是不是这样的,ping缓冲区的索引是0,1;pong缓冲区的索引是2,3?

我是根据上面的两行代码这样猜想的:

uiPingPongIndex= hiQuAccCfg.maxPageEntries*(i&1);
uipDescList[uiPingPongIndex]= 0; //clear the descriptor list buffer

  • 1. Low/High priority accumulation queue是用于监控某个queue收到的packet而产生中断使用,如果不配置它产生中断,那么和GP queue没有区别;

    2. 不确定你看的哪个代码,Navigator手册2.2.3有关于Proxy Queue的描述;

    3. ping, pong page用于存放对应queue里的PD,当某个page里的PD数目达到预设值时将会产生中断,用户需要在中断里处理这些PD然后释放;

    4. 如3所答,ping, pong page的数目是可以配置的,当ping page的数目到达设定数目时,中断CPU进行处理,此时Navigator开始往pong里写PD,如此反复。

  • 1 手册中推荐的high priority与low priority queue均可作为通用queue,且其他任意通用queue也可以配置被accumulator channel监控;固件下载不代表queue就被使用,需要根据应用配置accumulator channel去监控相应的queue。

    2. QMSS可以通过VBUSM及VBUSP总线进行访问配置,且支持proxy原子操作,所以分为这几类寄存器,可以细看navigator user guide。

    3. host就是软件,host在收到中断后,可以响应中断,比如清中断事件,写EOI等。PDSP fill之类的就是硬件处理。

    4. 是的。

  • 感谢你的回答。

    1、任意通用queue也可以配置被accumulator channel监控,这个是不是在command buffer interface里配置的?比如下面的代码中

    高优先级的quueu_base是704,那是不是就是说通道0~31分别监控队列704~735?如果queue_base是2048,那么通道0~31监控的是不是2048~2079?

    2、既然高优先级accumulator channel可以监控普通队列,那么为什么还要特别指定queue704~735为high priority queue?他们之间有什么区别吗?

    3、

    上面说系统中断号最多有1024个,可是我看CIC0的输入事件也就208个,哪来的1024?还有就是主机中断与通道号是一一对应的,比如说系统中断134映射到通道64,通道64对应主机中断64,主机中断64即CIC_OUT64,CICI_OUT64对应系统事件22,再把事件22对应一个DSP中断,这样的理解有没有错误?

    4、我看文档上有CIC_OUT 0~15,24~31,40~47,56~103,为什么没有CIC_OUT16~23,32~39,48~55?而且就算都有,这主机中断最多也才103个,为什么说最多有1024个?