Архивы: по дате | по разделам | по авторам

Укрощение железного пингвина. Часть II

АрхивСовременные технологии
автор : Андрей Филиппов   29.01.2004

При разработке встраиваемых устройств достоинства идеологии открытых исходников очевидны. Пользуясь готовыми программами, можно получить работающее устройство не за несколько месяцев, а за считанные недели.

В этой статье я пытаюсь взглянуть на программное обеспечение с открытыми исходными кодами с точки зрения, о которой часто забывают. При разработке встраиваемых устройств его достоинства бесспорны. Пользуясь готовыми программами, можно получить работающее устройство не за несколько месяцев, а в считанные недели.

В первой части статьи, которая была опубликована в "Компьютерре-Онлайн" вчера, Андрей Филиппов, президент компании Elphel, рассказывал о своем первом столкновении с операционной системой GNU/Linux. При разработке специализированной цифровой камеры со стробируемым усилителем яркости на всё, начиная с разработки схемы устройства и заканчивая написанием программного обеспечения, потребовались лишь пара месяцев. При этом над проектом работал только один человек, к тому же, не особо разбирающийся в Линуксе. Читать первую часть статьи.

Скорость работы моей камеры ограничивалась программной реализацией алгоритмов сжатия на не очень быстром процессоре. Именно тогда я задумался о следующем проекте - цифровой камере, в которой алгоритмы сжатия реализованы "в железе".

Существует довольно много специализированных микросхем для сжатия видео, но их разрешение ограничено, поэтому на рынке представлены либо "быстрые" камеры низкого разрешения с аппаратным сжатием, либо "медленные" - с программным сжатием и высоким разрешением. Ниша "быстрых" камер высокого разрешения практически свободна.

Под "в железе" я, конечно, имел в виду FPGA (ПЛИС), так как для разработки ASIC у меня бы не хватило ни денег, ни времени. Ведь устранять оттуда баги иногда и у Intel плохо получается. И даже FPGA я решил использовать не те, с которыми я уже был знаком - не однократно программируемые, а реконфигурируемые. Это облегчает отладку и модификацию, в том числе и в продуктах, которые уже есть у пользователей. При нахождении ошибки не нужно отзывать продукты, а достаточно выложить новую прошивку в интернете вместе с обновлением ПО.

Подробности разработки такой камеры я описал в статье в интернет-издании LinuxDevices (русский перевод). Все, что я планировал сделать, удалось, и у меня вышла самая быстрая сетевая камера высокого разрешения - до 15 кадров/с при 1280 х 1024. Это почти в 100 раз быстрее, чем получалось с программным сжатием. Но до массового производства и окупаемости все равно было далеко.

Пользуясь тем, что система разработки FPGA фирмы Xilinx существовала в бесплатном (хотя, к сожалению, несвободном) варианте, и пользователи камер могли ее загрузить с веб-сайта, я выбрал для своей разработки лицензию свободного программного обеспечения.

Хотя прошивка FPGA - это не совсем программа, и даже не firmware, её исходные тексты тоже пишутся на алгоритмическом языке (в моем случае это был Verilog HDL). Все вместе подпадает под действие копирайта, и можно использовать GNU/GPL.

Зачем я это сделал? Конечно, мне тоже хотелось внести свой вклад в мировой "фонд" программных разработок, который так помог мне самому. Но был здесь и чисто прагматический расчет.

Я по своему опыту пользователя знал, как часто обнаруживается, что в закрытой разработке что-нибудь не совсем так, как требуется для конкретного применения. Но, как ни малы необходимые изменения, они практически недостижимы, когда речь идет о проприетарном продукте. Так что я стремился получить устройство с дополнительными свойствами, возможностью адаптации для таких применений, которые мне самому, скорее всего, и в голову бы не пришли.

Вторым фактором стала моя надежда на то, что, распространяя свою разработку под GNU/GPL, я могу надеяться получить код и обратно. Код, который увеличит потребительские качества камеры и, тем самым, принесет прибыль моей фирме.

В мае прошлого года в статье в журнале Xilinx Xcell (русский перевод) мне уже пришлось отвечать на вопрос - "А это не страшно, открывать вашу разработку? Что, если кто-нибудь воспользуется ей и получит все деньги?"

Я писал: "Во-первых, лицензия, которая используется для продукции Elphel (GNU/GPL) - это не совсем "общественная собственность" (public domain). Любая компания, которая захочет производить камеры, основанные на разработках Elphel, будет вынуждена играть по тем же правилам: юридическая защита лицензии GPL ничуть не слабее проприетарных лицензий. Такого рода открытую разработку невозможно "украсть". Даже если кто-то в какой-нибудь далекой стране, в которой нет законов о копирайте (и таким образом, GPL там не имеет юридической защиты) начнет производить закрытый производный продукт, этому продукту будет не хватать существенных характеристик камер Elphel - их возможности реконфигурации пользователем".

И вот, примерно через полгода я оказался в такой "далекой стране" - помогал запускать производство камер Elphel 313 в Шанхае. Для меня такое сотрудничество - это более дешевое, чем в США производство, для них - доступ к новым разработкам раньше конкурентов. Ведь GPL требует поставлять исходные тексты при распространении, никто не заставляет раскрывать их до начала продаж. Это как в науке, когда вполне можно держать язык за зубами до публикации статьи.

Поначалу я не был до конца уверен в верности этих расчетов. У меня был "запасной вариант" - возможность двойного лицензирования, когда одновременно со свободной лицензией GNU/GPL предлагается и коммерческий вариант, допускающий использование в закрытых разработках. К счастью, до этого дело не дошло.

Как выяснилось, есть немало заказчиков, для которых именно открытость и гибкость разработки является если и не необходимой, то очень важной характеристикой. Это помогло моей компании не без успеха конкурировать с Kodak и Canon. Закрытость их продуктов не позволяла программистам заказчика адаптировать камеры под дополнительные требования. К тому же, их универсальные цифровые камеры не обеспечивали достаточно быстрого ввода данных в компьютер, а это в данном случае было очень важно.

К сожалению, назвать здесь имена заказчиков невозможно: я связан обязательствами перед ними, пока они сами не объявят о своей новой разработке.

Конкурс

Объявляется конкурс на разработку видеостримера для камер Elphel. Программа-победитель, естественно, будет распространяться по лицензии GNU/GPL с сохранением копирайта автора. Итак, какие же исходные данные.

Имеется реконфигурируемая сетевая камера Elphel 313 (подробная информация есть на веб-сайте), где FPGA позволяет осуществлять сжатие по алгоритму baseline JPEG со скоростью примерно до 20 полных кадров в секунду (новые сенсоры позволяют делать до 30 кадров/с, и я попытаюсь увеличить скорость компрессора). Для демонстрации возможностей аппаратуры я написал приложение, которое запаковывает отдельные кадры (в виде motion JPEG) в видеоклипы формата Apple Quicktime и передает их как один файл, который может быть гораздо больше, чем оперативная память камеры, так как файл строится "на лету". Такой файл можно даже смотреть на компьютере с небольшой задержкой при соответствующих установках параметров плеера. Это приложение успевает передавать данные с достаточной скоростью - с той, которую обеспечивает компрессор.

Есть также и настоящий multicast videostreamer, сделанный компанией Live Networks. К сожалению, он работает примерно втрое медленнее, чем нужно, и имеет дополнительные ограничения. Может быть, это связано с тем, что он написан на C++ (а не C, как все остальное ПО камеры)? Может быть какие-нибудь лишние копирования? Все исходные тексты доступны.

Теперь условия конкурса, состоящего из двух этапов:

Первый этап (до 1 марта 2004 г.). Ознакомившись с исходными текстами ПО камеры и видеостримера и чувствуя в себе силы решить поставленную задачу, участники могут написать письмо по адресу "videostreamer<собака>elphel.com" и попытаться убедить меня, что они знают её решение. Первые три участника, успешно справившиеся с задачей первого этапа, получат камеры Elphel 313, которые достанутся им независимо от результатов второго этапа.

Второй этап продлится до 1 мая 2004 года, когда, надеюсь, счастливые обладатели камер смогут продолжить работу над свободным ПО for fun and profit. Победитель этапа при условии, что его ПО будет стабильно обеспечивать в камере не менее 15 кадров в секунду для разрешения 1280 х 1024, получит дополнительный приз в размере $3000.

Обсудить условия конкурса можно в форуме

© ООО "Компьютерра-Онлайн", 1997-2024
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.