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

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

?? main_dat1_usebios.c

?? 使用在dsp TI DSK6711中 很多controller 的例子
?? C
字號(hào):
/*
 *  Copyright 2003 by Texas Instruments Incorporated.
 *  All rights reserved. Property of Texas Instruments Incorporated.
 *  Restricted rights to use, duplicate or disclose this code are
 *  granted through contract.
 *  
 */
/*
 *---------main_dat1_useBios.c---------
 * This example performs 1D and 2D data transfers iteratively using DAT module.
 * It also demostrates various types of 2D transfers.
 */
#include <stdio.h>
#include <std.h>
#include <swi.h>
#include <log.h>   
#include <clk.h>

#include <csl.h>
#include <csl_dat.h>
#include <csl_cache.h>

void SwiMainFunc(int arg0, int arg1);

extern far SWI_Obj SwiMain;
extern far LOG_Obj LogMain;

/*----------------------------------------------------------------------------*/
#pragma DATA_ALIGN(BuffA,128);
#pragma DATA_ALIGN(BuffB,128);
#pragma DATA_ALIGN(BuffC,128);

#define BUFFSZ 4096
static  Uint8 BuffA[BUFFSZ];
static  Uint8 BuffB[BUFFSZ];
static  Uint8 BuffC[BUFFSZ];

#pragma DATA_ALIGN(FillValue1,128);
#pragma DATA_ALIGN(FillValue2,128);
#pragma DATA_ALIGN(FillValue3,128);

static Uint32 FillValue1, FillValue2, FillValue3;
static  Uint32 success = TRUE;
static Uint32 Test1D();
static Uint32 Test2D();

/*----------------------------------------------------------------------------*/
void main() {

  /* Initialize the chip support library, required */
  CSL_init();
  
  LOG_printf(&LogMain,"<DAT>");

  /* Post main SWI to run */
  SWI_post(&SwiMain); 
  
} /* exit main and start scheduler */ 

/*----------------------------------------------------------------------------*/
void SwiMainFunc(int arg0, int arg1) {
  
  LOG_printf(&LogMain,"SwiMainFunc");
  
  success = success && Test1D();

  success = success && Test2D();
  
  LOG_printf(&LogMain,"Success = %d",success);
  LOG_printf(&LogMain,"<DONE>");
}

void printArray(Uint8 *a);

/*----------------------------------------------------------------------------*/
Uint32 Test1D() {

  volatile Uint32 XfrId,x,y,XfrId1,XfrId2;
  volatile Uint32 done = TRUE;
  
  LOG_printf(&LogMain,"Test1D");
  
  /* Clean out the buffers from cache (wrte back+invalidate) */
  CACHE_wbInvL2(BuffA, BUFFSZ, CACHE_WAIT);
  CACHE_wbInvL2(BuffB, BUFFSZ, CACHE_WAIT);
  CACHE_wbInvL2(BuffC, BUFFSZ, CACHE_WAIT);
  
  /* Before using the DAT module, we have to open it. This          */
  /* allocates a DMA channel for exclusive use by the DAT module.   */
  /* For this example, we will chose any available DMA channel. You */
  /* could just as well denote a specific channel.                  */
   DAT_open(DAT_CHAANY, DAT_PRI_HIGH, 0);
   
  FillValue1 = 0x00C0FFEE;                          /* Set the fill value          */
  FillValue2 = 0x12345678;                        /* Set the fill value          */
  FillValue3 = 0xFFFFFFFF;                        /* Set the fill value          */
  
  CACHE_wbL2(&FillValue1,4,CACHE_WAIT);            /* flush fill value from cache */
  CACHE_wbL2(&FillValue2,4,CACHE_WAIT);            /* flush fill value from cache */
  CACHE_wbL2(&FillValue3,4,CACHE_WAIT);            /* flush fill value from cache */
      
  /* loop for a while to ensure we do a large number of transfers */
  for (y=0; y<8 && done; y++) { 
  LOG_printf(&LogMain,"y= %d",y);
      
    XfrId = DAT_fill(BuffA,BUFFSZ,&FillValue1);     /* Perform the fill operation  */
    DAT_wait(XfrId);                               /* Wait for completion         */
    CACHE_wbInvL2(BuffA, BUFFSZ, CACHE_WAIT);  
	
    XfrId = DAT_fill(BuffB,BUFFSZ,&FillValue2);     /* Perform the fill operation  */
    DAT_wait(XfrId);                               /* Wait for completion         */
    CACHE_wbInvL2(BuffB, BUFFSZ, CACHE_WAIT);
        
    XfrId = DAT_fill(BuffC,BUFFSZ,&FillValue3);     /* Perform the fill operation  */
    DAT_wait(XfrId);                               /* Wait for completion         */
    CACHE_wbInvL2(BuffC, BUFFSZ, CACHE_WAIT);

    /* You will notice in the fill operations above that we waited for    */
    /* completion between them. This is because we pass the address       */
    /* of the FillValue variable to the function and this address is      */
    /* used as the source address of the DMA transfer. If the FillValue   */
    /* is modified in the middle of a fill operation, the fill will       */
    /* proceed using the new fill value instead of finishing up using     */
    /* original fill value. To prevent this, you must either wait until   */
    /* the previous fill completes or use different fill value variables. */
    
    /* You may want to view the buffers to verify the fill operations.  */
    /* Now that the buffers are initialized, let's swap buffers A and B */
    /* using buffer C as a temporary swap buffer.                       */
	XfrId = DAT_copy(BuffA,BuffC,BUFFSZ);  /* copy B -> C         */
    XfrId = DAT_copy(BuffB,BuffA,BUFFSZ);  /* copy A -> B         */
    XfrId = DAT_copy(BuffC,BuffB,BUFFSZ);  /* copy C -> A         */
    DAT_wait(DAT_XFRID_WAITALL);                      /* Wait for completion */
    	
    /* Now let's do a special series of copy operations that */
    /* weave the two buffers together.                       */
    for (x=0; x<BUFFSZ; x+=2) {
      XfrId = DAT_copy(BuffA,BuffB,x+1);
      XfrId = DAT_copy(BuffB,BuffA,x+2);
    }                                                          
  
    /* Wait until the last copy operation completes before continuing. */
    DAT_wait(DAT_XFRID_WAITALL);
    
    /* Clean out the buffers from cache (wrte back+invalidate) */
    CACHE_wbInvL2(BuffA, BUFFSZ, CACHE_WAIT);
    CACHE_wbInvL2(BuffB, BUFFSZ, CACHE_WAIT);
    
    /* Verification loop. If all of the above operations passed, */
    /* this loop will exit with 'success' to set 1.              */
    for (x=0; x<(512); x+=4) {
      if (*(Uint32*)(&BuffA[x]) != 0x0034FF78) {done=FALSE; break;}  
      if (*(Uint32*)(&BuffB[x]) != 0x0034FF78) {done=FALSE; break;}
      done = TRUE;
    }    
    
    /* Clean out the buffers from cache (wrte back+invalidate) */
    CACHE_wbInvL2(BuffA, BUFFSZ, CACHE_WAIT);
    CACHE_wbInvL2(BuffB, BUFFSZ, CACHE_WAIT);
    CACHE_wbInvL2(BuffC, BUFFSZ, CACHE_WAIT);
  }
   
  /* We're all done with the DAT module so we'll */
  /* close it. This frees up the DMA channel.    */
  DAT_close();

  return done;
}

/*----------------------------------------------------------------------------*/
Uint32 Test2D() {

  volatile Uint32   XfrId,x,i,j,y;
  volatile Uint32   done = TRUE;
  
  LOG_printf(&LogMain,"Test2D");
  
  /* Clean out the buffers from cache (write back+invalidate) */
  CACHE_wbInvL2(BuffA, BUFFSZ, CACHE_WAIT);
  CACHE_wbInvL2(BuffB, BUFFSZ, CACHE_WAIT);
  
  /* Before using the DAT module, we have to open it. This          */
  /* allocates a DMA channel for exclusive use by the DAT module.   */
  /* For this example, we will chose any available DMA channel. You */
  /* could just as well denote a specific channel.                  */
  DAT_open(DAT_CHAANY, DAT_PRI_HIGH, DAT_OPEN_2D);
  
  /* loop for a while to ensure we do a large number of transfers */
  for (y=0; y<32 && done; y++) {
  LOG_printf(&LogMain,"y= %d",y);
    /* Initialize Buffers */
    for (x=0; x<BUFFSZ; x+=4) {
      *(Uint32*)(&BuffA[x]) = x>>2;
      *(Uint32*)(&BuffB[x]) = 0xFFFFFFFF;
    }

    /* Clean out the buffers from cache (write back+invalidate) */
    CACHE_wbInvL2(BuffA, BUFFSZ, CACHE_WAIT);
  	CACHE_wbInvL2(BuffB, BUFFSZ, CACHE_WAIT);
    
    /* Loop for different block sizes */
    for (x=8; x>0; x--) {
  
      /* series of 1D to 2D copies */
      for (j=0; j<4; j++) {
        for (i=0; i<4; i++) {
          DAT_copy2d(DAT_1D2D,BuffA+(x*x*(i+4*j)),BuffB+(4*x*x*j+x*i),x,x,4*x);
        }
      }
    
      /* series of 2D to 2D copies */
      for (j=0; j<4; j++) {
        for (i=0; i<4; i++) {
          DAT_copy2d(DAT_2D2D,BuffB+(4*x*x*j+x*i),BuffA+(4*x*x*j+x*i),x,x,4*x);
        }
      }
    
      /* series of 2D to 1D copies */
      for (j=0; j<4; j++) {
        for (i=0; i<4; i++) {
          DAT_copy2d(DAT_2D1D,BuffA+(4*x*x*j+x*i),BuffB+(x*x*(i+4*j)),x,x,4*x);
        }
      } 
    
      /* copy B back to A */
      XfrId = DAT_copy(BuffB,BuffA,4*x*x*4);
    }
  
    /* wait for final transfer to complete before checking results */
    DAT_wait(XfrId);
  	
  	CACHE_wbInvL2(BuffA, BUFFSZ, CACHE_WAIT);
  	CACHE_wbInvL2(BuffB, BUFFSZ, CACHE_WAIT);
    
    /* Check results */
    for (x=0; x<BUFFSZ; x+=4) {
      if (*(Uint32*)(&BuffA[x]) != x>>2) {done = FALSE; break;}
    }    

    /* Clean out the buffers from cache (write back+invalidate) */
    CACHE_wbInvL2(BuffA, BUFFSZ, CACHE_WAIT);
  	CACHE_wbInvL2(BuffB, BUFFSZ, CACHE_WAIT);
  }  

  /* We're all done with the DAT module so we'll */
  /* close it. This frees up the DMA channel.    */
  DAT_close();

  return done;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区日本| 日韩一区二区高清| 国产精品久久久久久久蜜臀 | 久久久久综合网| 亚洲成av人片www| 欧美午夜精品电影| 亚洲国产乱码最新视频| 欧美日韩电影一区| 亚洲18影院在线观看| 欧美日韩极品在线观看一区| 一区二区三区在线看| 在线观看视频一区二区欧美日韩| 成人欧美一区二区三区视频网页 | 粉嫩aⅴ一区二区三区四区五区| 久久久高清一区二区三区| 国产一区二区精品久久| 国产欧美精品一区二区三区四区 | 波多野结衣精品在线| 欧美激情中文字幕| 国产激情91久久精品导航| 国产农村妇女毛片精品久久麻豆| 99r国产精品| 亚洲精品一卡二卡| 91精品免费观看| 国产一区二区三区四区五区美女 | 91蜜桃网址入口| 亚洲最色的网站| 国产精品一区二区久久精品爱涩| 国产精品欧美一区喷水| 一本大道久久a久久综合| 国产精品久久夜| 色综合视频一区二区三区高清| 亚洲成人av一区| 7777精品伊人久久久大香线蕉经典版下载 | 国产做a爰片久久毛片| 亚洲国产激情av| 91久久国产综合久久| 免费精品视频最新在线| 国产亚洲一区二区三区四区| 波多野结衣在线aⅴ中文字幕不卡| 国产校园另类小说区| 色婷婷久久99综合精品jk白丝| 一区二区三区日韩| 久久亚区不卡日本| 日本国产一区二区| 麻豆精品在线视频| 综合久久给合久久狠狠狠97色| 91国偷自产一区二区三区成为亚洲经典| 午夜欧美2019年伦理| 国产亚洲欧美激情| 69堂精品视频| 北条麻妃国产九九精品视频| 日韩高清不卡一区二区三区| 国产精品免费aⅴ片在线观看| 欧美私人免费视频| 成人亚洲精品久久久久软件| 亚洲欧美影音先锋| 日韩精品一区二区三区在线播放 | a级精品国产片在线观看| 亚洲v精品v日韩v欧美v专区 | 国产午夜精品一区二区三区嫩草| 欧美性欧美巨大黑白大战| 奇米色777欧美一区二区| 亚洲乱码国产乱码精品精可以看 | 亚洲男人的天堂在线aⅴ视频| 欧美片网站yy| 91麻豆免费看片| jlzzjlzz亚洲日本少妇| 国产剧情一区在线| 国产一区二区毛片| 国产一区二区免费在线| 激情综合一区二区三区| 老司机一区二区| 久久99精品视频| 国产一区二区精品久久| 国产乱理伦片在线观看夜一区| 久久精品999| 经典三级一区二区| 国产呦精品一区二区三区网站| 久久99精品视频| 韩国精品久久久| 国产成人av电影在线观看| 成人一区二区三区在线观看 | 麻豆精品在线看| 久久精品国产一区二区三区免费看| 日韩va亚洲va欧美va久久| 日韩精品一二区| 久久99国产精品免费网站| 国内精品视频666| 成人免费高清在线观看| av网站一区二区三区| 91成人免费在线视频| 香蕉久久夜色精品国产使用方法 | 亚瑟在线精品视频| 日韩理论片网站| 欧美一级二级在线观看| 精品人在线二区三区| 亚洲精品va在线观看| 国产中文一区二区三区| 欧美美女喷水视频| 亚洲国产岛国毛片在线| 蜜臀av亚洲一区中文字幕| 色噜噜偷拍精品综合在线| 久久久久久麻豆| 日本视频在线一区| 色欧美日韩亚洲| 国产精品美女久久久久久2018| 日本中文字幕一区二区视频 | 欧美日韩国产高清一区| 亚洲欧洲性图库| 国产精品一区二区三区四区 | 欧美一区二区大片| 亚洲成人动漫精品| 色国产综合视频| 国产精品久久久久久久久免费丝袜 | 免费观看在线综合| 欧美色倩网站大全免费| 亚洲男同性恋视频| 91亚洲国产成人精品一区二三| 久久久精品tv| 国产麻豆精品一区二区| 精品国产91洋老外米糕| 免费高清在线一区| 日韩一区二区免费在线电影| 三级精品在线观看| 欧美精品久久99| 日韩 欧美一区二区三区| 欧美日韩精品一区二区三区| 亚洲小说欧美激情另类| 欧美主播一区二区三区| 亚洲综合在线免费观看| 色狠狠一区二区三区香蕉| 伊人夜夜躁av伊人久久| 色哦色哦哦色天天综合| 亚洲男人天堂av| 91成人网在线| 亚洲成av人片一区二区梦乃 | 色素色在线综合| 亚洲精品乱码久久久久久久久 | 首页国产欧美日韩丝袜| 欧美乱妇23p| 麻豆91在线播放免费| 久久综合九色综合97婷婷女人 | 日韩av高清在线观看| 日韩一区二区三区免费观看| 蜜臀av一区二区在线观看| 欧美精品一区二区在线观看| 国产福利不卡视频| 成人免费一区二区三区在线观看| 91小视频在线免费看| 一区二区久久久久久| 欧美美女一区二区| 久久99精品一区二区三区三区| 久久久噜噜噜久噜久久综合| 岛国一区二区在线观看| 亚洲男同性恋视频| 91精品国产福利| 国产精品综合av一区二区国产馆| 中文在线资源观看网站视频免费不卡| 成人免费毛片片v| 亚洲妇熟xx妇色黄| 日韩亚洲欧美成人一区| 国产成人av电影在线| 一区二区视频免费在线观看| 91精品国产色综合久久久蜜香臀| 狠狠色丁香九九婷婷综合五月| 国产精品网友自拍| 欧美色手机在线观看| 国产一区二区三区电影在线观看| 亚洲欧洲国产日韩| 欧美精品日韩精品| 国产精品一区二区无线| 一区二区三区在线观看欧美| 日韩欧美国产一区在线观看| 成人不卡免费av| 婷婷开心久久网| 国产精品午夜电影| 欧美福利视频导航| www.亚洲免费av| 蜜臀久久99精品久久久久久9| 国产精品亲子伦对白| 宅男在线国产精品| 丁香天五香天堂综合| 午夜国产不卡在线观看视频| 国产欧美日韩综合精品一区二区| 欧美亚洲国产一区二区三区va | av电影天堂一区二区在线| 午夜欧美电影在线观看| 国产精品伦理在线| 日韩欧美一区二区久久婷婷| 色综合天天综合给合国产| 蜜臀国产一区二区三区在线播放| 国产精品久久久久9999吃药| 日韩精品综合一本久道在线视频| www.66久久| 国产精品99久久久久久似苏梦涵| 亚洲国产你懂的| 亚洲人被黑人高潮完整版| 精品久久久三级丝袜| 欧美性受xxxx黑人xyx|