transfer.c
来自「用于TM1300/PNX1300系列DSP(主要用于视频处理)的协处理器的源码。」· C语言 代码 · 共 76 行
C
76 行
/*
* COPYRIGHT (c) 1995,2000 TriMedia Technologies Inc.
*
* +-----------------------------------------------------------------+
* | THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED |
* | AND COPIED IN ACCORDANCE WITH THE TERMS AND CONDITIONS OF SUCH |
* | A LICENSE AND WITH THE INCLUSION OF THE THIS COPY RIGHT NOTICE. |
* | THIS SOFTWARE OR ANY OTHER COPIES OF THIS SOFTWARE MAY NOT BE |
* | PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. THE |
* | OWNERSHIP AND TITLE OF THIS SOFTWARE IS NOT TRANSFERRED. |
* +-----------------------------------------------------------------+
*
* Module name : transfer.c 1.2
*
* Module type : IMPLEMENTATION
*
* Title : Interprocessor data streaming
*
* Author : Juul van der Spek
*
* Last update : 13:45:59 - 00/06/19
*
* Description :
*
* This module contains a function which
* copies data from a PCI address to a local
* buffer in SDRAM using DMA.
*
* Because cache invalidations of the local
* buffer are required, it is required to
* be allocated using function _cache_malloc.
*/
/* ------------------------------------------------------ */
#include "tm1/tmDMA.h"
/* ------------------------------------------------------ */
static Int dma_instance;
static Bool dma_opened= False;
void transfer( Char *local, Char *remote, Int size )
{
dmaRequest_t request;
if (!dma_opened) {
dmaOpen(&dma_instance);
dma_opened= True;
}
request.slack_function = Null;
request.completion_function = Null;
request.nr_of_descriptions = 1;
request.mode = dmaSynchronous;
request.done = False;
request.descriptions->direction = dmaPCI_TO_SDRAM;
request.descriptions->source = remote;
request.descriptions->destination = local;
request.descriptions->length = size;
request.descriptions->nr_of_transfers = 1;
dmaDispatch(dma_instance, &request);
_cache_invalidate(local,size);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?