各位专家可否给我一个在dm8168平台上,hdvpss那个M3调用EDMA3搬移数据的程序示例?小弟实在不解,怎样在c程序中去直接配置寄存器来使EDMA3工作!在此先谢谢各位了!!!
Haijun Guo:
EDMA可以通过M3调用,和HDVPSS没什么关系。
在EDMA库的目录下有如何使用EDMA的C程序例子(edma3lld/edma3_lld_XX_XX_XX_XX/examples/edma3_driver/src)
在下面目录下还有关于EDMA API的说明文档
(edma3lld/edma3_lld_XX_XX_XX_XX/packages/ti/sdo/edma3/drv/docs)
Wolf:
回复 Haijun Guo:
首先,感谢您的回复。我当前是在通过改写HDVPSS中的chains示例,完成捕获视频显示视频的工作。就是通过gmake -s chains 生成.xem3文件,在ccs上运行该.xem3文件达到视频捕获与显示工作。我想用edma完成捕获的两路两帧数据替换合成为一帧数据的工作,也就是说想用那种直接配置寄存器的方法,上面您给我的那种是用驱动的方式吧?可否提供这种直接配置寄存器的方法的示例程序呢?非常感谢!
Haijun Guo:
回复 Wolf:
在开发包里没有直接配置寄存器的方法的示例程序。另外,运行HDVPSS中的实例,仍然可以使用驱动的方式调用EDMA。
Wolf:
回复 Haijun Guo:
用直接配置寄存器的方式对我现在将是最方便最快的,但是直接配置寄存器的方式存在两个问题,第一,在m3中的edma3 的base address是什么?第二,我该在其中怎么样直接操作地址号进行赋值操作?如向0x49000000中赋值0,我现在没办法直接操作这个地址号,一用地址号就出错!!
Wolf:
回复 Wolf:
我在hdvpss的包中去找edma映射的地址,可是在整个hdvpss中只有vpdma,没有edma的字样。给我的感觉hdvpss这个子系统数据搬移用的是它自己的vpdma,不用外面的edma?还是在hdvpss中,edma被映射成了vpdma?但是vpdma的形式跟edma的形式完全不一样呀!!!
烦请各位专家告诉我,
1、hdvpss是不是完成数据搬移时用的是自己的vpdma,而不用edma?
2、hdvpss它内部的资源可以被a8调用,但是它不可以反过来调用hdvpss外面的edma3?
如果只能用vpdma,这个vpdma改怎么用?没有相关文档呀!!
Haijun Guo:
回复 Wolf:
您好,HDVPSS是用VPDMA来完成数据搬移的。VPDMA是专供HDVPSS使用的,并没有开放的接口供使用。如果需要使用DMA,可以通过M3或者A8来调用EDMA来完成数据搬移。
Wolf:
回复 Haijun Guo:
非常感谢您的回复!
因为我在hdvpss中的chain例子中改写的程序,之所以一直没有按您说的用edma3_lld,是因为不清楚怎么用m3调用edma的drviver。
另外,如果要是用driver的方式可行,我直接配置寄存器的方式也一定可行,只要知道edma在m3中的edma3 base address就可以了,我不需要引用任何头文件和驱动程序。可是一直就有找到这个edma3 base address。
请问如果向您说的用edma3_lld,用edma的driver 和rm,我该怎么把这些导入到我的程序中以便可以使用它的函数呢?
非常感谢您的帮助!!
Mark:
回复 Wolf:
你好,请问你现在知道如何直接配置edma3的寄存器了吗,我往以0x49000000为基地址的寄存器里写东西,写不进去啊,我是在linux下用CCS5测试的。另外,请问edma3lld/edma3_lld_XX_XX_XX_XX/examples/edma3_driver/src的例子都是针对DSP的吧。
TI中文支持网
