SmartPipe. Первое включение.

Блог им. trapper
SmartPipe — это USB-Serial адаптер, но с одной важной фичей, девайс может мониторить все строки, которые он получает по UART/USB и фильтровать/редактировать их с помощью набора простых правил.
То есть например если интересны вызовы функции «get_more_info» в потоке лога, написав простое правило, можно «раскрасить» лог этой функции в красный цвет для заметности. Аналогичным образом для любой строки из лога в любой момент вы можете:
  • добавить символы/пробелы;
  • изменить фон/цвет символов;
  • добавить дамп времени;
  • пропустить не нужные строки лога;
  • получить циклограмму работы программы (вместе с OLS Logic Sniffer client);
  • построить графики изменения переменных (вместе с gnuplot);
  • и тд;


На сайте устройства (fibell.com.ua) описано как включить и что установить, чтобы SmartPipe заработал (подробнее см. на сайте Первое включение). Но вкратце все просто. Подключили SmartPipe к компьютеру через USB, компьютер опознает девайс как два виртуальных порта и MassStorage, установили, если надо, драйвера (их можно найти на MassStorage устройстве или на сайте) и все — девайс уже работает… но только как обычный USB-Serial адаптер, где:
  • Serial — это урезанный UART порт RXD/TXD/GND сигналами ,
  • USB — это первый виртуальный порт девайса USB-COM1, номер которого в Windows можно узнать в Device Manager(Диспечер устройств) (ищем SmartPipe USB-COM1 Port в описании устройства)



И так мы получили обычный USB-UART адаптер, теперь настроим SmartPipe для обработки логов, и для примера возьмем вот такие логи:
main.c line:12 Start device.
main.c line:38 Init.
msg.code:38
dev.c line:118
create dev 1
msg.code:12
msg.code:54
msg.code:38
dev.c line:118
create dev 2

Чтобы паралельно с написанием статьи не создавать «на коленях» своего «терминатора серии 800, модель 101» для генерации лога, воспользуемся конфигурацией каналов SmartPipetest. Конфигурация каналов — это описание того как данные «движуться»  между Serial портами устройства. SmartPipe имеет несколько Serial портов для работы: два виртуальных COM порта(USB-COMx) для связи с компьютером и один UART порт (RXD/TXD/GND). Все эти порты можно конфигурировать между собой в каналы обмена данных. В девайсе уже сконфигурированы три канала по умолчанию: direct, test, filter. Канал test это соединение двух виртуальных портов USB-COM1 <-> USB-COM2, что очень удобно для тестирования — в одной консоли пишеш данные от «терминатора» в другой смотрим лог. Более подробную информацию о каналах и о всем остальном можно узнать на сайте.
И так настравиваем SmartPipe:
1. Начальные условия.
  • Мы включили девайс и настроили терминальную программу, например TeraTerm (см. на сайте Первое включение) для работы с USB-COM1 (настройки самого порта baudrate/stiopbits и тд. которые вы выставляете при настройки терминальной программы применяются к UART порту SmartPipe и для нашего примера значения не имеют, кроме двух важных параметров для настройки TeraTerm это: Setup/Serial port.../Flow control = none; Setup/Terminal.../Transmit = CR+LF ).
2. Переходим в командный режим SmartPipe (COMMAND MODE) для настройки правил.
  • Для этого нажимаем комбинацию клавиш CTRL-Q/CTRL-S/ENTER.
  • Видим приглашение для ввода «sLog#
  • Если это не первое включение и вы уже добавляли правила, то можно их удалить вызвав команду eraseall
3. Добавляем правило для конфигурации каналов — test.
  • Выполняем команду: add :;;test;
  • O правилах подробнее можно узнать на сайте, скажу только что „магическая“ последовательность »:;;" означает, что это правило будет выполнять только один раз при начале работы с правилами.
4. Добавляем правило для конфигурации сброса таймера в 0, так как я хочу добавить дамп времени в лог.
  • Выполняем команду: add :;;resettime;
5. Добавляем правило для добавления подстроки " =====> Signal: " для всех строк лога, которые имеют подстроку «mes.code:».
  • Выполняем команду: add :*msg.code:*;;format =====> Signal: @;
6. Добавляем правило для вывода дампа времени для всех строк лога, которые имеют подстроку ".c".
  • Выполняем команду: add :*.c*;;ltime;
7.Добавляем правило для «покраски» в красный цвет всех строк лога, которые имеют подстроку «line».
  • Выполняем команду: add :*line*;;lcolor red;
8. Посмотрим список правил, которые у нас получились.
  • Выполняем команду: list
  • После всех этих шагов мы должны получить список правил для работы устройства.



9. Теперь нам надо выйти из COMMAND MODE.
  • Вызываем команду:exit
10. Теперь настраиваем еще одну терминальную программу для работы с USB-COM2 (аналогично настройки для USB-COM1).
11. Берем наш лог для примера и копируем в USB-COM2 терминал. Данные «пройдут» по каналу test  и будут обработаны в соответствии с нашими правилами. В USB-COM1 терминале должен появиться примерно такой лог: (примерно, потому что многое зависит от терминала который вы используете, если он не понимает ESС-последовательности то «покрасить» лог не получиться)


Для настройки работы с реальным устройством через UART, шаги аналогичные, только необходимо выбрать конфигурацию filter в шаге 3. И помнить что для работы UART порта его надо правильно сконфигурирвать (baudrate/stiopbits и тд.). Это делается через настройки терминальной программы на USB-COM1/USB-VCOM2 портах, которые автоматически применяются к UART порту SmartPipe.

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.