вторник, 29 мая 2018 г.

fx2lp: логический анализатор и не только

Однажды, когда мне приспичило заполучить логический анализатор, ноги повели меня на SiGrok: отличное и универсальное FOSS ПО с анализом протоколов и поддержкой большого количества железа (представьте, не только логические анализаторы и осциллографы!)
На канале мне сразу подсказали, что меньше чем за 5 баксов (блин, дёшево!) можно заполучить плату логического анализатора с приличными характеристиками: на базе чипа "fx2lp" CY7C68013A
Ну-с, с чем её едят?


Такой расклад мне очень понравился, я не думая заказал плату на AliExpress. Правда, через пару недель, играясь с Blue Pill с прошивкой "логический анализатор SUMP" я понял, что не хватает щупов (легко находятся поиском "logic analyzer probe"), и я заказал и их.
Когда плата пришла, начал разбираться. Почему-то не нашёл внятной "хаутушки", поэтому решил поделиться опытом тут.

Назначение платы.

Когда Cypress создала серию чипов fx/fx2/fxlp/... , идея была создать некий универсальный инструмент, о чём можно почитать немного на Linux-USB. Поэтому можно найти ещё несколько любопытных применений этой платы.
Немного подробностей: Сypress’s EZ-USB® FX2LP™ (CY7C68013A/14/15/16A) — это микроконтроллер семейства 8051, "прокачанный" определённым образом (см. ссылку выше). Даташит доступен на 3-х языках.

Назначение джамперов.

Если разъёмы у китайской платы подписаны, то назначение джамперов скрыты кодами "J1" и "J2" ☺
Один и джамперов переключает режим EEPROM, второй непонятно, чем занят. Это белое пятно я хочу закрыть позже, когда соберу информацию.
Впрочем, на wiki Sigrok и странице производителя эта информация есть.
Эмм. Нужна картинка?

Как работать с платой.

Как показало описание на Linux-USB и практика,
  1. Прошивка прекрасно грузится "на лету" прямо в чип и работает оттуда. То есть вшивать нужную прошивку необязательно: при подключении по USB загружаем прошивку, USB ресетится, после чего плата работает в соответствии с загруженной прошивкой
  2. На плате есть также EEPROM, в который можно записать прошивку. В этом случае при включении плата уже будет работать под управлением прошивки
В целом, получается всё просто.

Как работать с платой, как логическим анализатором.

Возвращаюсь к ребятам из команды SiGrok. У них присутствует "побочный" проект Fx2lafw. Это открытая прошивка (на самом деле набор прошивок) для целой плеяды плат FX2/FX2LP. Функциональность прошивок: Логический анализатор или Осциллограф. Поддержка железа — зашкаливает ))
Однако, скачав, обнаружились 12 файлов прошивок без особых описаний ((
Тут могу дать рекомендацию: fx2lafw-sigrok-fx2-8ch.fw завелась сразу и без вопросов.
По шагам:
  1. скачиваем прошивку
  2. её ещё немного нужно подготовить:
    $ objcopy -I binary -O ihex fx2lafw-sigrok-fx2-8ch.fw fx2lafw-sigrok-fx2-8ch.fw.hex
  3. устанавливаем программу fxload (у меня Linux. Ребята, про M$ не спрашивайте). Что приятно, установилась прямо из репозитария
  4. подключаем плату по USB. Обнаруживается примерно так (lsusb):
    Bus 001 Device 096: ID 04b4:8613 Cypress Semiconductor Corp. CY7C68013 EZ-USB FX2 USB 2.0 Development Kit
  5. заливаем прошивку:
    $ fxload -D /dev/bus/usb/001/096 -t fx2lp -I fx2lafw-sigrok-fx2-8ch.fw.hex
  6. Проверяем, что плата по USB видна уже иначе (в том же lsusb):
    Bus 001 Device 097: ID 1d50:608c OpenMoko, Inc. Fx2lafw
  7. Запускаем PulseView, наслаждаемся! ☺

Для удобства пишем правило udev.

Чтобы не отвлекаться во время работы, автоматизируем процесс заливки прошивки.
Создаём файл и располагаем по пути /etc/udev/rules.d/90-fx.rules
ACTION!="add", GOTO="fx_rules_end"
SUBSYSTEM!="usb", GOTO="fx_rules_end"
#Cypress Semiconductor Corp. CY7C68013 EZ-USB FX2 USB 2.0 Development Kit
ATTR{idVendor}=="04b4", ATTR{idProduct}=="8613", \
    SYMLINK+="fx2lp-devkit", \
    RUN+="/usr/bin/fxload -D /dev/fx2lp-devkit -t fx2lp -I /lib/firmware/fx2lafw-sigrok-fx2-8ch.fw.hex"
LABEL="fx_rules_end"
ну, можно работать!

UPD 12.09.19: добавил полезные ссылки.

Комментариев нет:

Отправить комментарий