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

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

?? mvp_dma.c

?? 利用Ti公司的TMSvc320c6711開發板的基礎上搭建的移動視頻電話系統。程序中主要實現3個功能:實時捕捉視頻和音頻數據;能夠對視頻和音頻數據進行解碼和存儲;能夠通過GPRS通信口傳輸音/視頻壓縮
?? 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一区二区三区免费野_久草精品视频
91麻豆精品国产91久久久使用方法| 久久99最新地址| 成人污视频在线观看| 欧美成人一区二区三区片免费| 日韩精品电影在线| 日韩欧美激情在线| 黑人巨大精品欧美黑白配亚洲 | 国产风韵犹存在线视精品| 久久一夜天堂av一区二区三区| 精品无人区卡一卡二卡三乱码免费卡 | 国产欧美一区二区精品忘忧草| 国产自产高清不卡| 国产精品国产馆在线真实露脸| 99视频一区二区| 亚洲大片免费看| 精品久久一区二区| av亚洲精华国产精华精| 亚洲欧美日韩久久| 欧美一区二区三区男人的天堂| 久久91精品久久久久久秒播| 蜜臀国产一区二区三区在线播放| 精品久久免费看| 91在线视频观看| 蜜臀av一区二区| 国产精品视频第一区| 在线免费不卡视频| 国产自产v一区二区三区c| 亚洲同性gay激情无套| 91精品国产日韩91久久久久久| 国产一区二区不卡| 悠悠色在线精品| 久久免费的精品国产v∧| 91视频在线观看免费| 免费高清在线视频一区·| 国产精品久久一卡二卡| 欧美喷水一区二区| 成人av一区二区三区| 婷婷久久综合九色综合伊人色| 久久久久久久久免费| 日本道精品一区二区三区| 韩国成人福利片在线播放| 一区二区三区在线免费观看| 精品免费视频一区二区| 欧美在线啊v一区| 国产精品一卡二卡在线观看| 午夜伦理一区二区| 亚洲欧美在线视频| 国产婷婷色一区二区三区| 一区二区三区中文字幕电影| 日韩视频免费观看高清完整版 | 亚洲一区二区在线观看视频 | 一区二区三区在线免费观看| 久久欧美一区二区| 91精品国产福利| 色噜噜狠狠色综合中国| 国产一区二区三区国产| 无吗不卡中文字幕| 亚洲激情在线播放| 中文字幕亚洲一区二区av在线| 日韩一区二区三区精品视频| 在线看日韩精品电影| 99在线视频精品| 国产大陆a不卡| 韩国女主播成人在线| 日韩高清在线一区| 亚洲成人黄色影院| 亚洲国产精品久久久久秋霞影院 | 久久网站最新地址| 日韩精品影音先锋| 6080国产精品一区二区| 欧美性大战久久久久久久蜜臀| eeuss鲁片一区二区三区| 高清国产午夜精品久久久久久| 免费成人在线观看视频| 日韩国产在线观看| 免费观看日韩av| 免费在线看一区| 日本女人一区二区三区| 日韩一区精品视频| 日本不卡一二三区黄网| 日韩在线观看一区二区| 日日噜噜夜夜狠狠视频欧美人| 一级中文字幕一区二区| 亚洲国产成人av网| 日韩国产精品91| 久久成人久久鬼色| 国产麻豆成人传媒免费观看| 国产伦精品一区二区三区在线观看| 激情欧美一区二区| 国产91富婆露脸刺激对白| 成人性生交大片免费看在线播放| 国产不卡在线一区| av电影一区二区| 在线观看国产精品网站| 欧美日韩在线电影| 欧美大片免费久久精品三p| 日韩你懂的在线播放| 久久九九全国免费| 中文字幕一区不卡| 亚洲第一主播视频| 毛片av中文字幕一区二区| 国模大尺度一区二区三区| 高清久久久久久| 欧洲精品在线观看| 日韩精品中文字幕一区| 欧美国产在线观看| 亚洲自拍偷拍网站| 美女免费视频一区| 不卡在线视频中文字幕| 在线免费视频一区二区| 日韩精品一区二区三区中文不卡 | 粉嫩绯色av一区二区在线观看 | 欧美日韩国产天堂| 欧美一区二区二区| 国产精品久久久久久亚洲毛片 | 日本道在线观看一区二区| 91精品国产综合久久精品性色| 欧美成人官网二区| 亚洲欧洲精品一区二区三区不卡| 亚洲一区二区三区影院| 极品少妇xxxx偷拍精品少妇| 99久久精品免费看国产免费软件| 欧美日韩精品一区二区在线播放| 26uuu色噜噜精品一区| 亚洲免费观看高清| 精品一区二区日韩| 91九色最新地址| 国产亚洲福利社区一区| 亚洲国产成人av| 不卡欧美aaaaa| 欧美xxxx老人做受| 一区二区三区四区视频精品免费| 精品在线播放免费| 日本高清视频一区二区| 久久久.com| 日本女人一区二区三区| 91麻豆国产精品久久| 久久久美女毛片| 日韩精品91亚洲二区在线观看| 播五月开心婷婷综合| 日韩你懂的电影在线观看| 亚洲精品美国一| 成人免费观看视频| 精品福利一二区| 日韩激情一二三区| 欧美三区在线观看| 国产精品乱码一区二三区小蝌蚪| 久久国产精品免费| 91精品综合久久久久久| 亚洲激情图片qvod| 91在线视频观看| 欧美激情一区二区在线| 韩国理伦片一区二区三区在线播放| 欧美三级中文字幕| 一区二区三区在线高清| 成人激情图片网| 中文字幕av一区 二区| 国产一区二区三区四| 日韩欧美国产综合在线一区二区三区| 亚洲一线二线三线视频| 91亚洲永久精品| 一区免费观看视频| 成人国产亚洲欧美成人综合网| 久久亚洲春色中文字幕久久久| 久久不见久久见免费视频1| 欧美巨大另类极品videosbest| 亚洲成人一区二区在线观看| 色婷婷国产精品综合在线观看| 国产精品麻豆视频| 99久久精品一区二区| 国产精品久久久久久久岛一牛影视 | 久久99精品国产.久久久久| 欧美一区二区三区啪啪| 日本不卡在线视频| 日韩一级大片在线观看| 美女视频黄 久久| 精品成人在线观看| 国产精品99久久久久久有的能看| 久久精品亚洲乱码伦伦中文| 国产精品一区在线| 国产精品美女一区二区三区| 99国产精品久久久久久久久久久| 亚洲三级免费观看| 欧美视频在线观看一区| 日韩精品免费专区| 精品播放一区二区| 成人av免费观看| 亚洲精品视频一区二区| 欧美伦理电影网| 久久国产免费看| 国产精品美女久久久久高潮| 波多野结衣欧美| 亚洲国产精品尤物yw在线观看| 91精品欧美福利在线观看| 狠狠色综合播放一区二区| 中文字幕日韩av资源站| 欧美无砖专区一中文字| 激情图片小说一区| 亚洲男人都懂的| 欧美成人a视频|