开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

基于KUPL实现

KUPL的数据拷贝接口使能了SDMA数据搬运功能,通过封装SDMA驱动接口的方法,简化SDMA使用方法,降低学习成本。

具体地,能够通过KUPL相关数据拷贝接口,使用SDMA进行数据拷贝。举例如下:

代码内容如下:
#include <stdio.h> 
#include <stdlib.h>
#include <assert.h>
#include "kupl.h" 
   
int main() 
{ 
         int height = 2, width = 200;
         int spitch = 300, dpitch = 400;
         char *src = (char*)kupl_malloc(KUPL_MEM_DEFAULT, sizeof(char) * height * spitch);
         char *dst = (char*)kupl_malloc(KUPL_MEM_DEFAULT, sizeof(char) * height * dpitch);               
         for (int i = 0; i < height * spitch; i++) {
             src[i] = (char)i;
         }
         int ret = kupl_memcpy2d(dst, sizeof(char) * dpitch, src, 
                   sizeof(char) * spitch, sizeof(char) * width, height);
         assert(ret == KUPL_OK);
         kupl_free(KUPL_MEM_DEFAULT, src);
         kupl_free(KUPL_MEM_DEFAULT, dst); 
         return 0; 
}

1、上述示例演示了使用KUPL数据拷贝接口进行二维内存拷贝的流程。

2、上述kupl_memcpy2d函数将src数组中的内容复制到dst数组,其中src位置的数据每取出width数据的偏移量为300,dst位置的数据每存储width数据的偏移量为400,拷贝数据的宽和高分别为200和2。

3、kupl_memcpy2d接口能够通过SDMA进行二维数据的同步拷贝;同理,可以通过kupl_memcpy、kupl_memcpy_async、kupl_memcpy2d_async等接口进行一维同步、一维异步、二维异步数据拷贝,接口的详细信息和使用方法可以参考鲲鹏社区的《KUPL开发指南》