⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 transfer.c

📁 用于TM1300/PNX1300系列DSP(主要用于视频处理)的协处理器的源码。
💻 C
字号:
/*
 *  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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -