SmartPipe. О проекте.
Этим постом я открываю цикл статей по проекту SmartPipe.
Проект SmartPipe — это моя попытка разработать небольшой «комерческий» проект, а также проанализировать спрос и перспективность такого рода занятия. Слово «комерческий» я использую в кавычках, потому как прекрасно понимаю, что к сожалению, в нашей стране пока комерческими могут быть только проекты по производству колбасы и перепродаже нефти.
Поэтому основная цель этого блога получить feedback от сообщества, узнать мнения ну и получить критику конечно.

SmartPipe — это «умный» USB-Serial адаптер.
«Умность» у него заключается в том что, помимо обычной функции передачи UART пакетов в компьютер
через USB, он может форматировать проходящие через него данные.
Зачем это нужно? Всего для одной, но очень важной задачи — анализа логов из тестового устройства.
Сложность современных электронных устройств быстро растет. Уже никого не удивишь Linux-ом на устройстве с размером в SD-карту. Но когда вы используете Linux возникает соблазн воспользоваться всей мощью открытого ПО для реализации проектов.
Использовать все это богатство достаточно просто, если делать что-то на уровне «моргания светодиодов» и «посылки пинга», но когда необходимо сделать что-то посложнее в системе неожиданно появляются, так сказать «демоны», «изгнать» которых можно только «куря» доки и «исследуя» логи :).
Вот для исследования логов и может пригодиться SmartPipe.
SmartPipe может перехватывать, анализировать и обрабатывать строки лога, что позволяет:
Проект SmartPipe — это моя попытка разработать небольшой «комерческий» проект, а также проанализировать спрос и перспективность такого рода занятия. Слово «комерческий» я использую в кавычках, потому как прекрасно понимаю, что к сожалению, в нашей стране пока комерческими могут быть только проекты по производству колбасы и перепродаже нефти.
Поэтому основная цель этого блога получить feedback от сообщества, узнать мнения ну и получить критику конечно.

SmartPipe — это «умный» USB-Serial адаптер.
«Умность» у него заключается в том что, помимо обычной функции передачи UART пакетов в компьютер
через USB, он может форматировать проходящие через него данные.
Зачем это нужно? Всего для одной, но очень важной задачи — анализа логов из тестового устройства.
Сложность современных электронных устройств быстро растет. Уже никого не удивишь Linux-ом на устройстве с размером в SD-карту. Но когда вы используете Linux возникает соблазн воспользоваться всей мощью открытого ПО для реализации проектов.
Использовать все это богатство достаточно просто, если делать что-то на уровне «моргания светодиодов» и «посылки пинга», но когда необходимо сделать что-то посложнее в системе неожиданно появляются, так сказать «демоны», «изгнать» которых можно только «куря» доки и «исследуя» логи :).
Вот для исследования логов и может пригодиться SmartPipe.
SmartPipe может перехватывать, анализировать и обрабатывать строки лога, что позволяет:
- Изменять цвет/фон строки для выделения важных строк лога.
- Добавлять дамп времени к строке.
- Добавлять подстроки в строку.
- Пропускать ненужные при анализе строки.
35 комментариев
Может я чего-то не понял? Я обычно быстренько набрасывал программку на C# которая визуализировала мне все данные со стрелочками, графиками и прочими свистоперделками… А еще есть LabView (я просто его не знаю)…
Единственный плюс — уменьшение времени передачи данных. Передача по UARTу действительно, периодически тормозит. Беда в том, что тормоз в деле анализа логов не принимающая сторона, а передающая.
Вообщем, смысла мало вижу :(
Например баг: в один из пяти раз куда-то не приходит сообщение.
Конечно тебе повезет если в функции отправки этого сообщение стоит просто rand… но в реальной жизни тебе прийдется анализировать очень большой лог чтоб уловить связи в soft-e и поймеш ты эти связи далеко не сразу а с так 20+ итерации. И работать через файл/grep/sed быстро устанешь (конечно если ты не гуру bash/grep/sed/регулярных выражений и прочих esc-последовательностей).
Можно провести аналогию с операцией по «закрутке шрупа». Для «закрутке шрупа» можно использовать:
ответку (в нашем случае анализировать лог глазами);
дрель (файл/grep/sed);
или специальное устройство — шуруповерт
Первые два способа вполне работоспособны — ведь закручивали же люди шурупы до шуруповертов :)
Вы таки хотите сказать, что разработать прошивку для микроконтроллера, которая будет поддерживать загрузку набора правил фильтрации логов, программу для создания конфига, содержащего набор правил фильтрамии логов, и утилиты, которая будет загружать результат работы программы по созданию конфига, содержащего набор правил по фильтрации логов будет ПРОЩЕ, чем воспользоваться grep/sed?
я и коллеги выше не можем понять именно этого момента.
Вы еще не забывайте, что ваша цепочка должна поддерживать создание абсолютно любой мыслимой и немыслимой ситуации в логах. Если что-то не будет поддерживаться вашей железкой — то цепочку придется переписывать.
Кроме того, данное устройство является MITM, и если его исходники не будут открыты, то пользоваться им я не могу, так как он не может гарантировать, что при модификации логов (а именно этим он занимается, будем называть вещи своими именами) не будут изменяться критически важные сообщения.
троллейбус-буханка.jpg.to/
Вопрос реализации (прошивка микроконтроллера и далее по тексту) я уже решил.
Мне кажеться что написать правила для SmartPipe будет проще чем писать реглуярные выражения в grep/sed… да grep/sed намного мощнее и универсальнее но это не всегда надо ИМХО.
Ну «абсолютно любой мыслемой и немыслемой ситуации» конечно в правилах для SmartPipe описать нельзя — но наиболее полезные случаю для анализа логов я пытаюсь охватить, что не будет — можно будет добавить в последствии.
По поводу «открытости» — вы же используете логический анализатор soft для которого придумали американцы а железку спаяли китайцы… и вас обычно не сильно беспокоит что они могут терять критические импульсы… например. Не вижу разницы с SmartPipe.
А что касается логических анализаторов и прочих измерительных приборов — их показания должны соответствовать действительности. И все эти измерения проводятся у меня перед глазами. Более того, основная часть используемого мной оборудования внесена в госреестр средств измерений и только поэтому я могу им доверять, как измерительным приборам.
И раз уж вы коснулись темы потери критических импульсов, то у измерительных приборов есть характеристика достоверности результатов измерений — абсолютная или относительная погрешность, указанная в паспорте на прибор. Она может стремиться к нулю, но она НЕ нулевая. т.е. я всегда знаю, с какой достоверностью мне относиться к результатам измерений. Эта наука называется Метрология.
Какую погрешность фильтрации вы можете гарантировать пользователям?
Например UART может внезапно сожрать половину ключевого слова, по которому происходит фильтрация и все, сообщение не попало в лог. При нестабильном тактовом генераторе и некорректной настройке UART это возможно.
Ваш прибор предполагает лежать на столе и втихую фильтровать логи. При работе с устройством, у меня должен быть полный лог-файл, из которого можно достать либо то, либо другое.
Лучше добавьте в ваше устройство SD-карту, поддержку записи лога с устройства на эту карту автономно — с питанием от исследуемого устройства, а со стороны USB обеспечьте возможность чтения этой SD-карты, желательно в виде внешнего накопителя.
Такое устройство будет полезно, в том числе и мне, когда к автономному устройству можно подключить такой самописец на пару тройку суток, а потом на компьютере обработать данные.
Сейчас в SmartPipe предусмотренна возможность выдачи логов от устройства по двум каналам один с фильтрацией так сказать для анализа и второй «на прямую» для архива и уточнения.
Про устройство с SD картой. Вы предлагаете сделать устройство другого типа это устройство-логер для автоматческого сбора логов, которому фильтрация логов действительно не очень нужна, так как предполагается, что вы их будете анализировать целиком для поиска любой особености или бага. А вот если вы там увидете баг, то вы его запостите на разработчика… вот для фикса этого конкретного бага разработчику и может пригодиться SmartPipe, для выделения нужных логов при пересбрках soft-а при попытки воспроизвести и зафиксить баг.
Вот дорабатывать напильником все таки прийдется… по крайней мере они мне прислали корпус без вырезов, хотя контур для mini-usb явно просматривается.
Собираюсь договориться чтоб они сделали вырезы когда буду новую партию заказывать.
PS: в китайском st-linke в крышке ещё есть 2 отверстия под обычные выводные светодиоды. (вот)
Судя по планам коммерциализации, проект не будет открытым?
Да, пока проект планируется с закрытым исходным кодом… но возможно, что это обычные предрассудки и в конце концов коммерциализация будет производиться по схеме BusPirate например.
В любом случае «тревога по поводу фильтрации» скорее проблема доверия — вряд ли вы будете копаться в 300K+ байтах кода если он будет открыт. Плюс(а при «раскрученном» проекте скорее минус), когда код закрыт — я за него отвечаю, когда открыт уже нет.
Я тоже по началу любил делать сам USB-Serial адаптеры(на FT232), Jtag-отладчики и тд. а не покупать, но когда мои амбиции выросли а проекты «подросли», мне стало не интересно этим заниматься и уже логический анализатор и нормальный JTAG-отладчик я покупал.
Я совершенно уверен, что достаточно просто сделать какую-нибудь «поделку», которая раскрашивает логи и пользоваться которой может только разработчик (так получаеться из-за того, что цель разработки — «раскрасить логи» достигнута, а довести проект до ума требует много нудной и неинтересной работы). Именно поэтому пользоваться вы ей не будете, так как это не инструмент а скорее прототип инструмента, а когда перепрошьете «дискавери» на что-то другое то и забудете зачем это надо было (у меня у самого таких «проектов» навалом).
Вообщем мне кажеться, что инструменты надо покупать, а не делать… но это конечно кому как нравиться :).
И то, что это заготовка инструмента согласен лишь отчасти. Т.е. в главном — что это заготовка, согласен. Вот только это своё собственное. И поправить модификацию логов в своей программе дело буквально нескольких минут. А вспоминать где что править в любом случае придется, т.к. это устройство не первой необходимости, и не ежедневного использования, и конфигуратор через консоль. А значит подсмотреть в доки придется в любом случае, т.к. настройка все таки чуточку ;) сложнее того же USBee. Да и в многочисленных дискавери лично я не путаюсь, а у меня они есть и родные, и с версалуном, и с нуклео, и даже просто перешитая когда экспериментировал.
Ну и о цене вопроса, хоть вы и не озвучивали. Ценник явно будет сильно больше пятерки-десятки баксов. Правильно? А уже за двадцатку лично я предпочту за вечер допилить тот же самый DualCDC до базового состояния и потом при необходимости просто править правила.
Я не удивлен. :D
Смотря какой инструмент и смотря какой ценник. Точнее насколько оправдан. А еще точнее сколько стоит час моей работы, насколько оно по фану самому запилить и насколько сильно поджимают сроки.
тогда да,
Но как по мне это уже совсем лишнее.
Мне кажеться что SmartPipe и автономный логгер это все таки принципиально разные устройства. Логгер должен собирать ВСЕ логи и только потом на компьютере к его диску можно подключить SmartPipe для облегчения анализа этого лога. Да и входной интерфейс у логгера какой-нибудь RS-485.
Как по мне, раскрашивалка логов вполне комфортно поместится.
Насчет запилить самому… необязательно даже DualCDC можно просто взять пример виртуального COM- порта из ST и добавить туда фильтрацию. Но «дьявол» в мелочах… как вы будете менять правила? как хранить правила? как обрабатывать ошибки при вводе правила и работе системы? и тд… Да можно все решать перепрошивкой и изменением кода. Вот только врядли это будет удобно даже вам, для отладки сложного проекта правила надо менять очень часто и для этого каждый раз пересобирать и перепрошивать «инструмент» (вылавливая и фикся свои ошибки на ходу) очень неудобно. Польза от такокого проекта только гордость и опыт — тут я согласен это можно получить только от своего проекта. Эти бонусы SmartPipe не предоставляет :)
А есди вы преодалеете все трудности то у вас и получится свой SmartPipe, как он получился у меня… вот правда у меня он получился далеко не за вечер.
Насчет сложности настройки… да в современном мире «визуального программирования» такая проблема имеется, но как сделать проще пока не знаю.
Я «за вечер» говорил применительно к базовому варианту с захадкоженными фильтрами. Обновлять прошивку, а с ней и фильтры тоже не вижу особых проблем если предусмотреть бутлодырь скажем по Змодему. В принципе можно заливать даже просто одну функцию фильтрации, делается это несложно.