/** * @brief Memory copy funtion * @param "void *Des" : destination address * @param "void *Src" : source address * @param "int size" : size * @return 0 : success ; -1 : fail */ int CacheMng_MemCpy( void *Des, void *Src, int size ) { if( Des == NULL || Src == NULL ) { return CACHE_PARM_ERR; } #if CACHEMNG_DMA DRV_DmaCopy1D copy1D; Sem_lock( STREAM_SEM_CACHECPY); copy1D.srcPhysAddr = (unsigned long)DRV_dmaGetPhysAddr((unsigned long)Src); copy1D.dstPhysAddr = (unsigned long)DRV_dmaGetPhysAddr((unsigned long)Des); copy1D.size = size; DRV_dmaCopy1D(&dmaHndl, ©1D, 1); Sem_unlock( STREAM_SEM_CACHECPY); #else memcpy( Des, Src , size ); #endif return 0; }
/** * @brief Do memory copy * @param "void *pDes" : destination address * @param "void *pSrc" : source address * @param "int size" : size * @return 0 : success ; others : fail */ int MemMng_memcpy(void *pDes, void *pSrc, int size ) { #if MEMMNG_DMA DRV_DmaCopy1D copy1D; Sem_lock( STREAM_SEM_MEMCPY); copy1D.srcPhysAddr = (unsigned long)DRV_dmaGetPhysAddr((unsigned long)pSrc); copy1D.dstPhysAddr = (unsigned long)DRV_dmaGetPhysAddr((unsigned long)pDes); copy1D.size = size ; DRV_dmaCopy1D(&dmaHndl, ©1D, 1); Sem_unlock( STREAM_SEM_MEMCPY); #else memcpy( pDes, pSrc, size ); #endif return 0; }