Граблю кадры с v4l2 камеры mmapом. Микрозадача: нужно прикрутить в конец аппаратного буфера камеры свой маленький буфер, в который нужно сохранять свою инфу, ну или прикрутить свой буфер перед аппаратным. Т.е. чтобы в виртуальном пространстве получилось |мой буфер|аппаратный буфер| или |аппаратный буфер|мой буфер|, чтобы я смог этот составной буфер писать через write(fd, buf, size) за один вызов ну и вообще оперировать только одним указателем. Копировать аппаратный буфер в другой нельзя - софтинка крутиться на ARMе, там это очень замедляет работу, pwrite тоже нельзя использовать - т.к. кадр дальше передается другой библиотеке (libavformat), которая имеет только интерфейс write. Как пробовал - после mmapа аппаратного буфера создавал разделяемую память и ммапил ее в конец буфера кадра (тут код без проверок после вызовов):
v4l2_buffer buf;
...
ioctl(fd_cam, VIDIOC_QUERYBUF, &buf);
data = mmap(NULL, buf.length, PROT_READ | PROT_WRITE, MAP_SHARED, fd_cam, 0);
m_pFrameList[index].m_desc = shm_open("desc", O_RDWR | O_CREAT, 0777));
p_void field = mmap(p_void(ptrdiff_t(data) + buf.length), sizeof(float64), PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED, m_pFrameList[index].m_desc, 0);
Log::echo("Mapping result: must be: %p, actually: %p\n", ptrdiff_t(data) + buf.length, field);
Вроде все клево, но когда я запрашиваю кадр:
ioctl(fd_cam, VIDIOC_DQBUF, ...) приложение валится с ошибкой "Ошибка шины". в чем собака может быть зарыта?
.png)

Ответ на:
комментарий
от mv

Ответ на:
комментарий
от mv

Ответ на:
комментарий
от sotlef

Ответ на:
комментарий
от mv

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Сборка модуля ядра из исходников под Linux 4.4 (2018)
- Форум V4L2: ошибка удаления буфера из очереди: недопустимый аргумент (2023)
- Форум Не работает чтение с web-камеры (v4l2) (2024)
- Форум Непрерывность выделения памяти - виртуальная и физическая (2023)
- Форум Ограничить размер физической памяти (2000)
- Форум параметры виртуальной памяти (2003)
- Форум Физически смежные страницы памяти, userspace (2010)
- Форум Выделение физического блока RAM для DMA (2011)
- Форум Несовпадение количества физических блоков и ФС (2013)
- Форум Виртуальные и физические интерфейсы на KVM (2011)