Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Захват обмена по USB
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Интерфейсы
toweroff
Доброго времени всем

Есть два устройства, обменивающиеся данными по USB 2.0 full speed
Оба девайса - закрытые ящики и вкрутить туда что-то типа USB Monitor нет никакой возможности

то можно придумать для анализа обмена?
kovigor
Цитата(toweroff @ Aug 9 2011, 18:20) *
то можно придумать для анализа обмена?


Делал сниффер на 2-м Спартане. а потом - и на третьем, поскольку там Block Ram гораздо больше. Как раз для FS. Сниффер подключался параллельно к линиям D+ и D- и все изменения на этих линиях записывал в Block Ram, а потом эти данные сливались на PC и спец. программой на Delphi отображались в виде осциллограмм, которые я расшифровывал вручную (можно было сделать и автоматическую расшифровку, но мне хватало и ручной).

P.S. А почему вам аппаратный сниффер не подходит ? Для вашего случая - то, что надо. Правда, стоит он недешево ...
toweroff
Цитата(kovigor @ Aug 9 2011, 19:38) *
P.S. А почему вам аппаратный сниффер не подходит ? Для вашего случая - то, что надо.


Совершенно согласен. Например, вот такое по функционалу понравилось http://www.lineeye.com/html/p_610.html

Цитата(kovigor @ Aug 9 2011, 19:38) *
Правда, стоит он недешево ...


цену запросил, жду. Но, судя по всему, меньше килобакса не получится sad.gif

вот поэтому и хочется какое-то более дешевое решение, которое хотя бы данные гнало в сыром виде, потом пакеты вручную/чем-то разобрать и проанализировать
ar__systems
Цитата(toweroff @ Aug 9 2011, 11:58) *
вот поэтому и хочется какое-то более дешевое решение, которое хотя бы данные гнало в сыром виде, потом пакеты вручную/чем-то разобрать и проанализировать


Делал захват с помощью лог. анализатора за 500 баксов. Потом декодер сырых данных с анализатора пишется за несколько часов. Дешево и сердито. Длины буфера хватало чтобы захватить полностью enumeration.
toweroff
Цитата(ar__systems @ Aug 9 2011, 20:11) *
Длины буфера хватало чтобы захватить полностью enumeration.

как раз это-то не проблема - подключил к компу и посмотрел, что там энумеруется (ну, по крайней мере, в первом приближении так представляется sm.gif )
важнее именно дальнейший обмен в течение часов 5-6 (он там неинтенсивный, пакет байт 20-30 туда-сюда гоняется примерно раз в секунду)
ar__systems
Цитата(toweroff @ Aug 9 2011, 13:06) *
как раз это-то не проблема - подключил к компу и посмотрел, что там энумеруется (ну, по крайней мере, в первом приближении так представляется sm.gif )
важнее именно дальнейший обмен в течение часов 5-6 (он там неинтенсивный, пакет байт 20-30 туда-сюда гоняется примерно раз в секунду)
Тогда вам без USB анализатора никак. Я-то отлаживал именно процесс энумерации.
algidim
toweroff
Тоже очень интересует. Пришел ответ, сколько он стоит и удалось купить это чудо biggrin.gif
toweroff
Цитата(algidim @ Aug 23 2011, 11:24) *
toweroff
Тоже очень интересует. Пришел ответ, сколько он стоит и удалось купить это чудо biggrin.gif

обновили цены на алибабе, но как-то кусаче sm.gif
заказчику передал, пусть думают
вот тут

кстати, на ebay подешевле висит, $2650
ar__systems
Цитата(toweroff @ Aug 23 2011, 03:36) *
обновили цены на алибабе, но как-то кусаче sm.gif
заказчику передал, пусть думают
вот тут

кстати, на ebay подешевле висит, $2650


http://www.ellisys.com/products/usbex200/chart.php
WitFed
Возрожу опять же... По поводу основной тематики могу предложить написать свой хаб и ловить там в любую память, что душе угодно... wink.gif
Его девайсы с обоих сторон не должны бояться -- в хосте их обычно много (хабов), драйвера стандартные, протоколы... Только порт нисходящий будет один, и для этого достаточно суровое железо требуется.

У меня сейчас такое -- 2 OTG-контроллера, и на одном из них пытаюсь поднять флэшку из нескольких разных работавших где-то исходников.
Пока что получаю запросы Get_Descriptor, Set_Address, всего помногу, но в конце концов Вин7 ругается, что устройство не опознано. Хочется увидеть, что же за ответы от меня она получает, которые не годятся ?
Подскажите, какой ещё бывает солидный софт для Винды, кроме USB Monitor ?
Вчера его скачал и пустил в шареварном режиме Device Monitoring Studio от HHD Software, к обычным девайсам она липнет хорошо (мышь и USB-Blaster), пакеты показывает, может и "первое будущее подключенным" устройство словить от самого Get_Descriptor к нему, но моё -- никак. Хотя они явно легли под драйвера Винды фильтром и должны видеть всё, что мне шлётся и от меня возвращается. И падает иногда тихо. Мож заплатить надо или полечить до рабочего уровня ? Есть ссылки на аптеки ?
Или более другие софты надо качать ?
kovigor
Цитата(WitFed @ Sep 4 2014, 13:37) *
Подскажите, какой ещё бывает солидный софт для Винды, кроме USB Monitor ?

BusHound попробуйте ...
Alex11
Мы USBLyser используем леченый.
WitFed
Так USBLyser может показывать абсолютно всё ?
А то я снёс USB Monitor, поставил Bus Hound с трекера, русифицнул -- он молчит, собака wink.gif
И всё время требуются перезагрузки... Что мне болезненно и кажется непрофессиональным.
Сейчас вижу 4 доступных софт-хреновины:
- usbview забесплатно от MS;
- usb-monitor за 70 баксов;
- usblizer за 200;
- bushound за 700.
Буду сейчас ещё немного мучить последнего, вдруг настройки какие-то найдутся, -- выглядит более-менее профессионально.
А самый халвный usbview на 80 К видит мою девайсину, ругается желтизной, в дескрипторе показывает все 00-поля, но пакетов обратно не ловит.
kovigor
Цитата(WitFed @ Sep 5 2014, 10:53) *
Так USBLyser может показывать абсолютно всё ?
...
- bushound за 700.

Ни один программный сниффер, не покажет вам "абсолютно все". Доложите еще около 700 баксов и купите аппаратный сниффер, если у вас серьезные планы по работе с USB, особенно с HS. Например:

http://www.ellisys.com/products/usbex200/buy.php

Для FS я такой сниффер делал сам, на FPGA. Спец. ПО не писал, осциллограммы выводил на экран ПК простейшей программкой на Делфи и вручную разбирал содержимое пакетов (в чем, после некоторой тренировки, достиг немалого совершенства sm.gif). Без этого сниффера отладка моих устройств
сделалась бы невозможной ...
WitFed
Ох, как я не люблю демократически переразвитые политические установки...
Если в Винде пакет проходит через какой-то интерфейс, даже просто между разными DLL, то его можно словить, ибо там промежуточные таблицы адресов, только начальство должно поставить программеру максимальную задачу !
Пусть на этапе инита что-то там не через то место проходит, но то место тоже можно высветить фонариком ! wink.gif
Другое дело, что производители аппаратуры хотят продавать свои болванки и делятся, видимо, с кем надо, чтоб ПО не умнело.
Мне сейчас не нужно отлаживать резисторы и ёмкости в интерфейсе, оно всё живое, ибо Линукс с этой платы грузится и видит флэшку, но я хочу руками поднять OTG-контроллер в девайсном направлении (уже постился в ветке недалеко и безрезультатно).
Если мой контроллер сигнализирует в регистре прерываний разными битиками, что много чего к нему пришло, и читает приличный пакет SETUP на Dev_descriptor из фифошки, этому можно доверять. А вот Западенцам с их хитрым маркетингом -- нечасто wink.gif

В Bus Hound в самом конце Help/FAQ есть совет -- если вы чего-то не видите из пакетов, половите на вышестоящем хабе. При втыкании флэшки тот действительно всё ловит -- дескрипторы, строки, потом кучу данных (каталоги и FAT, вероятно), потом тоже не молчит... Но мой девайс в тот же порт (втыкание коннектора USB при пущенной в плате настроенной программе) не даёт хабу ничего. Когда треснуть мне ?... От гнилого инета уже тяжело башке wink.gif

Поставил Lyser, тот таки видит мой "девайс", но только после всех "танцев" от Винды через кабель, когда она поругалась в трее на неопределяемый девайс. Ловлю втыкание флэшки через хаб опять же -- всё на месте после некоего пролога (связанного с настройкой хаба, вероятно). Ловлю своё снова и снова -- ничего подобного, и где ж тут собака могла порыться ? Это же самое цимесное место -- оживить начало, потом уж легче, и на него не писано софта ? В Линуксе небось есть, но я с ним не дружу.

Может на ХР попробовать те же все проги ? Вдруг там легче жить на порядок хакерным драйверам ?
Нагуглил (жутко ненаучное это дело) ещё: Advanced USB Monitor (http://www.aggsoft.ru/usb-monitor/index.htm), но там вроде как кряков нет, несмотря на кучу дурных ссылок, наши держат ситуацию с Гуглем ! wink.gif Пробовал кто-нибудь это отечественное ?

Планы именно у меня серъёзные, но личные -- начальство говорит "сделаешь вещь -- будут деньги тада", это как обычно wink.gif
Просто подключить наш девайс к хосту и поработать с файловой системой, "скопировать" один девайс на другой целиком очень удобно, через Eth это гораздо трансректальней, хотя и страдаем уж лет 10, монтируя ФС хоста после особой компиляции нашего софта и потом в консоли занимаясь копированиями, даже без файло-менеджера, 19 век... wink.gif

P.S. Во вложении -- примеры, кто хорошо понимает протоколы Lyser -- гляньте, пожалуйста !
Первый файл fla.ulz -- рабочая флэшка, второй myf.ulz -- моя.
kovigor
Цитата(WitFed @ Sep 5 2014, 15:18) *
Когда треснуть мне

Что я вам скажу ? Хоть осциллограф-то хороший, двухканальный, возьмите, и посмотрите, что там реально происходит на шине при втыкании вашего устройства. Так и происходит ? Т.е., никто, никому и ничего не передает ? Странно и более чем сомнительно. sm.gif
Вообще, я вам по секрету признаюсь, что просто ненавижу использовать для отладки программистские инструменты там, где нужно пользоваться паяльником и осциллографом ...
WitFed
А у меня совершенно другая ориентация, у нас от отдела в радиусе 100 м нет никого "железного" и дружелюбного, осциллом пользоваться не умеют, тем более -- выдать и научить программиста кнопкам, переходник ловительный спаять...
Про "ничего не происходит" я могу только догадываться -- когда я пускаю свою прогу, она интит себя как девайс, вешается на прервание от OTG-1, не видит на нём ничего. Как следом втыкаю кабель в хост -- начинается масса разных прерываний, они обрабатываются по смыслу родным драйвером Линукса, который я хочу заюзать в простом линейном/древесном приложении. Там бывают непустое приёмное ФИФО, пустое передаточное, резет на шине, ещё что-то... Как Вин7 меня решает "бросить", прерывания все заканчиваются, т.е. очень логично предположить, что канал "ко мне" очень даже неплохой, только я отвечаю криво. Драйвер у Линды вызывает функцию гаджета для обработки события запроса дескриптора девайса, там я подсовываю 18 байт из исходника флэшки для контроллера STM32, который вроде должен быть живой и давно висит на сайте, хотя и не гуглится в принципе (http://www.keil.com/download/docs/362.asp). В ФИФО ответное пытался писать и по 8, и сразу 20 байт (там в запросе стоит 100 байт на приёмный буфер), но разница не особо, хотя поведение Винды меняется -- видит она что-то явно.
Пробовал сегодня agg-ПО -- слабое, "танцы" не ловит, мой девайс не показывает после всех "танцев" плохим, на хабе тоже пусто.

...Похоже, вы, kovigor, на всём постсоветском пространстве единственный доступный и реальный спец по USB ?
Я послал в саппорт aggsoft.ru просьбу о доработке софта и возможной покупке, только когда будет ловиться всё абсолютно, мож отнесутся с сердечностью, всё ж наши люди...
А пока сношу всё и жду у разбитого корыта, вдруг Золотая Рыбка подкинет какую мыслю... Оптимизм пока в крови, всё хочется свой USB написать на 2 порядка проще, для простого народа wink.gif
Хорошо бы было "аппаратный" сниффер на софт-основе -- как я советовал в первом посте, чисто хаб с отводом нисходящего и восходящего трафика "налево", без избыточной аппаратной поддержки, или так оно в девайсах за 1.5К и есть ? Если пара устройств засекреченные, то хост может и не потерпеть посредников, но текущий случай тривиален.
...Вообще, можно ставить какой-то новый софт для USB, когда ещё не было перегрузки после удаления чего-то другого снифферного ? Они ж там драйвера из непонятных наблюдательных слоёв как-то хитро вырезают, а другой конкурент врезаться в потроха одновременно должен...
kovigor
Цитата(WitFed @ Sep 8 2014, 12:22) *
...Похоже, вы, kovigor, на всём постсоветском пространстве единственный доступный и реальный спец по USB ?

А пока сношу всё и жду у разбитого корыта, вдруг Золотая Рыбка подкинет какую мыслю...

Хорошо бы было "аппаратный" сниффер на софт-основе -- как я советовал в первом посте, чисто хаб с отводом нисходящего и восходящего трафика "налево", без избыточной аппаратной поддержки, или так оно в девайсах за 1.5К и есть ?

Если пара устройств засекреченные, то хост может и не потерпеть посредников, но текущий случай тривиален.

1. Далеко не единственный, хоть и вполне реальный sm.gif

2. Вы просто не с того конца и не с тем инструментарием к проблеме подошли. Как вы и сами знаете, далеко не всякую болезнь может вылечить терапевт. Иногда необходима и помощь хирурга. Это как раз и есть тот случай. Я, конечно, не рыбка, и не золотая, но повторю свой совет - ищите человека, который поможет вам посмотреть осциллографом (или анализатором или даже сниффером), что в действительности происходит на шине при включении вашего устройства. Чисто программными инструментами искать причину проблемы можно до бесконечности. Про себя лично могу сказать, что без сниффера отлаживать свои устройства не смог бы, ибо он показывает то, чего не прочтешь ни в одной спецификации.

3. Без аппаратной поддержки задача, ИМХО, неразрешима. Подозреваю, что в снифферах за 1500 у.е. стоит заказной уникальный быстродействующий чип, который и захватывает обмен на шине. В моем случае с задачей справилась обычная FPGA, т.к. мне хватало FS (обмен на HS таким путем захватить не получится - слишком быстро).

4. У меня никаких посредников и не было. Сниффер подключался параллельно прямо к линиям шины и в режиме "магнитофона" записывал все, что на шине происходило ...
WitFed
Это всё хорошо, только неохота ввязываться в лишнюю сансару (в самом USB она зашита прочно, за видимой простотой -- мутные горы гемора, порождёнными желаниями авторов "всё организовать и возглавить", а по факту -- переусложнением, предусмотрением всех подушек безопасности, соответственно, заорганизацией и... в конце концов рождением OTG в пику Главной Идее wink.gif -- нечто за 1500 может оказаться недостаточно удобной, способной на что-то штукой, и т.д. к 3К, 10К.. Мож есть у кого в Таганроге такие девайсы на вынос на пару дней ?
Я считаю твёрдо, что вполне можно подсмотреть, что же Винда там получает от хост-контроллера (это очень логично) на драйверных уровнях, и при совсем уж непонятках только лезть в физические дебри канальных уровней.

Бой быков приостанавливаем ? wink.gif Тяжело пробиться, конечно, через стены корытных интересов и расставленные паутины для ловли лузеров типа меня. Оно понятно, что на коленке всё легче, но хочется из мира выудить хоть какую-то добропорядочность из-под гнетущих эгоистических интересов wink.gif

Подсказали идею в Линуксе тем же самым заняться, там логи на всё (http://symmetrica.net/usb/usb1.htm) типа более родные, говорят, что wireshark 1.2 и выше умеет сниффить USB в Линде, но мой 1.8 почему-то на Винде это не демонстрирует, хотя как-то перенастраивается...

Наши сниф-производители пишут "мы работаем с тем, что Win определила", так что пока не судьба.

В http://microsin.ru/content/view/758/44/ ещё пара намёков на совсем другие программы: SnoopyPro-0.22 и USBTrace, покой нам только снится... wink.gif

Я сам придумал недавно, что можно дождаться, пока Винда отбракует мой девайс, а потом выбрать его и послать пакет Get_Descriptor, только нужна программа, в которой девайс виден и умеющая слать пакеты, чтобы смогла словить обмены, но пока они все ортогональны в этих отношениях.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.