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

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

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


Вы здесь » Микроконтроллеры » Старое » Подключение/отключение USB-устройства


Подключение/отключение USB-устройства

Сообщений 31 страница 47 из 47

31

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

Всю эту хрень с самопридуманными флажками [как я понимаю ноги растут от st-шной spl] по-хорошему надо выкинуть, а не тиражировать
Есть стандартный автомат control транзакций - setup-data-status stages, подробно пересказанный Axelson в её книжке про usb и разжёванный до манной каши в http://www.usbmadesimple.co.uk/

Такие "намоленные" вещи как RTOS, Modbus, LCD, общеупотребительные интерфейсы, многие стараются применять в виде готовых библиотек, потому как начальство испытывает удовольствие не от твоего процесса программирования, а от продажи его результатов и поэтому не только много времени не выделяет, но еще и норовит на прочую текучку отвлечь. Тут уже не до написания полного стека (пусть и разжеванного) - подобрать бы наиболее похожий пример, да "согнуть" под себя с минимальными трудозатратами.

32

Если потом прокатит отмазка, что я не виноват, это оно виновато )

33

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

Если потом прокатит отмазка, что я не виноват, это оно виновато )

В таких случаях обычно не виноватых ищут, а оперативно устраняют последствия (начальство, когда торопило, понимало на что шло). Но если библиотеки "обкатаны", то чаще всего обходится без фокусов. К сожалению USB'шные библиотеки от ST никак не тянут на звание "нормальные", вот и приходится искать альтернативы.

34

Что-то мне это напоминает )
http://nuclphys.sinp.msu.ru/jokes/j08.htm

применять в виде готовых библиотек
взять код демки

оперативно устранять последствия
запостить вопрос в форум

35

vt, ну ты же сам знаешь прекрасно, что ширпотребные USB-либы - дичайшее говно. И надо делать что-то нормальное. Я согласен, что нужно вылизывать код по-человечески и уходить от уровня "демки", было бы время...
Я достаточно много времени убил на чтение разной информации по работе USB, но так ни хрена и не понял! Потому что нигде не нашел доходчивого объяснения, что в каком порядке происходит (а не так, как расписывают в нудных статьях, где никакого существа, только общности). Вот и тыкаю наугад все эти флаги: NAK, VALID и т.п. С USB еще сложно то, что wireshark дает дамп на слишком высоком уровне, а логанализатор - на слишком низком.
Благо, мне не нужно с флешками возиться (я не встречал вменяемой реализации ext2/ext3 для флешек, а vfat там нахер не нужен).
С сетью я тоже обхожусь средствами внешними (одноплатником, например).

А всю мелочь:  экранчики, датчики и т.п. приходится практически с нуля писать самому. Т.к. тот код, что обычно находишь в интернете, только абдуринщику и можно показать...

36

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

С USB еще сложно то, что wireshark дает дамп на слишком высоком уровне, а логанализатор - на слишком низком.

https://docs.microsoft.com/en-us/window … -analyzer-
В свое время очень мне помог с отладкой моей клавиатуры.
Причем под линуксом на Распи она работала прекрасно, на виндах не хотела. С этой тулзой нашел несоответствие в последовательности, но точно уже не помню, что там было.

Отредактировано MasterAlexei (2019-10-16 15:08:30)

37

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

было бы время...

Поодиночке - ни у кого нет возможности, сообща - ни у кого нет желания, все же бескомпромиссные художники )

38

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

Выше некуда )

Да смотрел по таблице у местных продаванов) буду знать и прикуплю в TSOP20.

39

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

взять код демки

Пока нет нормальных библиотек - в ход идут в том числе и демки.

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

оперативно устранять последствия
запостить вопрос в форум

Чем не вариант? В конечном итоге все равно решил сам, но сначала надежда теплилась  :D .

40

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

В конечном итоге все равно решил сам, но сначала надежда теплилась  :D .

“Ask not what your country can do for you – ask what you can do for your country”
Лично мне фиолетово решение чьих-то личных проблем, другое дело если б ты решал общие

41

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

Лично мне фиолетово решение чьих-то личных проблем, другое дело если б ты решал общие

Я озвучил свои результаты - вдруг кому-нибудь еще пригодятся.

42

Вот Eddy_Em работал с CAN, но статей не пишет. Может попросить его пусть он тут напишет как стартовать с CAN, в рамках работы с F0 раз уж мы решили полностью разобрать это семейство. Тема интересная.

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

“Ask not what your country can do for you – ask what you can do for your country”
Лично мне фиолетово решение чьих-то личных проблем, другое дело если б ты решал общие

Пока нет общей цели, то и проблем общих не будет. Всем фиолетовы чужие проблемы, никто не будет тратить свое время. Я отвечаю только если ответ занимает не больше 5 минут, т.е. если я знаю в чем проблема и могу помочь, а копаться в чужом коде просто так никто не хочет.

43

А какой смысл расписывать то, что есть в даташите и RM? CAN значительно проще USB. Если не выдумывать хитрые фильтры, а также работать с обычной 11-битной адресацией, там все так же просто, как с UART. Писать "статьи" про UART же никому в голову не придет? (там тупо из сниппетов инициализация) На CAN, кстати, тоже есть сниппеты. Единственное, с чем мне пришлось повоевать — определение отсутствия приемников на шине (чтобы набортным светодиодиком мигать "ахтунг! провод оборвали!").
Код мой лежит на гитхабе, кому интересно — пусть берут.
Разве что пришлось при инициализации USB учитывать то, что часть буфера отжирает CAN (а то я поначалу протупил, и у меня часть буфера получилась "общей", что вызывало неописуемые глюки).

44

Я думаю, что главная общая проблема - несовместимость кода
Я писал тут уже об этом полтора года назад [ Совместимость кода ] и если за это время ничего не изменилось, то и не изменится
Наверно единственный вариант - перейти на объектные файлы и текстовые хедеры к ним, т.е. совместные проекты на уровне библиотеки объектных файлов, а не исходников

45

Объектные файлы? Ты серьезно?
Не годится такая "разработка". Я, например, не уверен, что объектники, собранные разными версиями arm-none-eabi-gcc, уживутся на стадии линковки. Еще большая проблема - разница архитектуры: где-то hardfloat'ы, где-то soffloat'ы, где-то даже деление софтовое... Во что в итоге это выльется?

А исходники - они и в Африке исходники! Просто выдираешь нужный тебе кусок (как из сниппетов), вставляешь к себе в код и минимально допиливаешь.

46

После gcc уживутся, ну думаю 99%, полной гарантии нет конечно, но про кейлы, иары и т.п. придётся забыть
Архитектура естественно тоже должна быть только одна - для начала например m0
Полные исходники при этом никто не запрещает прикладывать
Бонусом будет возможность использовать для приложений чистый gcc без привязок к мк

47

Решил сварганить CDC ACM. Обмен дескрипторами происходит верно: в системе появляется /dev/ttyACM0, dmesg не ругается, lsusb все верно показывает.
А вот обмен данными что-то не идет... Надо будет покопаться - что ж за хрень такая!..

UPD: заработало! Я проглючил, и IN/OUT концевые точки перепутал.
Теперь остается найти, как узнать, что USB отключили. Еще было бы неплохо узнать, что клиент отключился, но, в отличие от pl2303, ядро не посылает SEND_BREAK после выхода клиента...

UPD2: Таки вымучил классический CDC ACM на STM32F103. Заодно добавил туда детектирование подключения/отключения клиента. Вот только чтобы детектировать физическое подключение, придется мониторить уровень напряжения на USB порту — почему-то аппаратных вариантов (скажем, прерывание сгенерировать как только кабель выдернут) нет! Я надеялся было на SUSP — прерывание по бездействию — но эта зараза присутствует не только при отключенном кабеле, но и при отсутствии подключенного клиента!
Еще один небольшой недостаток: почему-то не работает на андроиде. Возможно, там какой-то тивоизированный модуль ядра, который распознает лишь ACM с определенными VID/PID, а не произвольными!


Вы здесь » Микроконтроллеры » Старое » Подключение/отключение USB-устройства