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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mvp_dma.c

?? 新買的書
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*
* File: MVPdma.c
*
* Author: Elliot Hill
*
* Description: This file contains all of the functions used
* for DMA control within the Mobile Videophone (MVP)
* thesis project in the University of Queensland.
*
* Last Modified: 2 October 2001
*/
#include "MVP_dma.h"
/*
* The variables used for the video input DMA.
*/
static volatile uint dma_video_prim_ctrl = 0;
static volatile uint dma_video_sec_ctrl = 0;
static volatile uint dma_video_tcnt = 0;
static volatile uint dma_gcra = 0;
static volatile uint dma_gndxa = 0;
/*
* The variables used for the audio input DMA
*/
static volatile uint dma_audio_prim_ctrl = 0;
static volatile uint dma_audio_sec_ctrl = 0;
static volatile uint dma_audio_tcnt = 0;
/*
* The variables used for the data input DMA
*/
static volatile uint dma_data_prim_ctrl = 0;
static volatile uint dma_data_sec_ctrl = 0;
static volatile uint dma_data_tcnt = 0;
/*
* The variables used for internal data transfer DMA
*/
static volatile uint dma_int_data_prim_ctrl = 0;
static volatile uint dma_int_data_sec_ctrl = 0;
static volatile uint dma_int_data_tcnt = 0;
static volatile uint dma_int_data_src_addr = 0;
static volatile uint dma_int_data_dst_addr = 0;
static volatile uint dma_gcrb = 0;
static volatile uint dma_gndxb = 0;
/*
* Data structures for the holding of data received through the
* serial port
*/
static uint datarecaddr;
static float *datastorage = (float *)DATASTORAGEADDR;
/*
* Global data structures used for the video data address for storage, and the
* audio data address.
*/
uint vid_addr_global;
uint aud_addr_global;
/*
* initialise_DMA() -
*
* This function initialises the DMA for the different sections
* of the MVP.
*/
int initialise_DMA(uint vid_addr0, uint aud_addr)
{
/*
* The first thing needed to be done is to reset the DMA, and disable
* the interrupt system.
*/
dma_reset();
intr_init();
INTR_GLOBAL_DISABLE();
/*
* copy the video and audio addresses over to the global address for each,
* to be used when refreshing.
*/
vid_addr_global = vid_addr0;
aud_addr_global = aud_addr;
/*
* Map the various interrupts generated by the board to
* the CPU.
*/
intr_map(CPU_INT7,ISN_EXT_INT7);
intr_map(CPU_INT8,ISN_DMA_INT0);
intr_map(CPU_INT9,ISN_DMA_INT1);
intr_map(CPU_INT10, ISN_DMA_INT2);
/*
* The interrupts now need to be hooked to the various
* Interrupt Service Routines (ISRs).
*/
intr_hook(start_video_transfer,CPU_INT7);
intr_hook(refresh_video_DMA,CPU_INT8);
intr_hook(refresh_audio_DMA,CPU_INT9);
intr_hook(refresh_and_manip_data_DMA,CPU_INT10);
/*
* Now that our interrupt system is hooked, we can set up the
* DMA for our system.
*
* Video:
* - The source address does not increment after transfer
* - The destination address is loaded from the index
* register. This is due to the need to increment by 32-bits
* after transfer.
* - The TCINT, PRI and RSYNC bits must be set.
*/
LOAD_FIELD(&dma_video_prim_ctrl, DMA_ADDR_NO_MOD, SRC_DIR, SRC_DIR_SZ);
LOAD_FIELD(&dma_video_prim_ctrl, DMA_ADDR_INDX, DST_DIR, DST_DIR_SZ);
LOAD_FIELD(&dma_video_prim_ctrl, SEN_TINT1, RSYNC, RSYNC_SZ);
SET_BIT(&dma_video_prim_ctrl,TCINT);
SET_BIT(&dma_video_prim_ctrl,PRI);
/*
* The only bit of the video dma's secondary register that must
* be set is the block interrupt enable.
*/
SET_BIT(&dma_video_sec_ctrl,BLOCK_IE);
/*
* Setting up the transfer count registers:
*
* Video:
* - 125 lines in the image, with 144 pixels/line (VHDL generated)
*
*/
LOAD_FIELD(&dma_video_tcnt, FRAMES_PER_BLOCK, FRAME_COUNT,
FRAME_COUNT_SZ);
LOAD_FIELD(&dma_video_tcnt, NUM_ELEMENTS, ELEMENT_COUNT,
ELEMENT_COUNT_SZ);
/*
* Setting up the required gcra, gndxa (Video) registers for use
* within the dma_global_init function.
*/
LOAD_FIELD(&dma_gcra, FRAMES_PER_BLOCK, FRAME_COUNT_RELOAD,
FRAME_COUNT_RELOAD_SZ);
LOAD_FIELD(&dma_gcra, NUM_ELEMENTS, ELEMENT_COUNT_RELOAD,
ELEMENT_COUNT_RELOAD_SZ);
LOAD_FIELD(&dma_gndxa, 0x0004, ELEMENT_COUNT_RELOAD,
ELEMENT_COUNT_RELOAD_SZ);
/*
* setup the DMA global init for the video transfer
*/
dma_global_init(
0x0, // aux control reg
dma_gcra, // multiframe video transfers
dma_gcrb, // global count reload B - used in internal transfers.
dma_gndxa, // programmable index for reloading video dst addresses
dma_gndxb, // global index reg B
0x0, // global addr register A - not used
0x0, // global addr register B - not used
0x0, // global addr register C - not used
0x0); // global addr register D - not used
/*
* Audio:
* - The length of a read is 32 bits
* - Destination address is incremented
* - DMA is given priority over CPU
* - RSYNC triggers an interrupts when the McBSP port gets
* data.
* - The Interrupts system for DMA is enabled.
*/
LOAD_FIELD(&dma_audio_prim_ctrl, DMA_ESIZE32, ESIZE, ESIZE_SZ);
LOAD_FIELD(&dma_audio_prim_ctrl, DMA_ADDR_INC, DST_DIR, DST_DIR_SZ);
LOAD_FIELD(&dma_audio_prim_ctrl, DMA_DMA_PRI, PRI, 1);
LOAD_FIELD(&dma_audio_prim_ctrl, SEN_REVT0, RSYNC, RSYNC_SZ);
SET_BIT(&dma_audio_prim_ctrl,TCINT);
/*
* Setting up the Secondary control register for the Audio subsection.
* In this area, we will only need one thing, and that is the ability
* to set and clear the BLOCK_IE (block complete interrupts) so we know
* when to refresh.
*/
SET_BIT(&dma_audio_sec_ctrl, BLOCK_IE);
/*
* Now setting the Transfer count register:
*
* Audio:
* - Element length of 4000 (0.5 seconds worth)
*/
LOAD_FIELD(&dma_audio_tcnt, 1, FRAME_COUNT, FRAME_COUNT_SZ);
LOAD_FIELD(&dma_audio_tcnt, AUD_ELEM_NUM, ELEMENT_COUNT,
ELEMENT_COUNT_SZ);
/*
* Serial Data Transfer Configuration:
* - DMA has priority over CPU
* - Incrementing of Destination address automatically
* - No modification to the source address
* - No DMA interrupts on writing, but trigger one on
* reception
* - 16 bit element size
* - Ability for dma channel to interrupt the CPU
*/
LOAD_FIELD(&dma_data_prim_ctrl, DMA_DMA_PRI, PRI, 1);
LOAD_FIELD(&dma_data_prim_ctrl, DMA_ADDR_NO_MOD, SRC_DIR, SRC_DIR_SZ);
LOAD_FIELD(&dma_data_prim_ctrl, DMA_ADDR_INC, DST_DIR, DST_DIR_SZ);
LOAD_FIELD(&dma_data_prim_ctrl, SEN_REVT0, RSYNC, RSYNC_SZ);
LOAD_FIELD(&dma_data_prim_ctrl, SEN_NONE, WSYNC, WSYNC_SZ);
LOAD_FIELD(&dma_data_prim_ctrl, DMA_ESIZE16, ESIZE, ESIZE_SZ);
SET_BIT(&dma_data_prim_ctrl, TCINT);
// Casting the address of our receive data
datarecaddr = (unsigned int)UARTRECADDR;
/*
* Secondary control register setup for Serial data
*/
SET_BIT(&dma_data_sec_ctrl, BLOCK_IE);
/*
* Serial Data transfer counter setup
*/
LOAD_FIELD(&dma_data_tcnt, 1, FRAME_COUNT, FRAME_COUNT_SZ);
LOAD_FIELD(&dma_data_tcnt, DATA_ELEM_NUM, ELEMENT_COUNT,
ELEMENT_COUNT_SZ);
/*
* Program the auxiliary control register.
*/
SET_BIT(DMA_AUXCR_ADDR,AUXPRI);
/*
* Initialising the DMA video channel with the registers
* altered above.
*/
dma_init(
VIDEO_DMA, // DMA Channel 0
dma_video_prim_ctrl, // Primary control register
dma_video_sec_ctrl, // Secondary control register
DMA_VIDEO_SRC_ADDR, // defined in MVPdma.h
vid_addr_global, // destination address 0
dma_video_tcnt); // transfer counter register
/*
* Initialising the Audio DMA controller
*/
dma_init(
AUDIO_DMA,
dma_audio_prim_ctrl,
dma_audio_sec_ctrl,
MCBSP_DRR_ADDR(1),
aud_addr_global,
dma_audio_tcnt);
/*
* Initialising the Serial Data DMA controller
*/
dma_init(
DATA_DMA,
dma_data_prim_ctrl,
dma_data_sec_ctrl,
MCBSP_DRR_ADDR(0),
datarecaddr,
dma_data_tcnt);
/*
* Initialising and starting the Timer 1
*/
TIMER_INIT(1, 0x100, 0x1, 0);
TIMER_START(0);
/*
* Audio -
*
* Enable the receive and transmit registers, and also
* set the frame sync generator to pulse after 8 CLKG pulses.
*/
SET_BIT(MCBSP_SPCR_ADDR(1), RRST);
SET_BIT(MCBSP_SPCR_ADDR(1), XRST);
SET_BIT(MCBSP_SPCR_ADDR(1), FRST);
/*
* Serial Data -
*
* Enable the receive and transmit registers, and also
* set the frame sync generator (not required for external
* functionality).
*/
SET_BIT(MCBSP_SPCR_ADDR(0), RRST);
SET_BIT(MCBSP_SPCR_ADDR(0), XRST);
SET_BIT(MCBSP_SPCR_ADDR(0), FRST);
/*
* Enable the interrupts
*/
INTR_ENABLE(CPU_INT_NMI);
INTR_ENABLE(CPU_INT7);
INTR_ENABLE(CPU_INT8);
INTR_ENABLE(CPU_INT9);
INTR_ENABLE(CPU_INT10);
INTR_GLOBAL_ENABLE(); // sets the GIE in the CSR register
XCTRL0_HIGH(); // Enable interrupt signal generation on the board.
return 0;
}
/*
* refresh_video_DMA() -
*
* This function refreshes the video_DMA control and transfer counter registers.
*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久户外露出| 国产一区美女在线| 色乱码一区二区三区88| 日韩 欧美一区二区三区| 久久久久99精品一区| 色综合 综合色| 欧美高清在线视频| 国产精品亚洲视频| 日韩国产在线一| 日本伊人午夜精品| 国产欧美综合在线观看第十页| 一区二区三区四区蜜桃| 国产suv一区二区三区88区| 欧洲国产伦久久久久久久| 粉嫩一区二区三区性色av| 亚洲综合色噜噜狠狠| 日韩久久精品一区| 69堂亚洲精品首页| av电影天堂一区二区在线| 国产成a人亚洲| 日韩av高清在线观看| 亚洲另类在线一区| 最新国产精品久久精品| 久久久久久**毛片大全| 精品少妇一区二区三区视频免付费 | 91精品欧美综合在线观看最新| 成年人网站91| 成人黄色软件下载| 成人app网站| 99久久99久久精品免费看蜜桃| 国产99久久久精品| av电影在线观看完整版一区二区| 99久久婷婷国产| 欧美午夜片在线观看| 日韩一级高清毛片| 欧美激情在线一区二区三区| 亚洲日本va在线观看| 亚洲123区在线观看| 久久99国产精品久久| 成人午夜在线播放| 精品亚洲国产成人av制服丝袜| 久久国产成人午夜av影院| 99久久99精品久久久久久| 九九国产精品视频| 粉嫩av一区二区三区在线播放 | 99视频一区二区| 99国产精品久久久久久久久久久| 欧美日韩一本到| 欧美v亚洲v综合ⅴ国产v| 国产欧美一区二区精品秋霞影院 | 99久久精品情趣| 国产精一品亚洲二区在线视频| 国产成人精品在线看| 91黄色免费看| 久久新电视剧免费观看| 亚洲自拍偷拍欧美| 亚洲男同性恋视频| 亚洲超碰97人人做人人爱| 国产精品久久久久久福利一牛影视 | 日本欧美一区二区在线观看| 欧美成人女星排名| 精品国内二区三区| 日韩久久精品一区| 自拍偷拍国产精品| 免费精品视频在线| 91首页免费视频| 欧美变态tickle挠乳网站| 中文字幕亚洲欧美在线不卡| 日韩av电影一区| 99re这里都是精品| 精品精品国产高清一毛片一天堂| 亚洲乱码国产乱码精品精小说 | 久久久久久电影| 亚洲欧美日韩国产另类专区| 国产精品123区| 91网站视频在线观看| 日韩女优av电影在线观看| 一区二区三区国产精品| 欧美视频在线观看一区| 国产精品久久久久久久久果冻传媒| 欧美无人高清视频在线观看| 88在线观看91蜜桃国自产| 国产一区二区在线看| 亚洲综合视频在线| 国产精品久久久久久久久晋中| 欧美日韩dvd在线观看| www.性欧美| 狂野欧美性猛交blacked| 精品91自产拍在线观看一区| 日韩中文字幕麻豆| 精品sm在线观看| 国内精品第一页| 日韩欧美色综合| 波多野结衣中文字幕一区| 亚洲精品一线二线三线无人区| 欧美午夜免费电影| 亚洲免费伊人电影| k8久久久一区二区三区| 国产亚洲欧美中文| 久久99精品国产麻豆不卡| 欧美精品高清视频| 午夜视频在线观看一区二区| 欧美性色黄大片| 亚洲电影在线播放| 91高清视频在线| 夜夜夜精品看看| 欧美日韩综合在线| 午夜免费欧美电影| 欧美精品 国产精品| 亚洲大型综合色站| 欧美三区在线观看| 亚洲一区二区3| 91色|porny| 亚洲激情av在线| 欧美综合久久久| 亚洲一区免费视频| 99久久精品免费看国产免费软件| 最新热久久免费视频| 色久综合一二码| 午夜伊人狠狠久久| 欧美一区二区三区白人| 国产制服丝袜一区| 国产日产亚洲精品系列| 国产传媒日韩欧美成人| 中文字幕第一区综合| 99国产精品视频免费观看| 亚洲视频图片小说| 欧美日韩在线一区二区| 亚洲一区二区偷拍精品| 亚洲另类春色国产| 亚洲五月六月丁香激情| 欧美挠脚心视频网站| 天堂av在线一区| 欧美大片顶级少妇| 亚洲免费观看高清| 久久国产三级精品| 免费在线成人网| 国产亚洲成av人在线观看导航| 高清在线成人网| 亚洲日本成人在线观看| 欧美日韩精品系列| 激情伊人五月天久久综合| 国产欧美日韩三区| 在线观看视频一区| 久久福利视频一区二区| 国产精品沙发午睡系列990531| 91蝌蚪国产九色| 欧美a级理论片| 日本一区二区三级电影在线观看| 色美美综合视频| 久久99最新地址| 亚洲日本在线a| 日韩精品一区国产麻豆| 本田岬高潮一区二区三区| 亚洲电影欧美电影有声小说| 久久精品欧美一区二区三区不卡 | 国产一区二区三区精品欧美日韩一区二区三区 | 日本欧美在线看| 国产精品欧美一级免费| 欧美日韩一区国产| 国产精品91xxx| 亚洲丶国产丶欧美一区二区三区| 日韩免费视频线观看| 97久久精品人人做人人爽| 日本美女一区二区| 国产精品久久久久毛片软件| 欧美午夜视频网站| 国产福利一区二区三区视频在线 | 亚洲视频你懂的| 精品国产人成亚洲区| 色婷婷综合久久久久中文一区二区 | 亚洲无线码一区二区三区| 精品久久久久久综合日本欧美| 91视频一区二区三区| 久草精品在线观看| 亚洲精品国产一区二区三区四区在线 | 欧美性色aⅴ视频一区日韩精品| 国产黄人亚洲片| 秋霞av亚洲一区二区三| 亚洲手机成人高清视频| 精品噜噜噜噜久久久久久久久试看 | 青青青爽久久午夜综合久久午夜| 日日夜夜精品视频免费| 欧美性猛交一区二区三区精品| 国产中文一区二区三区| 亚洲一区二区视频在线| 欧洲激情一区二区| 日韩精品免费视频人成| 精品久久久三级丝袜| 99久久99久久精品国产片果冻| 亚洲午夜av在线| 久久免费美女视频| 色综合久久88色综合天天6| 午夜一区二区三区视频| 久久久久久久久伊人| 久久超碰97中文字幕| 久久婷婷国产综合国色天香| 精品一区二区三区的国产在线播放| 在线视频国内一区二区| 欧美成人女星排行榜|