I.MX6dl 如何采用Sdma进行用户空间进程中的内存间拷贝

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

I.MX6dl 如何采用Sdma进行用户空间进程中的内存间拷贝

1,211件の閲覧回数
厚逸杨
Contributor I

hi,all

我司IMX6DL设计应用于红外机芯的采集编码,应用程序中常涉及到大量数据的memcpy()操作,cpu占用率高居不下。

通过了解SDMA,想经由SDMA来进行进程中buf间的memcpy操作,mxc_sdma_memcopy_test.c已能正常编译insmod,mxc_sdma_test.out只是测试内核空间申请的内存间拷贝功能。

我想通过SDMA对用户空间进程中的两块内存地址进行数据拷贝,但不清楚用户空间进程中的虚拟内存地址如何传递到内核空间的驱动里,通过write(fd, buf, size)将buf地址传递进去后,会导致dma_map_sg()映射崩溃。


附件为i.mx-test-5.7中的驱动源码和测试源码。


静待佳音,万分感激。

ラベル(2)
0 件の賞賛
返信
1 返信

1,074件の閲覧回数
weidong_sun
NXP TechSupport
NXP TechSupport

Hello Yang,

     驱动中已经实现了memory to memory 的SDMA搬数据,应用层只需要去读取数据就可以了。mxc_sdma_test.c中就是演示一下应用层如何使用它。

     你不能撇开驱动,在应用层直接使用SDMA去搬数据。

Have a nice day!

TIC weidong sun

0 件の賞賛
返信