Собираем Yocto Linux для Intel Edison

6 марта 2016 г. 17:44 Linux   Intel Edison  

Yocto Project - это Open Source инфраструктура которая позволяет самостоятельно собрать дистрибутив Linux с нужными функциям для встраиваемых систем на архитектурах ARM, PowerPC, MIPS, x86 и x86-64. Название Yocto происходит от приставки дольних единиц измерения в СИ, эквивалентную 10-24. Для использования Yocto на встраиваемой системе необходимо включить в дистрибутив так называемый BSP (Board Support Package), который будет состоять из драйверов и пакетов обеспечивающих работу аппаратного обеспечения. В частности на основе Yocto создаются дистрибутивы для Intel Edison с названием Yocto* complete image, которые предлагается скачать на стринице загрузки https://software.intel.com/en-us/iot/hardware/edison/downloads. Самостаятельная сборка дистрибутива дает намного больше возможностей в разработке - вы можете включать дополнительные бинарные пакеты в систему, конфигурировать ядро Linux (в частности добавлять в ядро модули для поддержки новых устройств), добавлять патчи с исправлениями которые выходят еще до выпуска дистрибутива, имеете возможность создавать бинарные пакеты ipk для менеджера opkg, используемого в Yocto, запускать дистримутив в эмуляторе QEMU. В статье мы собрем дистрибутив и слегка модефицируем его для своих нужд.

Внимание: эта статья описывает сборку ранней версии Yocto, гайда по сборке новой версии тут

Оптимизация конфигурации ПЛИС по площади (Уменьшение занимаемых ресурсов)

28 февраля 2016 г. 13:32 ПЛИС  

Конкретная микросхема выбранного для разработки семейства ПЛИС обычно выбирается уже после разработки конфигурации и тестирования ее в симуляторе исходя из занимаемого объема. Тем не менее бывают случаи когда в конфигурациию добавляется новый функционал и она перестает помещаться в существующую микросхему, либо  когда еще при выборе процент переполнения очень мал (например синтезатор говорит что занят 101% LUT), и не хочется переплачивать много за следующую микросхему. В обоих случаях можно попробовать уменьшить объем занимаемый ПЛИС. Второй случай конечно не рекомендуется рассматривать если в дальнейшем функционал будет расширятся хотя бы минимально - всегда лучше оставлять небольшой запас.

Сборка Chromium Embedded Framework

16 февраля 2016 г. 17:01 web  

CEF - мощнейший продвинутый открытый кросплатформенный фреимворк, созданный в качестве пользовательской обвертки над открытым браузером Chromium, который позволяет встраивать браузер в свои приложения. Сам фреимворк написан на С++ однако наиболее популярны биндинги под разные популярные языки. В основном самые развивающиеся на сегодня это биндинги для C#, среди них CefSharp, Chromium FX, CefGlue. Также есть биндинг под Python2 от поляка Czarek Tomczak, но он уже год как заброшен, хотя в текущих планах автора есть его обновление до новой версии Chromium и поддержка Python3.4-3.5.

Не зависимо от языка все биндинги используют DLL-ку libcef.dll (и еще несколько файлов включая всякие ресурсы). Несмотря на то что фреимворк дает возможность на уровне биндингов настраивать много полезнейших настроек, и переопределить пользователю кучу обработчиков, иногда все же возникает необходимость подпилить небольшую часть брауза под свои нужды. Собственно в статье пойдет речь о самом главном - как собрать этот CEF. Собирать на этот раз мы будем в Windows.

Сборка IAX2 клиента testcall (libiaxclient)

12 февраля 2016 г. 17:05 C   Voip   Asterisk  

Открытая библиотека iaxclient для реализации IAX-транков поставляется с набором демок одну из которых мы соберем в этой статье (вместе с библиотекой). Скачать библиотеку можно на sourceforge. Мы соберем самую простую консольную демку testcall которая умеет регистрироваться на шлюзе IP телефонии (например Asterisk), принимать звонки и звонить, а в качестве интерфейсов использовать системные аудио-устройства, доступные с помощью библиотеки port-audio

Пример синхронизации асинхронных сигналов и симуляции асинхронных схем на VHDL

30 января 2016 г. 23:44 ПЛИС  

При захвате любых входных сигналов которые могут измениться асинхронно по отношению к основному синхросигналу микросхемы могут возникать некоторые проблемы в работе микросхемы, а точнее триггеров которые выполняют захват.  Эти проблемы связаны с переходом триггера в некое метастабильное состояние при котором данные в нем могут принять вообще стать неопределенными (не 0 и не 1) и в результате приведут к неправильной работе схемы. Особенно часто эта проблема стоит при "стыковании" микросхем по различным интерфейсам. Например сигнал RX у приемника UART может изменится в любое время произвольное по отношению к синхросигналу тактирующего конечный автомат самого приемника, что может вывести из устойчевого состояния триггер который будет захватывать этот сигнал. Также это касается интерфейсов вроде SPI Slave либо даже обычной тактовой кнопки. Безусловно понимание проблемы метастабильности требует куда более глубокого рассмотренния и должно затрагивать  принципы работы триггера и его характеристики, однако в этом посте я приведу чисто практический пример решения этой проблемы.

Вставка картинок из буфера обмена в TinyMCE4 и загрузка на сервер

6 января 2016 г. 12:10 python   django  

Черкая статьи в блоге приходится нередко вставлять изображения, загружать их отдельными кнопками и диалогами на сервер не всегда удобно. Намного проще вставлять из буфера обмена скриншоты либо всякие зарисовки из Gimp. Как это реализовать и будет рассказано в статье. В качестве редактора я использую популярный TinyMCE 4ой версии, на бэк-енде у меня Django на python3. 

Основы Asterisk. Установка, пиры, диалплан

3 января 2016 г. 19:22 Voip   Asterisk  

Приветстувую уважаемые читатели блога. В этой статье мы будем разбираться в основах телекомуникационных программных средств, которые в частности применяются во встраиваемых системах. Основным таким средством есть сервер VOIP-телефонии (VOIP, Voice over IP), в нашем случае это открытое ПО Asterisk, разрабатываемое фирмой Digium Inc и написанное на языке Си. Основной функций сервера VOIP есть возможность подключения различных клиентов и маршрутизация звонков между ними. Клиентом в данном случае может быть как программный телефон (так называемый Софт-фон, например Microsip или Ekiga), так и аппаратный телефон. Также в качестве клиента может быть и дроугой сервер VOIP, например внутри VOIP-телефона может стоять микропроцессор на котором запущен Linux с Asterisk умеющий не просто маршрутизировать звонок а обрабатывать его (то есть передавать голос удаленного абонента в наушник телефонной трубки и отправлять голос абонента-пользователя из микрофона обартно канал).

Создание прозрачного GIF c помощью Imagemagick

13 декабря 2015 г. 20:11 image  

В статье предоставлен Windows .bat-скрипт который на вход принимает папку с непрзрачными изображениям (с любыми именамами) и одним цветом фона и создающий один анимированный gif-файл. Скрипт сначала конвертирует изображения из исходной папки в прозрачные а затем создает из них анимированый GIF. Для работы скрипта нужно установить Imagemagick (http://www.imagemagick.org/script/binary-releases.php). В начале скрипта определены переменные, которыми вы можете настроить скрипт:

  • IM_DIR - Папка с imagemagick (в которой лежит convert.exe)
  • SRC_DIR - папка с картинками
  • SRC_FORMAT - расширение исходных изображений (JPG, PNG, GIF и т.п.)
  • TRANS_COLOR - цвет который считать прозрачным (может быть символьное имя red, green, так и hex-значение, например '#00FF00', читайте тут)
  • FUZZ_RATE=5 - процент захвата оттенков цвета, чем больше тем более отдаленный от цвета оттенок будет заменятся прозрачным
  • TRANSP_DIR - папка куда будут складываться временные прозрачные изображения
  • RESULT - имя файла результата
  • REBUILD_TRANSP - 1 если каждый раз нужно удалять прозрачные изображения и переконвертировать их в прозрачные заново  (иначе этот длинный шаг можно будет пропустить)
  • DELAY - задержка между кадрами
  • SHOW_RESULT - 1 чтобы открыть браузер с результатом