3

我正在尝试为我拥有的特殊相机设备编写符合 V4L2 的驱动程序,但该设备似乎对 V4L2 的缓冲系统并不特别友好。它不需要单独分配的缓冲区,而是需要一个能够保存一组缓冲区(通常为 4 个)的单个连续内存块,然后它提供一个状态寄存器告诉您哪个是最新的(在每帧经过 DMA 后更新给主人)。所以它基本上只需要一个大的 DMA 分配的内存块来工作,而不是 4 个最有可能分开的。

如何将它与 V4L 一起使用?我看到的所有内容VIDIOC_CREATE_BUFSVIDIOC_REQBUFS以及缓冲区的内部分配,我都无法获得任何基于 V4L 的东西(比如qv4l2在没有成功的情况下工作QBUF并且DQBUF使用它们的内部结构。

如何才能做到这一点?

4

1 回答 1

1

为了补全,我终于在“meye”驱动中找到了解决办法。我删除了所有 VB2 并编写了自己的 reqbuf、querybuf、qbuf 和 dqbuf,以及我自己的 mmap 例程来处理分配。这一切都有效!

于 2014-06-28T15:23:13.697 回答