Микроконтроллеры

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Микроконтроллеры » Архив » usbepx - монитор USB endpoints


usbepx - монитор USB endpoints

Сообщений 1 страница 28 из 28

1

Монитор прямого доступа к usb endpoints
По мотивам из темы МК+ПК

http://sg.uploads.ru/ENMts.png

Конфиг endpoints и форматов данных пока в текстовом файле

Код:
array set config {

    vid 0x6666
    pid 0x5500

    in1  {64 i I s S c a5}
    out1 {64 i I s S c a5}
    in2  {64 i h4 H4 H6}
    out2 {64 s s s s a3}
    in3  {64 s}
}

Обозначения форматов - https://www.tcl.tk/man/tcl/TclCmd/binary.htm

Весь дистрибутив

Код:
usbepx.cfg
usbepx.exe
libusb-1.0.dll

https://yadi.sk/d/naqKh4e03EDEJU/Tcl/

Отредактировано vt (2019-07-23 19:23:37)

2

Скриптовые возможности безграничны )
Потому что внутри полный Tcl/Tk [epx.exe не компилированный файл, а starpack - https://wiki.tcl-lang.org/page/Starpack ]
Добавлением в конфиг команды "console show" или двойным правым кликом открывается ещё одно окно - консоль Tcl
Все поля gui доступны в массиве var
http://sd.uploads.ru/eUK0y.png

Вот, к примеру, я создаю процедуру p1, печатающую системные миллисекунды и первое число из endpoint in1
Пробую как она работает и привязываю её вызов к событию перезаписи числа, т.е. получается автоматическая трассировка при приёме каждого пакета в endpoint in1
http://s3.uploads.ru/vBAkr.png

Всё это обычные команды tcl, вся специфика - только массив var
Ну и все эти команды можно не набирать, а поместить в тот же конфиг - файл epx.cfg

Код:
array set config {

    vid 0x6666
    pid 0x5500

    in1  {64 i I s S c a5}
    out1 {64 i I s S c a5}
    in2  {64 i h4 H4 H6}
    out2 {64 s s s s a3}
    in3  {64 c c}
}

console show

proc p1 args {
    global var
    puts "[clock milliseconds] $var(in1data0)"
}

trace variable var(in1data0) w p1

3

А зачем под игровую приставку? И есть же wireshark...

4

Оно полностью кроссплатформенное
Все исходники [скрипты] запакованы в starpack в открытом виде
Starpack просто перепаковывается под линукс или мак
Ну или вообще не запаковывать, а пользоваться прямо скриптами

Wireshark - сниффер, а это и-фейс ввода-вывода
Кнопки receive - фиксирующиеся, если нажаты, то постоянные запросы и постоянное обновление, т.е. текущие значения данных
Кнопки send - нефиксирующиеся, при нажатии - разовая передача

5

очень интересненько

6

selevo написал(а):

очень интересненько

На скриншотах, кстати, вот этот тест - CH55x (CH551-CH554)

7

Версия 0.2
С контролем ошибок форматов при вводе данных [поле подсвечивается, данные не передаются]

http://s7.uploads.ru/IkBxf.png

И ребрендинг )
epx --> usbepx

8

тоесть этой штукой я могу управлять любым  USB устройством из консоли ?
Данные не передаются это  в смысле неудачная попытка передачи или значение фксированное?

Отредактировано selevo (2019-04-03 12:26:28)

9

Не любым, только тем, для которого драйвер в ОС позволяет открыть прямой доступ к endpoints девайса
Драйвер winusb, например, в виндовс
Теоретически возможно и hid, и serial, и другие отцеплять от системных драйверов, но это не просто и не всегда возможно

Данные не передаются - это когда нажимаешь send, то сначала проверяется соответствуют ли данные форматам, если хоть одно поле не соответствует, то send ничего не делает - не передаётся весь пакет

Отредактировано vt (2019-04-03 12:58:48)

10

Эксперименты в области теоретически возможного )

Беру обычную usb мышь
С некоторым скрипом zadig ставит на неё драйвер winusb
И usbdeview начинает показывать вот такое странное
http://sh.uploads.ru/KUanO.jpg

Делаю такой конфиг

Код:
array set config {

    vid 0x1A2C
    pid 0x0042

    in1  {4 c c c c}
}

И вуаля
http://sg.uploads.ru/6NUWR.png
Первый байт - это зажатая левая кнопка, второй и третий - дельта x, дельта y

11

zadig по-моему любой драйвер может на другой подменить.
Интересная мысль.
А мышка перестала двигаться по экрану?

Отредактировано selevo (2019-04-03 17:23:18)

12

Да, конечно перестала, она и в Диспетчере убралась из мышиного раздела
И сделать её снова мышью может быть проблемой, удаление в Диспетчере не помогает )

13

ну естественно
драйвер надо  вернуть задом он же подменен.

14

Версия 0.3
Если не может законнектиться с девайсом, то автоматически переходит в режим симулятора
outN --> inN
И можно просто посмотреть и проверить как работают разные форматы
http://s9.uploads.ru/JmHAO.png

15

предлагаю   написать пост о конкретном  применении этой  программы на каком-то примере и можно с видео версией.

Это для быстрого вхождения в курс остальных.
Хочу  сделать несколько репостов публикации.

Отредактировано selevo (2019-05-03 13:47:48)

16

Простой пример - это и-фейс к мк, где какая-то своя простая программа
Но это будет пример с некой неведомой зверушкой, а если углубляться в мк, то слишком широкий охват
В серийных vendor specific девайсах непростые протоколы [в тех же программаторах/дебагерах, например] и соотв пример простым не получится
А с мышью был не пример, а изврат
То есть эта тулза для тех, кто хотя бы немного в курсе про usb в мк

Версия 0.4
С нумерацией полей

http://s5.uploads.ru/aWerm.png

Отредактировано vt (2019-05-03 21:46:39)

17

о нет..
Только сейчас заметил  опять новый язык интерпретатор Tcl/Tk
http://sg.uploads.ru/t/XcCYW.jpg

Отредактировано selevo (2019-05-04 10:33:47)

18

selevo написал(а):

о нет..
Только сейчас заметил  опять новый язык интерпретатор Tcl/Tk

Как ты мог этого не заметить - весь второй пост темы об этом
Такую же визуализацию можно сделать и на питоне, usb-шная часть там уже есть - Python любые вопросы и обсуждения
Хотя питоновский tkinter это всё равно внутри tcl

19

Версия 0.5
Мелкие улучшения, ничего существенного [ссылка на архив в первом посте темы]
После трёх месяцев пользования считаю, что уже не альфа-версия, а бета )

20

как это  все мне поможет в отладке  ch55x ?

21

selevo написал(а):

как это  все мне поможет в отладке  ch55x ?

Буферы endpoints это просто куски памяти в мк
Монитор постоянно читает и показывает IN-endpoints, т.е. читает и показывает часть памяти мк
При этом от программы в мк требуется только постоянно переустанавливать флажки разрешения чтения, а саму передачу делает аппаратный контроллер usb без участия программы
И в другую сторону - по кнопке send монитор пишет в OUT-endpoints, т.е. прямо в память мк
От программы в мк при этом опять же требуется только следить за флажками поступления данных, сам приём делает аппаратный контроллер usb

В ch55x буферы endpoints размещаются в обычной памяти, в которой хранятся структуры данных программы
В sdcc и turbo51 есть средства мэппирования структур данных - можно размещать их с привязкой к уже существующим структурам или абсолютным адресам, а не там где вздумается компилятору
Если мэппировать структуры данных в массивы буферов endpoints, то монитор получит доступ к таким структурам, т.е. возможность читать и писать их в реальном времени

22

это интересно, хорошо бы какой-то реальный пример  отладки  в виде видеоролика.

23

Вообще-то мне нужны не зрители, а тестеры )
А для этого надо запускать девайс c winusb и-фейсом
Для ch55x это либо пример VendorDefinedDev из их firmware, либо мой пример на turbo51

24

странный подход. обычно собирают аудиторию, а уже потом отсеивают не нужных. а у вас(тебя) с начала отсев потом сбор. а собирать уже и некого... или нет?
как мне кажется(крестится не буду вера не позволяет), надо двигаться в направлении labview, только узко специализировано - усб. тогда будет успех. направление выбрано очень правильно. осталось либо все самому - либо все таки и зритлей придержать и умножать, вдруг кто в тестеры(и не только) пропишется. так то обычно оно за "непростотак" тестируется... или подход "ртос оса" - сначала раздается, а потом попытки "$респект$" вырубить? если это $модель, то и начинать надо с $, а если нет, то надо изначально как то все "разрулить". кому, для чего, какие цели... и т.д. и т.п.. не?
а вообще - интересно. скоро юзать usb для жирных и быстрых потоков по усб. все рассматриваю. выбираю, сортирую, рассматриваю, думаю.

Отредактировано RA (2019-08-22 21:38:16)

25

Я никого не собираю и тем более не отсеиваю )
Просто считаю эффективным только гугл и перекрёстные ссылки

26

зрители потенциальные  тестеры - это факт, это синоним.
для этого и нужен ролик ))

27

selevo написал(а):

зрители потенциальные  тестеры

Я думаю, что в данном конкретном случае нет

28

Версия 0.7
С терминальным режимом

http://sd.uploads.ru/SNPb6.png

Для этого две endpoints [in и out] целиком отдаются для приёма-передачи текста
В конфигурации это обозначается словом string вместо списка форматов

Код:
in3  {64 string}
out3 {64 string}

Вы здесь » Микроконтроллеры » Архив » usbepx - монитор USB endpoints