Gadget 下的USB video 驱动有用DMA传输数据吗?
在USB视频驱动的代码中(\drivers\usb\gadget),驱动调用vmallc_32分配内核虚拟空间,然后通过mmap来实现用户视频数据的0-拷贝。但是在得到视频数据后,它又分配空间(kmalloc)给USB endpoint 然后拷贝memcpy 视频数据。1. 请问我的理解对吗?
2. 如果我直接用DMA传输视频数据,假定USB硬件支持scatter/gather DMA,那么如何把从vmalloc内核虚拟地址映射到物理地址?
3. 或者可以直接用kmalloc分配空间并且实现mmap,但是这样可行吗? 是不是对于video很难分配大的连续内核空间? 可能我们走的协议不同吗,对于USB的视频,目前最常用的应该UVC驱动吧,像摄像头驱动/drivers/media/video/uvc/...这个里面都是标准的。你可以具体介绍一下你的应用背景 多谢楼上回复!
我现在做的USB视频驱动完全独立于UVC。有自己的芯片驱动,视频协议驱动。我想借鉴一下V4L2的上层的Ioctl定义来和我自己的应用层程序通信。 目前看起来在Gadget下的驱动没有用DMA。 我可以用kmalloc分配几块内存,每块大小是一帧视频图像大小,然后实现mmap。 现在就是不晓得在嵌入式系统中这个方法现实不。
页:
[1]