亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? main.c

?? 這是C6416片上支持庫(CSL)的所有例程
?? C
?? 第 1 頁 / 共 2 頁
字號:
/****************************************************************************\
 *           Copyright (C) 2001 Texas Instruments Incorporated.             *
 *                           All Rights Reserved                            *
 ****************************************************************************
 * VcpProcessing_BIOS.pjt                                                   *
 *                                                                          *
 
 * The purpose of this project is to demonstrate how to use the Viterbi Co- *
 * Processor (VCP) using the Chip Support Library (CSL) and BIOS modules.   *
 *                                                                          *
 * User data, residing in the tcpuserx.asm files included with this project *
 * is processed through the VCP. The VCP is configured based on the channel *
 * parameters set in vcp_parameters.h. This software handles the VCP, EDMA, *
 * and interrupt configuration necessary to process each user channel.      *
 * LOG module generates messages via a specific window :                    *
 *                    DSP/BIOS -> Message Log                               *
 * Run Project in Real Time Mode - Debug ->Real-Time Mode                   *  
 * Set Breakpoint at line 144   SEM_post(&semVcpFree);                      *                                                    *
 *                                                                          *
\****************************************************************************/

#include <csl.h>
#include <csl_irq.h>
#include <csl_vcp.h>
#include <csl_edma.h>

/* Include files for DSP/BIOS */
#include <std.h>
#include <log.h>
#include <swi.h>
#include <sem.h>
#include <clk.h>
#include <sts.h>          
#include <rtdx.h>  
#include <tsk.h>   
#include <mem.h>
#include <hwi.h>

#include <VcpProcessingcfg.h>

/* Other includes */
#include "vcp_parameters.h"

/* Prototype declarations */
void intConfig(void);
Int32 checkResults(Uint32 *actual, Uint32 *reference, Uint32 size);
void hwiEdma(void);
void submitEdma(VCP_UserData *userData, VCP_Params *vcpParameters,
                Uint32 **decisions, Uint32 **outParms,
                VCP_ConfigIc **configIc, Uint32 *numDec);

/* Global variable declarations */
extern Uint32 ISRAM;             /* Memory space used for buffer allocation */

/* Global variable declarations */
int tcc = -1;                    /* Transfer completion code used by EDMA   */
EDMA_Handle hEdmaRevt,           /* EDMA channel used for Hard Decisions    */
            hEdmaXevt,           /* EDMA channel used for IC Values         */
            hEdmaBrMet,          /* EDMA channel used for Branch Metrics    */
                                 /*      data                               */
            hEdmaOutPar,         /* EDMA channel used for Output Parameters */
            hEdmaNull;           /* EDMA NULL channel used for termination  */


/****************************************************************************\
 * main function                                                            *
\****************************************************************************/
void
main(void)
{
    /* Announce beginning of program */
    LOG_printf(&trace, "DSP/BIOS program started");

    /* Initialize the EDMA interrupt */
    intConfig();
    
    /* "Free" the VCP to the system */
    SEM_post(&semVcpFree);
    
    /* Following main() the system will drop into the task manager */
    return;

} /* end main() */


/****************************************************************************\
 * tskUserChannel: The user channel task. This is the task software used by *
 * each of the user channels to obtain the VCP, establish memory buffers,   *
 * program the EDMA, and process the user channel data.                     *
\****************************************************************************/
void
tskUserChannel(Uint32 channelNum)
{
volatile Uint32 error = 0;
Uint32 *decisions, *outParms, numDec;
VCP_ConfigIc *configIc;
Uint32 iteration = 0;

  while(1){                /* Repeat processing of the user channel forever */

    /* Announce beginning of channel processing */
    LOG_printf(&trace, "Starting Channel %d. Iteration %d",
               channelNum, iteration++);
    
    /* Wait for VCP coprocessor to be available */   
    LOG_printf(&trace, "Channel %d waiting for VCP", channelNum);
    SEM_pend(&semVcpFree, SYS_FOREVER);       /* Pend on available hardware */
    SEM_reset(&semVcpFree, 0);                /* Lock out other tasks       */
    
    /* Program EDMA to service User Channel */
    submitEdma(userData[channelNum], &vcpParameters[channelNum], &decisions,
                                               &outParms, &configIc, &numDec);

    /* Announce that the VCP is being used to process the channel data      */
    LOG_printf(&trace, "Channel %d using the VCP", channelNum);
    
    /* Start the VCP to begin the EDMA transfers */
    VCP_start();

    /* Wait on viterbi decode to complete. The task pends on a semaphore  */
    /* that is set in the EDMA interrupt service routine.                 */
    LOG_printf(&trace, "Channel %d awaiting VCP completion", channelNum);
    SEM_pend(&semVcpDone, SYS_FOREVER);     /* Pend on completion semaphore */
    SEM_reset(&semVcpDone, 0);              /* Clear the semaphore          */
    LOG_printf(&trace, "Channel %d decode complete", channelNum);
          
    /* Verify the coprocessing results by comparing received decisions and*/
    /* output parameters to programmed reference data. A value of "0"     */
    /* indicates that no error was present. A non-zero value indicates an */
    /* error occurred.                                                    */
    error = checkResults(decisions, referenceDec[channelNum],
                           vcpParameters[channelNum].frameLen);
    /* Report the error status */
    LOG_printf(&trace, "User channel %d completed with %d error(s)",
               channelNum, error);
    
    /* Free memory spaces back to the system */
    MEM_free(ISRAM, decisions, numDec     * sizeof(Uint32));
    MEM_free(ISRAM, outParms , VCP_NUM_OP * sizeof(Uint32));
    MEM_free(ISRAM, configIc , VCP_NUM_IC * sizeof(Uint32));
    
    /* Reset VCP available semaphore to allow another channel to use it */
    SEM_post(&semVcpFree);
  } /* end while(1) */
    
} /* end main */ 


/****************************************************************************\
 * intConfig: Configure the CPU interrupt controller to receive interrupts  *
 * from the EDMA.                                                           *
\****************************************************************************/
void
intConfig(void)
{
    IRQ_enable(IRQ_EVT_EDMAINT);          /* Enable EDMA -> CPU interrupt   */
    IRQ_nmiEnable();                      /* Enable non-maskable interrupt  */
    IRQ_globalEnable();                   /* Globally enable all interrupts */

} /* end intConfig() */


/****************************************************************************\
 * checkResults: Verify that the hard decisions and output parameters sent  *
 * by the VCP are correct. If the hard decisions are not correct, the index *
 * of the first incorrect value is returned. If the output parameters (the  *
 * number of iterations) is not correct, then a -1 is returned. If all      *
 * values are correct then a 0 is returned.                                 *
\****************************************************************************/
Int32
checkResults(Uint32 *actual ,Uint32 *reference, Uint32 size) 
{
Uint32 i;
Uint32 mismatch=0;
Uint32 numWords = size>>5;
    
    /* Directly compare received values to reference values for 32 valid    */
    /* bits.                                                                */
    for (i=0; i<numWords; i++) {
      if (actual[i]!=reference[i]) {
        mismatch++;
        break;
      } /* end if actual != reference */
    } /* end for i */
    
    /* Compare last halfword. */
    if ((!mismatch) && (size & 1)) {    
      if ((short)actual[i] != (short)reference[i]) mismatch++;
    } /* end if */

    if (mismatch) return(i+1); /* return index for 1st error that occured. */
                               /* Index will range from 1 to framelength   */
    else return(0);            /* no error */
    
} /* end checkResults() */


/****************************************************************************\
 * edmaIsr: EDMA interrupt service routine. The vcpDone flag is set to one  *

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人精品免费网站| 欧美日本在线看| 欧美性猛交一区二区三区精品| 91麻豆精品国产| 国产精品嫩草99a| 日本不卡123| 91国偷自产一区二区三区成为亚洲经典 | 欧美一区二区视频网站| 国产精品久久久久久久久免费桃花| 日韩精品欧美精品| 色婷婷av一区二区| 久久影院午夜论| 欧美a一区二区| 欧美日韩一区二区三区在线看 | 中文字幕一区在线观看| 激情综合网最新| 日韩一区二区三区视频在线观看| 一区二区三区四区视频精品免费| 国产成人av一区二区三区在线| 91精品国产91综合久久蜜臀| 一区二区三区四区国产精品| 成人免费毛片app| 久久久久久久久一| 国内精品在线播放| 日韩精品自拍偷拍| 免费看黄色91| 91精品国产一区二区三区 | 免费成人在线视频观看| 欧美人体做爰大胆视频| 一区二区三国产精华液| 在线一区二区三区做爰视频网站| 亚洲视频每日更新| 色综合久久久久久久久| 亚洲三级在线观看| 91福利资源站| 午夜伦欧美伦电影理论片| 欧美日韩亚洲综合一区二区三区| 亚洲精品一二三四区| 色中色一区二区| 亚洲综合清纯丝袜自拍| 欧美日韩亚洲综合| 日韩精品久久久久久| 51午夜精品国产| 激情小说欧美图片| 26uuu国产一区二区三区| 国产精品一区二区x88av| 欧美国产精品劲爆| 一本色道亚洲精品aⅴ| 亚洲综合一二三区| 91精品视频网| 精品伊人久久久久7777人| 久久精品夜色噜噜亚洲aⅴ| 成人av在线网| 亚洲国产你懂的| 欧美一级理论性理论a| 国产精品18久久久久久久久| 国产精品久久久久久久久免费丝袜 | 欧美调教femdomvk| 免费看黄色91| 欧美激情一区二区三区不卡 | 国产成+人+日韩+欧美+亚洲| 国产精品久久免费看| 91电影在线观看| 精东粉嫩av免费一区二区三区| 国产性色一区二区| 欧洲视频一区二区| 老司机精品视频一区二区三区| 国产精品美日韩| 欧美精品三级日韩久久| 国产一区二区精品久久91| 亚洲男人的天堂在线aⅴ视频| 欧美色区777第一页| 国产一区二区电影| 亚洲国产精品久久人人爱蜜臀| 欧美成人乱码一区二区三区| 99久久婷婷国产| 久热成人在线视频| 亚洲欧美福利一区二区| 日韩欧美区一区二| 在线免费视频一区二区| 国产乱国产乱300精品| 亚洲午夜久久久久中文字幕久| 精品国产髙清在线看国产毛片| 一本大道av一区二区在线播放| 久久精品999| 午夜精彩视频在线观看不卡| 欧美极品少妇xxxxⅹ高跟鞋 | 91福利资源站| www.成人在线| 狠狠久久亚洲欧美| 婷婷亚洲久悠悠色悠在线播放 | 久久久国产精品不卡| 欧美无人高清视频在线观看| 成人免费毛片片v| 国内精品免费**视频| 视频一区中文字幕国产| 亚洲精品菠萝久久久久久久| 精品国产一区二区三区不卡| 欧美日韩三级一区| 一本大道av伊人久久综合| av在线这里只有精品| 国产麻豆9l精品三级站| 久久精品国产一区二区三| 婷婷成人激情在线网| 亚洲一区二区三区四区在线| 国产精品久久久久久久久晋中 | 色综合天天综合色综合av| 国产精品一区二区久久不卡| 免费美女久久99| 免费成人av资源网| 日本欧美一区二区在线观看| 五月天网站亚洲| 五月天一区二区三区| 婷婷丁香激情综合| 日韩中文字幕区一区有砖一区| 亚洲高清视频的网址| 亚洲一区二区三区四区的| 亚洲精品免费播放| 亚洲激情六月丁香| 亚洲一区视频在线观看视频| 亚洲美女视频一区| 亚洲综合丝袜美腿| 亚洲va天堂va国产va久| 日日夜夜免费精品视频| 日韩国产精品91| 日本欧美久久久久免费播放网| 日韩精品91亚洲二区在线观看 | 欧美私人免费视频| 成人av网在线| 99在线热播精品免费| 色久综合一二码| 欧美在线观看视频一区二区三区| 欧美三级电影一区| 91精品欧美久久久久久动漫| 日韩亚洲欧美在线| 国产欧美一区二区精品忘忧草 | 亚洲第一二三四区| 青青草视频一区| 国产福利一区二区三区| 99在线视频精品| 欧美精品久久99| 久久久久国色av免费看影院| 最新高清无码专区| 五月激情综合色| 国产精品自拍在线| 91九色最新地址| 日韩欧美一区在线| 国产精品护士白丝一区av| 亚洲图片自拍偷拍| 国产乱妇无码大片在线观看| 91蜜桃免费观看视频| 欧美一区二区成人| 中文在线一区二区| 丝袜脚交一区二区| 懂色av中文一区二区三区| 欧洲精品视频在线观看| 91麻豆精品国产91| 亚洲色图制服诱惑 | 亚洲伦理在线免费看| 久久国产精品第一页| 99re免费视频精品全部| 91精品国产91热久久久做人人| 国产精品久久二区二区| 秋霞国产午夜精品免费视频 | 国产精品1区2区| 欧美精品在欧美一区二区少妇| 国产视频一区二区在线| 日韩精品一级二级 | 麻豆专区一区二区三区四区五区| 成人国产亚洲欧美成人综合网| 欧美裸体bbwbbwbbw| 国产精品夫妻自拍| 狠狠v欧美v日韩v亚洲ⅴ| 欧美视频一区二| 国产精品免费丝袜| 狠狠狠色丁香婷婷综合激情| 欧美久久久久免费| 亚洲精品写真福利| 成人国产精品免费观看动漫| 日韩欧美卡一卡二| 亚洲成人在线网站| 91美女精品福利| 国产精品私房写真福利视频| 蜜臀a∨国产成人精品| 欧美日韩一级黄| 一区二区高清视频在线观看| 成人一区二区三区视频 | 91精品国产综合久久精品图片| 一区二区三区在线高清| 99久久精品免费观看| 国产精品成人一区二区三区夜夜夜| 激情图片小说一区| 精品欧美乱码久久久久久1区2区| 丝袜美腿亚洲综合| 欧美日韩国产综合一区二区三区| 亚洲精品菠萝久久久久久久| 色婷婷久久久综合中文字幕| 伊人开心综合网| 在线精品亚洲一区二区不卡| 一区二区三区精密机械公司|