Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 5

Буквально вчера обнаружил довольно нужное изменение в drivers/usb/misc/ehset.c Оно по коду ерунда, но по важности весьма значительно. Все, кто по серьезному относятся к работе USB в своих железках будут довольны. Правда список хабов точно надо будет расширять. Был удивлен. Казалось что этот код давно не поддерживается за ненадобностью.

Можете рассказать подробнее?

Могу. Почему нет?

Для тестирования электрической части USB (2.0 точно, возможно и 3.x тоже - простите не в курсе) обычно используются дорогостоящие приборы. Не всем (даже крупным) разработчикам они по карману. С другой стороны, качество изготовления и трассировки плат, а равно соответствия заявленным требованиям критических компонентов (микросхемы защиты от статики, кварцы) очень хотелось бы проверять. В не зависимости от того надо ли нам получать официальную наклейку или или нет.

Есть такой документ Embedded Host High Speed Electrical Test Procedure. Если я все правильно понимаю, то Revision 1.01 от декабря 2018 года - она последняя. Суть в том, что с помощью не сильно дорогих и повторяемых оснасток, вместе с не самым дорогим осцилоскопом можно выполнить проверку на соответствие электрическим требованиям. Там описана плата VIDPID - данный драйвер как раз для нее. В реальной жизни ее легко можно заменить почти любым USB устройством, которое позволяет изменить свой VID и PID. Ну или найти микроконтроллер и быстренько набросать прошивочку (только тут аккуратнее - настоящая USB 2.0 до сих пор редкость и чаще всего там окажется 1.1).

Теперь о проблеме. С корневыми хабами проблем нет. Все работает как и ожидается. А вот в внешними... Возьмем для примера тестовую плату с VID 0x1A0A и PID 0x0104.Воткнутая плата с такими параметрами должна заставлять HOST непрерывно передавать пакет с заданным содержанием. Больше того, плату надо убрать, а пакет должен продолжать посылаться (для выполнения измерений). И корневой хаб всегда ведет себя именно так. А вот внешние... С частью работает, а с частью нет. Часть хабов просто присылаю событие - устройство отключено. Причина как всегда в том, кто и как внимательно читает требования спецификации. А по факту все внешние USB как правило уходят с внешнего хаба. Который капризничает при тестировании.

Данный коротенький патч исправляет эту неприятность. Нам точно подходит. Мы городили свои костыли, куда как более сложные. Потому и не показывали. А вот оказывается как можно было.

Спасибо! Развернутый ответ. Как приятно читать вменяемого "железника". Их скоро по пальцам пересчитать можно будет.

Не за что. Только, все же не "железячника", а "ембеддера". Первые это схемотехники-конструктора.

А по пальцам... Сложный вопрос. Единственный четкий факт состоит в том, что свободно на рынке нет ни тех, ни других. Впрочем, и спроса особо не наблюдается. Так что те, которые реально спецы хорошо и плотно осели. И в меру своих сил растят себе смену. Пока, как бы не стремился к нулю поток желающих заниматься стыком конструирование-схемотехника-программирование, нуля он не достигает. Как минимум воспроизводство специалистов пока есть. О росте, правда, говорить не приходится.

Впрочем, есть множество вещей где особых профи и не нужен. Весь передовой край разработки он скорее про прототипы и прочие proof-of-concept. И это, наверное, совершенно правильно. Только вот... Не хочется думать о судьбе даже самых успешных proof-of-concept, если не найдется тот. кто сможет поставить его на поток.

Впрочем, тут уже приходится залезать глубоко в дебри нашей специфики. Боюсь это "не формат" для комментария к статье.

P.S.

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий