TI论坛
直播中

石栓柱

7年用户 180经验值
私信 关注
[问答]

怎么在DM6446上Arm端使用EDMA?

我做的程序需要在Arm端memcopy一些数据,由于数据量比较大,所以想用EDMA来实现。
我在dvsdk中发现了edma的例程,貌似可以实现这样的功能,其路径为dvsdk_2_00_00_22/linuxutils_2_23_01/packages/ti/sdo/linuxutils/edma
修改了其目录下的Rules.make文件,主要是修改了编译器路径和内核路径,运行make,出现了下面的错误
/home/davinci/dm6446/dvsdk_2_00_00_22/linuxutils_2_23_01/packages/ti/sdo/linuxutils/edma/src/module/edmak.c:207: error: ‘EDMA_CONT_PARAMS_ANY’ undeclared (first use in this function)
/home/davinci/dm6446/dvsdk_2_00_00_22/linuxutils_2_23_01/packages/ti/sdo/linuxutils/edma/src/module/edmak.c:207: error: (Each undeclared identifier is reported only once
/home/davinci/dm6446/dvsdk_2_00_00_22/linuxutils_2_23_01/packages/ti/sdo/linuxutils/edma/src/module/edmak.c:207: error: for each function it appears in.)
/home/davinci/dm6446/dvsdk_2_00_00_22/linuxutils_2_23_01/packages/ti/sdo/linuxutils/edma/src/module/edmak.c:212: error: ‘EDMA_CONT_PARAMS_FIXED_EXACT’ undeclared (first use in this function)
/home/davinci/dm6446/dvsdk_2_00_00_22/linuxutils_2_23_01/packages/ti/sdo/linuxutils/edma/src/module/edmak.c:217: error: ‘EDMA_CONT_PARAMS_FIXED_NOT_EXACT’ undeclared (first use in this function)
/home/davinci/dm6446/dvsdk_2_00_00_22/linuxutils_2_23_01/packages/ti/sdo/linuxutils/edma/src/module/edmak.c:242: error: ‘EDMA_TCC_SYMM’ undeclared (first use in this function)
/home/davinci/dm6446/dvsdk_2_00_00_22/linuxutils_2_23_01/packages/ti/sdo/linuxutils/edma/src/module/edmak.c:253: warning: implicit declaration of function ‘davinci_request_params’
/home/davinci/dm6446/dvsdk_2_00_00_22/linuxutils_2_23_01/packages/ti/sdo/linuxutils/edma/src/module/edmak.c:286: warning: implicit declaration of function ‘davinci_get_param’
make[4]: *** [/home/davinci/dm6446/dvsdk_2_00_00_22/linuxutils_2_23_01/packages/ti/sdo/linuxutils/edma/src/module/edmak.o] Error 1
make[3]: *** [_module_/home/davinci/dm6446/dvsdk_2_00_00_22/linuxutils_2_23_01/packages/ti/sdo/linuxutils/edma/src/module] Error 2
make[3]: Leaving directory `/home/davinci/dm6446/linux-2.6.18_pro500'
make[2]: *** [release] Error 2
make[2]: Leaving directory `/home/davinci/dm6446/dvsdk_2_00_00_22/linuxutils_2_23_01/packages/ti/sdo/linuxutils/edma/src/module'
make[1]: *** [module] Error 2
make[1]: Leaving directory `/home/davinci/dm6446/dvsdk_2_00_00_22/linuxutils_2_23_01/packages/ti/sdo/linuxutils/edma/src'
make: *** [src] Error 2
然后去内核代码中查看edma相关的文件,结果其中并没有EDMA_CONT_PARAMS_ANY EDMA_TCC_SYMM 这些宏定义,这应该是内核版本不兼容吧,遇到这种情况改怎么办?

回帖(5)

赵天湖

2020-4-17 10:01:11
内核和Linuxutils EDMA不匹配,建议使用配套的内核和DVSDK
请从如下地址下载:
software-dl.ti.com/.../index_FDS.html
举报

石栓柱

2020-4-17 10:06:22
引用: 60user102 发表于 2020-4-17 12:32
内核和Linuxutils EDMA不匹配,建议使用配套的内核和DVSDK
请从如下地址下载:
software-dl.ti.com/.../index_FDS.html

DVSDK和LSP都是在这个页面下载的,内核版本2.6.18,dvsdk版本2_00_00_22,linuxutils版本2_23_01,应该没错啊
举报

赵天湖

2020-4-17 10:19:45
引用: Xavier_1995 发表于 2020-4-17 12:37
DVSDK和LSP都是在这个页面下载的,内核版本2.6.18,dvsdk版本2_00_00_22,linuxutils版本2_23_01,应该没错啊

如果是完全配套的版本,应该是可以直接编译通过的,请尝试在dvsdk安装目录下make clean掉后,make all看看
举报

王官君

2020-4-17 10:33:30
楼主你的问题解决了吗, 我最近也碰到和你一样的问题, 想通过EDMA来实现arm端的大数据量的memcpy。我想请问你一下,你是怎么在你的应用程序中调用dvsdk_2_00_00_22/linuxutils_2_23_01/packages/ti/sdo/linuxutils/edma提供的相关EDMA接口函数的。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分