Драйвер регистрирует символьные устройства для взаимодействия с ними из пользовательских программ. Проверьте появление соответствующих файлов в системе:
Если файлы устройств не создались автоматически, их нужно создать вручную с помощью mknod, используя старший и младший номера, прописанные в коде драйвера (в файле mem.c или dm642.h).
Судя по исходному коду драйвера (proc.c), в системе должен быть доступен файл состояния или управления в виртуальной файловой системе /proc. Проверьте его содержимое:
Код: Выделить всё
cat /proc/dm642*
# или cat /proc/driver/dm642 (в зависимости от реализации)
Это позволит увидеть статус захвата кадров, адреса буферов и состояние связи с DSP.
3. Написание или использование пользовательского приложения
Поскольку это специализированный (и, судя по всему, кастомный или устаревший) драйвер для конкретной платы видеозахвата, стандартные утилиты вроде V4L2 (Video4Linux2) или ffmpeg «из коробки» с ним работать не будут, если в драйвере не была реализована соответствующая абстракция.
Для приёма изображений вам потребуется пользовательское приложение на C/C++, которое использует стандартные системные вызовы:
open() — открытие устройства (например, /dev/dm642_0).
mmap() — отображение кольцевого буфера памяти кадров (vm_area_struct, с которым мы работали в mmap.c) в адресное пространство вашего приложения для быстрого чтения видеокадров без лишнего копирования.
ioctl() или read() — управление захватом, переключение каналов аналоговых камер, запуск/остановка потока и синхронизация через структуры рукопожатия (pci_dsp_handshake).
Общая схема работы
Аналоговая камера подает сигнал на видеодекодер платы DM642.
Программа на DSP обрабатывает кадр и выкладывает его в общую память PCI (Shared RAM / DMA).
Ваша программа на ПК открывает файл устройства, делает mmap для доступа к этой памяти и забирает готовые массивы байтов (кадры изображения в форматах YUV или RGB) для дальнейшего отображения или сохранения.