У меня есть встроенный проект Linux, в котором мне нужно прочитать видео через USB-порт, внести некоторые изменения в это видео (например, сжатие), а затем отправить его обратно на хост через предпочтительно тот же USB-порт. Также было бы предпочтительной функцией, если бы мы могли отправлять команды для изменения таких вещей, как уровень сжатия видео с хоста на устройство.
Хостом можно считать настольный компьютер с некоторой версией Linux, а устройством, которое фактически выполняет эту обработку видео, является Gumstix, использующий встроенный Linux.
Я в основном растерялся относительно того, как начать этот проект или что исследовать в разделе ввода / вывода в Linux. Во-первых, возможно ли считывать видео, записывать видео и отправлять команды через один и тот же USB-порт? Видео относительно небольшое, особенно после сжатия устройством, поэтому пропускная способность не является проблемой. Основная проблема в том, чтобы знать, с чего начать исследования для этого проекта. Есть ли что-то вроде TCP / IP для USB, где вы можете открыть несколько соединений между хостом и устройством для передачи данных?
Придется ли нам писать собственные драйверы для устройств USB? Разрабатываете наш собственный протокол или поддерживает ли USB несколько разных операций на одном порту относительно легко?
Должен ли я начать исследовать драйверы для Linux, программирование на уровне пользователя и API или протокол USB? Или что-то совсем другое?
Я старший студент, изучающий компьютерную инженерию, так что мой уровень опыта - это сочетание программирования на C, C ++, Java, Verilog, TCL и т. Д. Почти все программирование на сокетах было на Java (независимой от ОС), поэтому я действительно Я не уверен, с чего начать написание приложения Linux для выполнения такой задачи. У меня был приличный опыт программирования микропроцессоров (AVR, coldfire), но, опять же, несмотря на то, что я был близок к тому, что мне нужно, это не помогло мне понять, с чего начать.