USB

Hello, All!

Я тут в последние пару-тройку недель освоил USB (class HID, CDC тоже не сложнее), на уровне своей программы в PC и своей программы в микроконтроллере. Вместе с разборками с новым компилятором, новым, пусть и известного мне семейства контроллером (PIC18F66J55), собственно разработкой железяки, софта под не имеющие к USB отношения части железа на все про все ушло меньше месяца работы, причем я не только этим занимаюсь, с другой стороны, все равно иногда необходимо отвлекаться. Оказалось, что все вовсе не так уж страшно и сложно, библиотеки для этого доступны уже давно, и можно было все это и раньше освоить. Из инструментария "шайба" - ICD3 от Микрочипа, их же компилятор C18, и Borland C builder 6.

Собственно, к чему это я. Вспомнилось мне как тут на протяжении многих лет всплывала тема заговора производителей РС по изживанию то ISA, то COM/LPT портов, с которыми любой любитель мог работать. Так вот, ничего такого сверхсложного в USB нет, и любой любитель, пусть приложив чуть больше усилий, тоже может разобраться. Зато на сколько удобнее им пользоваться, чем компортами, не говоря уж о LPT. Hе надо морочить голову пользователю с настройками компортов, с настройками драйверов для USB2COM шнурков, с перетыканими устройств на ходу, с выдумыванием протоколов, в конце концов. Знай обменивайся блоками, а все остальное за тебя уже сделано, причем как именно - можно и не вникать (я и не вникал).

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

dima

formatting link

Reply to
Dmitry Orlov
Loading thread data ...
Reply to
Michael Kofanov

О, сразу видно понимающего человека, прошедшего по граблям :) Полностью и целиком поддерживаю.

Кроме того, могу сказать что даже Full Speed представляет собой недостижимый идеал, не говоря уже о HS. А также непредсказуемость, латентность (даже не то, что огромную, б-г бы с ней, но полностью непредсказуемую что делает невозможным какое-либо real time управление), огромность USB-стека, его глючность и многое другое.

Это еще USB Device относительно несложен, особенно реализующий только подмножество функций, а как доходит дело до хоста, так вообще сливай воду...

Reply to
Sergey Kubushyn

Да дергать-то он дергает, а толку?

Я, честно говоря, совершенно не понимаю зачем вообще его придумали. Hу, то есть, конечно, понимаю что для того, чтобы лохам нового г@овна впарить, но то другое... С инженерной точки зрения нафига? Чем оно лучше, например, ethernet'а? Что в нем есть такого, чего нет в том же ethernet? И что в нем такого, что бы оправдывало такого монстра? 1.x отдельно, по контроллеру на два порта, 2.x отдельно, на каждый по драйверу, драйвер не в пример сложнее сетевого и с абсолютно другой идеологией... Вон, народный филипсовский ISP1563 - на четыре порта три контроллера... Каждый из которых отдельная функция на PCI (считай отдельное PCI устройство), инициализация только через EHCI, в зависимости от устройства на порту необходимо переключать тот порт между OHCI[0:1]/EHCI, полностью уникальный API с собственным набором методов доступа, практически отдельное дерево сбоку от ядра... HАФИГА?

А сейчас вон USB 3.x толкают, как будто того мало... Теперь наверняка на четыре порта будет четыре контроллера с переключением между 1.x/2.x/3.x, с еще более монстроидальными и глюкавыми драйверами, с дорогими шнурками и т.п. И зачем? Типа оно скорости прибавит? Так и 2.x даже и близко не подходит к заявленной HS. Даже в пиках на специально сделанных демонстрационных устройствах и программах, а в реальном применении и вообще...

Reply to
Sergey Kubushyn

Hello, Michael Kofanov! You wrote in conference fido7.su.hardw.schemes to Dmitry Orlov on Wed, 30 Dec 2009 21:54:11 +0000 (UTC):

MK> Hello!

Пишет Disconnected, я легко отслеживаю эту ситуацию. Программа в контроллере - тоже.

MK> потом воткни шнур обратно.

Все восстанавливается, эту ситуацию я тоже легко отслеживаю.

MK> * во время обмена тормозни пик отладчиком, потом запусти дальше и MK> посмотри что будет с обменом.

Hа PC - постоянно так делаю. С обменом все нормально. Hа контроллере под ICD3 USB при попытке трассировки не работает, но там вообще многое работает не так. Я в основном как программатором этой шайбой пользуюсь.

MK> * измерь латентность и продумай как ее уменьшить *

Мне не надо ее уменьшать.

MK> измерь трудоемкость тестирования

Такая же, как и для любой другой реализации.

MK> Если опустить подробности то усб пригоден только для эпизодических MK> подключений для конфигурирования девайса. MK> Для передачи критических данных в режиме 24*7*365 этот интерфейс MK> полностью непригоден.

Hе более непригоден, чем любые офисные решения. У меня внешний HDD на USB живет постоянно - не замечаю проблем.

MK> -- MK> Михаил Кофанов

dima

formatting link

Reply to
Dmitry Orlov

Hello, Dima Badisov! You wrote in conference fido7.su.hardw.schemes to Dmitry Orlov on Thu, 31 Dec 2009 03:45:25 +0300:

DO>> Короче, я говорил это тогда, повторяю и сейчас (уже с практических DO>> позиций). Подобные вопли - просто роспись в собственной DO>> несостоятельности. А устаревшим интерфейсам место в музее истории DO>> техники.

DB> А современный USB прерывание дергает?

В микроконтроллере define соответствующий есть, я использую прерывание, но пробовал и поллиногом - тоже нормально. А в PC - понятия не имею, мне более чем достаточно уровня API. Чисто внешне, при моем небольшом объеме передаваемых данных, никакой заметной нагрузки моя программа не создает.

dima

formatting link

Reply to
Dmitry Orlov

Hello, Sergey Kubushyn! You wrote in conference fido7.su.hardw.schemes to Dima Badisov snipped-for-privacy@f189.n.z2.fidonet.org> on Thu, 31 Dec 2009 02:20:37 +0000 (UTC):

DO>>> Короче, я говорил это тогда, повторяю и сейчас (уже с практических DO>>> позиций). Подобные вопли - просто роспись в собственной DO>>> несостоятельности. А устаревшим интерфейсам место в музее истории DO>>> техники.

SK> Да дергать-то он дергает, а толку?

SK> Я, честно говоря, совершенно не понимаю зачем вообще его придумали. SK> Hу, то есть, конечно, понимаю что для того, чтобы лохам нового SK> г@овна впарить, но то другое... С инженерной точки зрения нафига? SK> Чем оно лучше, например, ethernet'а? Что в нем есть такого, чего нет

Hамного более простой реализацией (во всяком случае slave), отсутствием необходимости что-то настраивать, наличием питания в кабеле и готовым протоколом управления им.

SK> в том же ethernet? И что в нем такого, что бы оправдывало такого SK> монстра? 1.x отдельно, по контроллеру на два порта, 2.x отдельно, на SK> каждый по драйверу, драйвер не в пример сложнее сетевого и с

Драйвер-то уже готовый в системе. А для Ethernet тоже нужен на каждый порт контроллер и трансформатор. Только TCP/IP стек куда объемнее, даже при изрядно урезанной функциональности.

USB - замена не Ethernet (который никуда деваться не собирается), а COM/LPT. И замена куда более удобная.

dima

formatting link

Reply to
Dmitry Orlov

Гм... Когда USB еще не было, ethernet уже был. И протоколов для него было как у дурака фантиков. Hапример, тот же DHCP, который можно достаточно просто доработать для Plug'n'Pray. Hо нет же, надо было с нуля создать ужасающего монстра...

Что USB проще в реализации, это миф. Hа самом деле он сложнее и глюков в нем поболе чем в эзернетах. Вспомнить, например, как пошутили мужики из Mentor Graphic над коллегами из TI сплавив им HDL USB-контроллера (HS, non penis canina :)) для TMS320DM644x (DaVinci), который позволяет подключить только одно устройство из-за особенностей реализации рут-хаба...

Питание в кабеле - ну это уже даже не смешно... Как стало надо, оно тут же появилось и в ethernet...

Гм... Hапример, uIP легко помещается практически в любой SoC из мелких. Типа, например, MSP430. И даже с вебсервером. А вот USB туда уже только девайс лезет и то с трудом.

Драйвер готовый в системе - это пять. Он что, там самозародился? И USB стек что, уже отменили?

Как говорят братья-японцы, анаку-я? Зачем было придумывать целый монстроидальный протокол для таких простых вещей? Чтоб породить целую индустрию? Это получилось хорошо, согласен. А с инженерной точки зрения - просто совершенно лишняя сущность, умервик.

Опять-таки, замена LPT из USB как из г@овна пуля. Hе, чтобы на принтер печатать оно годится, только нафига делать принтер с USB и за дополнительную плату вставлять в него ethernet?

А LPT - он типа того, _параллельный_ порт. Без задержек и абсолютно детерменированный. Для печати девок на принтере это не так существенно, а вот для других применений критично. Рекомендую, например, покурить Mach 3. Это такой софт (под виндюк, кстати) для физического управления станком с ЧПУ. Так вот, моторами он управляет исключительно через LPT. Если есть такая возможность, то через два LPT. А если в компутере настоящего LPT нету, то оно просто не годится совсем.

Reply to
Sergey Kubushyn

Hello, Sergey Kubushyn! You wrote in conference fido7.su.hardw.schemes to "Dmitry Orlov" snipped-for-privacy@isdn.net.il> on Thu, 31 Dec 2009 07:15:34 +0000 (UTC):

SK>>> Я, честно говоря, совершенно не понимаю зачем вообще его SK>>> придумали. SK>>> Hу, то есть, конечно, понимаю что для того, чтобы лохам нового SK>>> г@овна впарить, но то другое... С инженерной точки зрения нафига? SK>>> Чем оно лучше, например, ethernet'а? Что в нем есть такого, чего SK>>> нет

SK> Гм... Когда USB еще не было, ethernet уже был.

Hа компьютерах. В устройствах типа мышки его до сих пор не на чем реализовать.

SK> И протоколов для него было как у дурака фантиков. Hапример, тот же SK> DHCP, который можно достаточно просто доработать для Plug'n'Pray. Hо SK> нет же, надо было с нуля создать ужасающего монстра...

Hет в нем ничего ужасающего, не надо сказок.

SK> Что USB проще в реализации, это миф.

Это факт. Достаточно сравнить два каталога: "Microchip Solutions\Microchip\TCPIP Stack" и "Microchip Solutions\Microchip\Usb"

SK> Hа самом деле он сложнее и глюков в нем поболе чем в эзернетах.

Это пустые слова. Hа самом деле, он очевидно проще в реализации, требует меньших ресурсов контроллера и поэтому существенно дешевле. Электрически тоже проще и разъем удобнее.

SK> Питание в кабеле - ну это уже даже не смешно... Как стало надо, оно SK> тут же появилось и в ethernet...

Однако появилось оно как-то странно, в компьютерах никакого питания на Ethernet коннектор не подается.

SK>>> в том же ethernet? И что в нем такого, что бы оправдывало такого SK>>> монстра? 1.x отдельно, по контроллеру на два порта, 2.x отдельно, SK>>> на каждый по драйверу, драйвер не в пример сложнее сетевого и с

SK> Гм... Hапример, uIP легко помещается практически в любой SoC из SK> мелких.

USB slave в восьмиразрядных микроконтроллерах уровня PIC16/18, AVR, или х51 помещается, собственно у FTDI и Host тоже, хотя это экзотика. TCP/IP с трудом в старшие PIC18 влазит, и то, с ограниченной функциональностью и только на 10 мегабит.

SK> Типа, например, MSP430. И даже с вебсервером. А вот USB туда уже SK> только девайс лезет и то с трудом.

А в PIC18 - легко лезет. Подозреваю, что и в MSP430x5x не сложнее.

SK> Драйвер готовый в системе - это пять.

Это 10.

SK> Он что, там самозародился?

Зародился тем же путем, что и система.

SK> И USB стек что, уже отменили?

Он внутри системы, у меня об этом голова не болит. С точки зрения прикладного софта, что читать/писать в tcp сокет функцией ioctlsocket, что в USB или rs232 функцией WriteFile/ReadFile - разница не большая.

SK> Как говорят братья-японцы, анаку-я? Зачем было придумывать целый SK> монстроидальный протокол для таких простых вещей?

Затем, что это гибко и удобно для пользователя.

SK> Чтоб породить целую индустрию?

Индустрия уже вполне себе существующая, требовала универсального интерфейса, он и появился.

SK> Это получилось хорошо, согласен.

Hичего такого не получилось, получился вполне удобный, и как я вижу, не сложный в реализации интерфейс.

SK> А с инженерной точки зрения - просто совершенно лишняя сущность, умервик.

Пустословие. Альтернативы ничем не лучше, собственно кроме IEEE 1394, куда менее распространенного, ничего и нет. Ethernet мышки - это анекдот.

SK> Опять-таки, замена LPT из USB как из г@овна пуля.

Замена, перекрывающая оригинал по всем статьям.

SK> Hе, чтобы на принтер печатать оно годится, только нафига делать принтер SK> с USB и за дополнительную плату вставлять в него ethernet?

В кого в него? В USB или в принтер? Делать USB затем, что это дешевле и часто удобней. Ethernet принтер тоже удобно, но требует большей квалификации пользователя и заметно дороже.

SK> А LPT - он типа того, _параллельный_ порт. Без задержек и абсолютно SK> детерменированный.

Бред какой-то, бессмысленный набор слов.

SK> Для печати девок на принтере это не так существенно, а вот для других SK> применений критично. Рекомендую, например, покурить Mach 3. SK> Это такой софт (под виндюк, кстати) для физического управления SK> станком с ЧПУ. Так вот, моторами он управляет исключительно через LPT.

Hу мои "поздравления" авторам сего недоразумения. Я куда более быстроработающей железякой (раз так наверное в 100), чем станок с ЧПУ управляю через USB после примерно двух-трехнедельного знакомства с тем, как это делается. И, кстати, чтобы из винды управлять LPT с какой-то иной, чем вывод на принтер целью, таки надо писать (или искать и ставить) драйвер. Hа уровне прикладного софта это не делается.

SK> Если есть такая возможность, то через два LPT. А если в компутере SK> настоящего LPT нету, то оно просто не годится совсем.

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

dima

formatting link

Reply to
Dmitry Orlov
2009-12-30, Dmitry Orlov snipped-for-privacy@isdn.net.il> пишет:
[skipped]

[skipped]

Феерично, я считаю.

Reply to
Ilya Anfimov

Hello, Ilya Anfimov! You wrote in conference fido7.su.hardw.schemes to Dmitry Orlov on Thu, 31 Dec 2009 12:37:01 +0000 (UTC):

IA> [skipped]

IA> [skipped]

IA> Феерично, я считаю.

Что именно феерично? Если бы я только этим занимался, за неделю бы сделал. В свое время, на то, чтобы сделать свое приложение под Винду, работающее с rs232, я больше времени и сил потратил, но тогда я разбирался как вообще хоть что-то работающее под виндой сделать, потом как там с собственно компортом работать, потом как тайминг нужный мне обеспечить. Любитель же вообще мог взять процессор, для которого есть готовый демо-борд с софтом, а если он еще и на Visual C программирует, то и готовый пример на нем. У меня большой кусок уже написан на C Builder, и мне пришлось это тоже переписать под него, разобравшись как это делается. Еще изрядно времени ушло на изучение документации на выбранный мною кристалл, отличия от тех, для которые есть примеры и на перенос этих примеров на мою плату. Потом уже только чисто техническая работа по отладке и разработке уже конкретной моей специфичной системы.

dima

formatting link

Reply to
Dmitry Orlov
2009-12-31, Dmitry Orlov snipped-for-privacy@isdn.net.il> пишет:

Я понял. Да, это -- много.

Да, я знаю, винда тожэ то ещё г. Под DOS работой из программы с модэмом добивались или за один урок или за один вечер.

Reply to
Ilya Anfimov

Hello, Ilya Anfimov! You wrote in conference fido7.su.hardw.schemes to Dmitry Orlov on Thu, 31 Dec 2009 16:30:02 +0000 (UTC):

IA>>> Феерично, я считаю.

IA> Я понял. Да, это -- много.

Hе так и много, я считаю. Быстрее, чем освоить новую архитектуру микроконтроллера, а я это делал наверное раз 10, все и не упомню.

IA> Да, я знаю, винда тожэ то ещё г.

Под какой-нибудь линукс это еще труднее, для винды и информации и инструментария и примеров значительно больше.

IA> Под DOS работой из программы с модэмом добивались или за один урок или IA> за один вечер.

Hу если чисто средствами ДОС, то да, но толку от такого обмена разве что echo atdp03>com1. А по-настоящему, надо было изучать регистры 8250 (16550),

8259, связанный с ними кусок схемотехники PC, или как попугай писать что-то вроде

mov ax, 20h out 20h, ax

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

dima

formatting link

Reply to
Dmitry Orlov
2009-12-31, Dmitry Orlov snipped-for-privacy@isdn.net.il> пишет:

Верю.

Под какой-нибудь линукс это обычно легче. Если не нужэн CTS/RTS. Hу и, в любом случае, меньшэ дня на запуск общения с вменяемым жэлезом.

Хм. Hа самом деле, это скорее затрудняет. Hу и, на самом деле, в общем несколько ортогонально: ты можэшь иметь вагон инструментария, каждые вариант которого будет говном.

Собственно, редко нужно сильно большэ. Hу, скорость выставить. Кстати, в середине 90-х был во всю FOSSIL, для цэнителеей.

Это называется библиотека копипасты. Hе такая плохая вещь, по тем временам.

Reply to
Ilya Anfimov

Hello, Ilya Anfimov! You wrote in conference fido7.su.hardw.schemes to Dmitry Orlov on Fri, 1 Jan

2010 12:02:52 +0000 (UTC):

IA>>>>> Феерично, я считаю.

IA>>> Я понял. Да, это -- много.

IA> Верю.

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

IA>>> Да, я знаю, винда тожэ то ещё г.

IA> Под какой-нибудь линукс это обычно легче. Если не нужэн CTS/RTS.

Hужно GUI приложение, для его создания под винду - куча средств, для Линуксов - фиг. А мне было нужно еще и времена с разрешением порядка миллисекунды выдерживать и измерять, иначе тоже работает, но слишком медленно. Под виндой не сразу, но я нашел решение, под линуксы - no way, там раньше стопор наступает.

IA> Hу и, в любом случае, меньшэ дня на запуск общения с вменяемым IA> жэлезом.

Со стандартным, вроде модема, - верю. Со всякими нестандартными протоколами - не верю.

IA> Хм. Hа самом деле, это скорее затрудняет.

А мне - облегчает. Мне легче по примеру разбираться, а не с нуля по документации.

IA> Hу и, на самом деле, в общем несколько ортогонально: ты можэшь иметь IA> вагон инструментария, каждые вариант которого будет говном.

Каждый вариант не идеален, но не говно.

IA>>> Под DOS работой из программы с модэмом добивались или за один урок IA>>> или за один вечер.

IA> Собственно, редко нужно сильно большэ.

Часто, если нужно обмениваться с embedded системами. Я уже 20 лет этим занимаюсь, я знаю о чем говорю.

IA> Hу, скорость выставить. Кстати, в середине 90-х был во всю FOSSIL, IA> для цэнителеей.

Был, что толку? Спокойнее было ручками через регистры контроллеров.

IA> Это называется библиотека копипасты. Hе такая плохая вещь, по тем IA> временам.

Плохая, если не понимаешь что это. В зависимости от IRQ, это могла быть и более сложная последовательность подачи EOI главному и подчиненному контроллерам прерываний. Для привычного к цифровой схемотехнике и embedded программированию меня - нормально (при свободном доступе к документации). А вот чистых программеров эти "заклинания" в тупик ставили. Зато библиотека для того же USB в контроллере и API в винде - хорошее дело. Там не бездумно копипэйстить нужно, а документацию и примеры посмотреть.

dima

formatting link

Reply to
Dmitry Orlov
2010-01-01, Dmitry Orlov snipped-for-privacy@isdn.net.il> пишет:

Оно от этого говном быть не перестаёт. Да, можно разгрести.

При чём тут гуй/не гуй? Я это дажэ обсуждать не хочу (ну, не с тобой во всяком случае). Я про rs232.

Чё? В смысле -- ты сказал фразу, которую можно понять двояко.

Мне нередко тожэ -- но обилие хреновых примеров очень напрягает. А уж обилие хреновых API...

Reply to
Ilya Anfimov

Hello, Ilya Anfimov! You wrote in conference fido7.su.hardw.schemes to Dmitry Orlov on Sun, 3 Jan

2010 00:43:51 +0000 (UTC):

IA>>> Верю.

IA> Оно от этого говном быть не перестаёт. Да, можно разгрести.

И не начинает.

IA>>>>> Да, я знаю, винда тожэ то ещё г.

IA>>> Под какой-нибудь линукс это обычно легче. Если не нужэн CTS/RTS.

IA> При чём тут гуй/не гуй?

Притом, что мне был нужен GUI.

IA> Я это дажэ обсуждать не хочу (ну, не с тобой во всяком случае). Я про IA> rs232.

Он же не сам по себе, а внутри программы.

IA> Чё?

То, просто нечем сделать программу, не говоря уж о работе с интерфейсом в ней.

IA>>> Хм. Hа самом деле, это скорее затрудняет.

IA> Мне нередко тожэ -- но обилие хреновых примеров очень напрягает.

Главное, увидеть и понять как оно работает, потом и переделать можно.

IA> А уж обилие хреновых API...

dima

formatting link

Reply to
Dmitry Orlov
2010-01-03, Dmitry Orlov snipped-for-privacy@isdn.net.il> пишет:
[skipped]

Он слабо зависит от того -- гуй/не гуй. Точнее, в гуе выясняешь как там вообще пишэтся совмещение очереди сообщений с блокирующимися файловыми дескрипторами (типа сокетов), и затем всё как обычно.

Сочувствую.

Да, это на расстоянии не лечится.

Reply to
Ilya Anfimov

Hello, Ilya Anfimov! You wrote in conference fido7.su.hardw.schemes to Dmitry Orlov on Sun, 3 Jan

2010 11:03:40 +0000 (UTC):

IA>>> Я это дажэ обсуждать не хочу (ну, не с тобой во всяком случае). Я IA>>> про rs232.

IA> Он слабо зависит от того -- гуй/не гуй.

Он-то может и слабо, а вот все остальное - сильно.

IA> Точнее, в гуе выясняешь как там вообще пишэтся совмещение IA> очереди сообщений с блокирующимися файловыми дескрипторами IA> (типа сокетов), и затем всё как обычно.

Мне с этим разбираться не интересно, я более высокоуровневыми средствами пользуюсь. Под винду-то они есть.

IA>>> Чё?

IA> Сочувствую.

IA> Да, это на расстоянии не лечится.

Главное, это вообще не надо лечить. Да и не нужны на фиг никому эти программы под линукс.

dima

formatting link

Reply to
Dmitry Orlov

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.