Программирование USB.

Тема в разделе "WASM.ELECTRONICS", создана пользователем FastSoft, 22 июн 2005.

  1. FastSoft

    FastSoft New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2005
    Сообщения:
    54
    Адрес:
    Russia
    UPDATE:

    Есть сдвиги, народ!!



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

    Мне НАДО сделать устройство, которое было бы USB-девайсом, способным обмениваться данными с любой виндой. Какое же принять рещения - писать два драйвера - NT и Win9x или под всеми виндами есть Api соответствующее?

    Если окажется, что под всеми виндами есть API, которое позволяет обойтись без драйвера, то у меня будет больше времени на создание металла, а не софта для компа.
     
  2. Saint German

    Saint German New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2003
    Сообщения:
    222
    на этом ww.ineltek.ru ресурсе есть статья "Рекомендации по переходу с RS-232 на USB", не смотря на название она тебе очень поможет. Если у тебя что-то законченное получится, если это не представляет коммерческой ценности - поделись.
     
  3. Nothing

    Nothing New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2003
    Сообщения:
    139
    Адрес:
    Russia
    Ничего не понял.

    Сделать всю реализацию низкоуровневой USB самому или запрограммировать микроконтроллер который уже поддерживает USB? У них обоих вся работа с USB идет только через 2 ноги ну и обвязку соответствующую :)



    Я сам пытался делать первое и успешно делал второе. Сложность протокола шины умеренная (хотя от у-ва зависит, можно и наворотить такого...). За 2 месяца я почти с нуля освоил большинство премудростей этой шины. Из нюансов можно отметить, что корневой хаб игнорирует некорректные пакеты, кроме того их нельзя "поймать" на нем программно, поэтому отладку вел запоминающим осцилографом. Когда вел отладку под windows выяснил, что она не точно соблюдает протокол начальной идентификации (опрос идет 2 раза и windows игнорирует доп. дескрипторы в описателе у-ва). Никакого "стандартного" API для работы с USB нет (за исключением сырой посылки и приема разных пакетов). Если Ваше у-во будет принадлежать к какому-либо классу (HID, Mass Storage, etc.) - то Вы сможете использовать "красивое" api высокоуровневого драйвера, если нет - придется написать этот высокоуровневый драйвер самому. Впрочем, в драйверах для windows я не силен, т.к. сам писал драйвер под embedded linux (это еще веселее, как я понял)...
     
  4. FastSoft

    FastSoft New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2005
    Сообщения:
    54
    Адрес:
    Russia
    Nothing

    Ну как это ты ничего не понял - я же написал "через две ноги" но при этом о поддержке контроллером USB не писал. Откуды ты взял про поддержку USB в контроллере? Правильно - придумал. Контроллеры такие есть, я о том, что ты придумал, что я в сообщении писал про поддержку USB. Я пишу просто про две ноги простейшего контроллера, который не знает, что такое USB.

    Что значит "сырая посылка и прием пакетов"? Блин, чувак, ты под кайфом там чтоли?
     
  5. Nothing

    Nothing New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2003
    Сообщения:
    139
    Адрес:
    Russia
    FastSoft

    Если я что-то не так понял - можно спокойно объяснить. А не писать что я что-то там сам придумал.

    "Сырая посылка и прием" означает что в системе (windows начиная с 95 osr2) есть api для выдачи пакетов в линию и приема их с последующей обработке другими драйверами. Это и есть все доступное низкоуровневое api.

    Блин, чувак, ты под кайфом там чтоли?

    А вам не кажется что хамить невежливо? Вам не нужны мои ответы - больше отвечать не буду. Могли бы и повежливей об этом сообщить... И впредь попрошу на вы.
     
  6. Artemy

    Artemy New Member

    Публикаций:
    0
    Регистрация:
    18 май 2005
    Сообщения:
    48
    Адрес:
    Russia
    FastSoft сам что-то принимает. наверняка. хамить некрасиво.



    2Nothing

    у меня тот же вопрос (почти). в образовательных целях начал копать стандарт USB, начал смотреть USB in nutshell и прочее. одно пока не дает покоя и не пускает дальше.

    я дилетант и необразованный в плане электроники (опять же почти): как при своей частоте в 10..20МГц чип работает с перепадами уровней на этих, блин, 2-х ногах при частоте, пусть, 1.5МГц (USB 1.1)
     
  7. FastSoft

    FastSoft New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2005
    Сообщения:
    54
    Адрес:
    Russia
    Nothing

    Извините, стиль не подошел. Разные на этом форуме стили применяются, в основном - такой неформальный, на котором я по дефолту с вами и законнектился. Извините, очень мне неприятно, что так вышло. Работаю я над созданием девайса, уже выполненного мной на микроконтроллере Atmega128 у которого нет поддержки USB. Хочу забрать пару ног под USB, реализовав его программно. Передавать немного и небыстро, лишь бы это был истинный USB ( 1.1 хотя-бы ).

    Второй вопрос с которым мне надо разобраться - с меня требуют понимания моего устройства виндами 98 и XP. Как с быть тут? Можно ли написать универсальный драйвер для этих операционных систем? Если что - писать буду на фасме. Не в этом дело. Фопросы пока философские, с английским у меня все нормально, с электроникой я дружу, но usb.org несмотря на это после моего первого взора невзрулил. Скачал все, что там дают скачать, получилось много, но все это "не рулит". Вот пока и все новости.

    Насчет секретности - проект секретный, но USB-шная часть не будет представлять собой какого-то секрета и ее я выложу, если что-то получится. Мое мыло: Borlandmaster@mail.ru - три года назад любил так си :)
     
  8. techwriter

    techwriter New Member

    Публикаций:
    0
    Регистрация:
    11 июн 2004
    Сообщения:
    15
    Адрес:
    Russia
    Ты не ответил на вопрос "...Ваше у-во будет принадлежать к какому-либо классу (HID, Mass Storage, etc.)" ?
     
  9. FastSoft

    FastSoft New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2005
    Сообщения:
    54
    Адрес:
    Russia
    И не отвечу.
     
  10. FastSoft

    FastSoft New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2005
    Сообщения:
    54
    Адрес:
    Russia
    Мой ICQ - 213783831 - жду звонков, можете оставить свой.
     
  11. Nothing

    Nothing New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2003
    Сообщения:
    139
    Адрес:
    Russia
    FastSoft

    Извините, стиль не подошел. Разные на этом форуме стили применяются, в основном - такой неформальный

    Вы уж чересчур с неформальностью переборщили. Спокойнее надо все обсуждать, без нападок и оскроблений. Я не против неформального общения (форум все-таки, а не светский раут), но не таким же тоном... Ладно, извинения принимаются.



    По поводу usb. Я начинал свою реализацию с того, что написал "слушалку" фреймов (а потом и декодер пакетов). Если контроллер хилый, лучше поставить простенький аппаратный NRZ-кодер/декодер - сильно сэкономит время, иначе придется опрашивать вход с оверсэмплингом в 10-16 раз, чтобы точно определить старт фрейма и дальнейшие отдельные биты, но мой мне позволял действовать в лоб. Если с железом разбираетесь - то надо соорудить обвязку для дифференциальных входов/выходов usb с программируемой утяжкой к питанию и к земле (чтобы корректно на состояния шины откликаться, хотя бы на idle и connect). Обвязка там не совсем простая и зависит от вашего контроллера. Понимаю, что все это общие слова, но вопросы у вам тоже достаточно общие. Все зависит от вашей задачи, может вам, например, ФАПЧ понадобится для подстройки, а может и нет...



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



    Ну в про windows это отдельная песня. Разберитесь сначала с usb на контроллере и если выдержите все мучения и реализуете минимальную подержку - то тогда драйвера вам покажутся просто развлечением...



    Atremy

    У чипов со встроенной поддержкой есть, например, NRZI-декодеры и вся "грязная" скоростная работа на физическом уровне ложится на них. Обычно в сам контроллер только поступают декодированные данные (сырые), где он сам уже вырезает битстаффинг, разбирает их на пакеты и т.д. Управление шиной тоже сделано аппаратно и не отнимает ресурсов. А реальные данные-то идут достаточно медленно - для их обработки мощные контроллеры не нужны... Ну согласитесь, странный вопрос: ведь чтобы, например, выдать звук частотой 20Кгц можно 20000 раз в секунду щелкать ногами конроллера, а можно включить генератор и все :)
     
  12. Artemy

    Artemy New Member

    Публикаций:
    0
    Регистрация:
    18 май 2005
    Сообщения:
    48
    Адрес:
    Russia
    задумка была изначально USB реализовать на кр1878ве1, а в нем, сами понимаете, встроенная поддержка только арифметических операций. и логических )

    микропроект этот помер (времени сейчас нет). хотя желание разобраться в сабже осталось. за любые ссылки в сторону USB была бы принародно объявлена благодарность )



    /*---*/

    c NRZI вроде разобрался. давно еще. вот после этого и возник вопрос. как же это железка успевает делать "грязную" скоростную работу при условии отсутствия 'built-in support'.

    и вроде есть такие схемы на pic'ах.



    если без аппаратной поддержки совсем никак - подскажите, выкину эту идею из головы и сэкономлю время/деньги.
     
  13. Nothing

    Nothing New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2003
    Сообщения:
    139
    Адрес:
    Russia
    как же это железка успевает делать "грязную" скоростную работу при условии отсутствия 'built-in support'.

    Ну так сложного-то там ничего нет. Да и шина не такая уж и скоростная, тем более что многие чипы не поддерживают самую сложную изохронную передачу. Короче говоря, при нынешних способах разработки аппаратную поддержку usb можно сделать хоть на ПЛИС, было бы желание. А младшие pic'и плохо поддерживают usb (зато дешевые), например 16c7x5 - только передачу по прерываниям (8 байт в 1 мсек - ну что за скорость скажите!)...

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

    Это вам решать. Я в итоге выкинул эту идею и сделал нормальное usb на чипе с аппаратной поддержкой. Достаточно дешево и сэкономил кучу времени. А повозиться с шиной живьем - это занятие на любителя, раньше (лет 5-7 назад) когда чипы были редки, а usb - экзотикой, еще можно было бы самому с нуля что-то делать, а сейчас не вижу смысла...
     
  14. FastSoft

    FastSoft New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2005
    Сообщения:
    54
    Адрес:
    Russia
    Да, Nothing, смысла похоже нет.

    Надо поискать у Atmel USB-шные микросхемы. Что такое NRZI я не знаю, надо покурить доков. В итоге лучше было бы к моей плате через интерфейс "две ноги" подрубить другую плату с USB-передатчиком/приемником.

    Все-таки, когда я доберусь до Windows - можно ли написать универсальный драйвер моего USB-девайса для win9x и XP?



    Если выяснится, что можно использовать только XP, то в ней ведь есть дрова разных-там-всяких флешек. Что если мое устройство будет вести себя как флешка с файлом 123.TXT из которого можно будет читать мои данные. Ну да, не все так просто - там ведь файловая система, на этой влешке, контролируемая осью.



    И еще вопрос - никто не знает, что имеется ввиду под "драйвером LPT-порта под XP", который якобы позоляет работать простым программам с LPT из под винды XP, где он закрыт для обычных программ, по причине того, что это стратегически-важный принтерный порт? Что этот драйвер добавляет новые API или как-то отрубает защиту в винде?
     
  15. yureckor

    yureckor New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    494
    Адрес:
    Russia
    Есть библиотечка inpout32.dll для работы с LPT из под NT (под 98 тоже работает). Экспортирует всего 2е функции- Inp32 и Out32. Я использовал (на свое времени не было), работает нормально, хотя скорость не проверял.
     
  16. FastSoft

    FastSoft New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2005
    Сообщения:
    54
    Адрес:
    Russia
    Знать бы еще, что такое "библиотека" и что такое "экспортирует". А можно этот DLL подулючить к фасмовой программе, чтобы из нее вызывать эти две функции?
     
  17. _staier

    _staier New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2003
    Сообщения:
    738
    Адрес:
    Ukraine
    "библиотека" это и есть dll

    dinamic link library



    подрулить довольно просто используя



    push offset dllname

    call LoadLibrary

    push offset funcname

    push eax

    call GetProcAddress

    mov [funcaddress],eax



    ...



    дальше где надо

    call [funcaddress]

    ну или что-то в этом духе



    насчёт синтаксиса fasm не уверен , что всё правильно
     
  18. letopisec

    letopisec New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2004
    Сообщения:
    228
    >я же написал "через две ноги" но при этом о поддержке контроллером USB не писал.



    Из этой оперы, и к тому ж для avr:



    http://rifer.narod.ru/usblcd.html
     
  19. FastSoft

    FastSoft New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2005
    Сообщения:
    54
    Адрес:
    Russia
    letopisecх! Это самая ссыльная ссылка в моей жизни! СЛушайте, а ведь реально все это работает у них.. Скачал я исходнЯк, посмотрел - тыща строк где-то (я про AVR-ную сторону). Какие-то струкруты.. Не пойму - они через UART сделали USB-интерфейс? А какой бук лучше курить? И по таймингам да пожелезу, как я понял, лучше курить USB.ORG ?



    Да.. Под винду я писать не спец - всего одну прогу в жизни на фасме написал с MessageBox. Где бы почитать еще о хорошем таком, упитанном кодинге под винду на фасм? Можно на англисйком.
     
  20. yureckor

    yureckor New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    494
    Адрес:
    Russia
    Где бы почитать еще о хорошем таком, упитанном кодинге под винду

    тут

    :)