Допустим, мы хотим отлаживать цифровую электронику. В предыдущих статьях я рассказывал об осциллографе Rigol DS1054Z , логическом анализаторе SUMP2 на базе iCEstick, а также плате Bus Pirate . Каждое из этих устройств поможет справится с задачей, но не то, чтобы слишком успешно. DS1054Z имеет всего 4 канала и его возможности по декодированию протоколов довольно скромны. Bus Pirate лучше может в протоколы, и каналов у него побольше, но он медленный. SUMP2 быстрый и имеет 16 каналов, но с ним вам придется самим считать единички и нолики. Неужели никак нельзя объединить сильные стороны этих устройств? Разумеется, можно! Иначе стал бы я начинать пост таким введением?

Что такое Sigrok?

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

Sigrok состоит из следующих частей:

  • libsigrok , ядро проекта, написанное на языке C, и состоящее в основном из драйверов для поддерживаемых устройств;
  • libsigrokdecode , библиотека, которая реализует декодирование различных протоколов (декодеры пишутся на Python );
  • sigrok-cli , консольная утилита, являющаяся фронтэндом к предыдущим двум библиотекам;
  • pulseview , GUI-фронтэнд, написанный на C++ и Qt;
  • sigrok-meter , GUI-фронтэнд для более удобного отображения медленно изменяющихся данных, например, температуры;
  • sigrok-dumps , коллекция записанных сигналов (файлы .sr) для тестирования декодеров и прочих целей;
  • sigrok-test , регрессионные тесты;

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

Выбираем логический анализатор

Sigrok поддерживает многие логические анализаторы. Вот некоторые интересные в смысле цены/качества устройства:

  • Noname Saleae Logic Clone . 8 каналов, частота дискретизации 24 МГц, не имеет встроенной памяти, триггеры не поддерживаются (Sigrok попытается эмулировать их программно). Может быть неплохим вариантом, если вы не работаете с высокочастотными сигналами (скажем, разрабатываете только под AVR), или, если если вам нужно 20 недорогих устройств для обучения студентов. На eBay можно найти по запросу «24mhz 8 channel logic analyzer». Цена составляет около 7$.
  • Mcupro Logic16 Clone . 16 каналов, до 100 МГц (в зависимости от числа используемых каналов), есть сжатие передаваемых данных, памяти и триггеров нет. На eBay можно найти по запросу «100mhz 16ch logic analyzer». Устройство обойдется вам где-то в 40$.
  • DreamSourceLab DSLogic . 16 каналов, до 400 МГц при использовании 4 каналов, встроенная поддержка триггеров, по 2 мегабайта памяти на канал. Устройство появилось благодаря кампании на Kickstarter и является открытым железом . На eBay вы найдете его по запросу «dslogic». Цены на железку начинаются от 70$.

Fun fact! Еще есть проект очень маленького и полностью открытого логического анализатора Fx2grok . В готовом виде он нигде не продается, но вы можете изготовить его самостоятельно. Устройство имеет 8 каналов и частоту дискретизации 24 МГц. Как и Noname Saleae Logic Clone, устройство основано на чипе Cypress FX2.

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

Дополнение: На самом деле, существует две версии DSLogic — DSLogic Basic и DSLogic Plus. Отличие заключается в наличии у последнего встроенных 256 Мбит памяти SDRAM, в которую могут быть быстро записаны сэмплы перед отправкой по USB. При написании данного поста я использовал DSLogic Basic. Интересно, что он может быть достаточно просто обновлен до версии Plus. Подробности ищите в статье Превращаем DSLogic Basic в DSLogic Plus за авторством User420.

Эксперименты с DSLogic

Итак, нам понадобятся следующие пакеты:

yaourt -S libsigrok-git sigrok-cli-git pulseview-git
sigrok-firmware-dreamsourcelab-dslogic

Здесь приведены названия пакетов для Arch Linux . В других операционных системах и дистрибутивах Linux установка может отличаться. В крайнем случае, Sigrok не сложно собрать из исходников .

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

Далее подключаем логический анализатор по USB и проверяем, что Sigrok его видит:

sigrok-cli —scan

В моем случае ответ был следующим:

sr: dreamsourcelab-dslogic: Failed to open potential device with
VID:PID 2a0e:0021: LIBUSB_ERROR_ACCESS.

Для решения проблемы говорим:

sudo sh -c «echo ‘SUBSYSTEMS== » usb «» ATTRS{idVendor}== «» 2a0e «»
«»ATTRS{idProduct}== «» 0021 «» MODE:= «» 0666 «» ‘ > «»
«»/etc/udev/rules.d/99-dslogic.rules»»

Переподключаем устройство и проверяем

EnglishRussianUkrainian