zoukankan      html  css  js  c++  java
  • TI C66x DSP 系统events及其应用

    以下解说在详细应用中,event与中断ISR的设置。以对QM的queue监控产生中断(不是EXCEP)为例,主要包含配置QM accumulator(用于监控QM queue)与配置ISR(ISR与event配置)。

    首先介绍QM accumulator的配置,QM模块中QMSS(包括QMSS Tx queue 800:831,Tx/Rx channel 0:31,RxChan,TxChan,Tx queue是一一相应的,如Tx queue是806,那么相应的TxChan与RxChan编号都是6)用于CPU之间的通信,QMSS Rx queue能够配置为high priority queue(也能够配置general queue等),然后利用PDSP的 channel(0:31,该channel与分配给QM的chip-event是一一相应的,见QM user guide 5.2节)监控QMSS Rx queue,条件满足时,将会产生中断。QMSS的Tx queue是QMSS对外提供的唯一输入port(queue 800:831),当有descriptor PUSH到QMSS的Tx queue后,经过Tx channel与Rx channel后,将会将输出结果输出到配置给QMSS的Rx queue。

    QM accumulator的配置主要包含QMSS Rx channel的使能(Rx channnel仅仅需使能就可以),Tx channel的使能与配置,Rx flow的配置,Tx Scheduler配置,PDSP监控的配置。本节先讲QMSS Rx channel,Tx channel的配置,Tx Scheduler的配置PDSP监控的配置在5.2中解说。以Nyquist为例。

    QMSS Rx channel配置:

          confRegPtr = (void*)0x02a08800;
          /* Enable Rx Channel */
          confRegPtr[channel].channelCtrlRegA = 0x80000000;//channel为QMSSTx queue相应的channel

    QMSS Tx channel配置

          /* Configure Tx Channel */
          confRegPtr[tmpChan].channelCtrlRegB = ((u32)filterEPI<<30)|((u32)filterPS<<29)|((u32)aifMode<<24);//filterEPI=filterPS=aifMode=0
          /* Set channel priority */
          if( prioRegPtr != GLO_NULL )
          {
            prioRegPtr[tmpChan] = (u32)priority;//prioRegPtr=0x02a08c00(TX Scheduler Config). priority=1
          }
          /* Enable Tx Channel */
          confRegPtr[tmpChan].channelCtrlRegA = 0x80000000;

    QMSS配置寄存器地址(infra1列,为Nyquist所用寄存器)例如以下:


     Rx channel A寄存器:


     Tx channel B寄存器(A寄存器与Rx channel同样):


    Tx Scheduler寄存器:


  • 相关阅读:
    Android 基于Message的进程间通信 Messenger完全解析
    Android获取TextView显示的字符串宽度
    关于移动App的五个提问
    Android 结合实例学会AsyncTask的用法
    提高 Android 代码质量的4个工具
    高效开发Android App的10个建议
    移动5年 Android生态系统的演进
    最受欢迎的游戏引擎集结号:跨平台篇
    Java程序员转Android开发必读经验分享
    8 个最优秀的 Android Studio 插件
  • 原文地址:https://www.cnblogs.com/yxwkf/p/3886488.html
Copyright © 2011-2022 走看看