Подтвердить что ты не робот

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

Я хочу запрограммировать микроконтроллер (AVR) для управления некоторыми светодиодами через USB. Это просто из интереса к тому, как создавать и программировать USB-устройства. Есть несколько микроконтроллеров AVR, которые поддерживают протокол USB, или я могу реализовать USB-протокол в другом микроконтроллере самостоятельно, но мне интересно, что использовать для написания собственных драйверов на компьютере.

Мой уровень в системном программировании: общий нуб (отсюда вопрос)

Итак, какова литература, которую вы, люди, могли бы получить, чтобы получить хорошее знание технологии USB и как написать свои собственные драйверы и дальше?

P.S.: Я знаю:

  • C (возможно, он понадобится здесь)

  • Java (вероятно, он не понадобится здесь)

  • Python (надеюсь, можно использовать его здесь)

  • ассемблер (надеюсь, он не понадобится здесь XD).

  • ...

P.P.S: разработка драйверов отличается для разных ОС. Я использую Linux и Windows, поэтому любые материалы, связанные с одной или обеими этими системами, приветствуются.

4b9b3361

Ответ 1

Ну, хотя вы можете разрабатывать и писать свой собственный USB-драйвер, красота USB заключается в том, что вам не нужно писать собственный драйвер. Форум разработчиков USB определил спецификации классов для всех стандартных классов устройств. Если вы можете привести свое устройство в стандартный класс устройств, драйвер уже написан для вас!

Если вы действительно хотите ознакомиться с разработкой USB, вам следует начать с рассмотрения одобренных USB-спецификаций документов.

Ответ 2

Если вы находитесь в среде для микроконтроллеров AVR с аппаратным USB-устройством, загляните в LUFA, и если вы попали в AVR с программным обеспечением Затем USB загляните в V-USB. Они оба реализовали множество USB-классов, поэтому вам не нужно делать это самостоятельно - просто используйте их.

Ответ 3

Это звучит как отличный проект! Я бы посоветовал начать с чего-то более простого, так как вы - как вы говорите, "всего n00b". Я не уверен, какое оборудование у вас есть (или иметь в виду), но то, что я предлагаю для всего начинающего, это STK500. Это плата разработки, которая очень хорошо поддерживается как в Linux, так и в Windows и даст вам максимальную гибкость. Он поставляется со светодиодами и переключателями, встроенными для ваших проектов, но вам нужно будет получить микроконтроллер. И для этого я рекомендую ATMega32 - отличную универсальную ИС, которая также хорошо поддерживается и имеет большую документацию в Интернете.

Как только вы получите те, о которых я предлагаю вам сделать свою разработку в Linux, используя avr-gcc (обязательно установите avr-libc). Если вы используете Ubuntu, вам легко получить все необходимые вам пакеты:

% sudo apt-get install gcc-avr avr-libc avrdude

Те должны поднять вас. Я бы посоветовал Google искать помощь в написании ваших первых программ, но еще один хороший ресурс - это онлайн-материалы для этого класса в Корнелле.

Это достаточно, чтобы ваши ноги были влажными с помощью микроконтроллеров AVR и инструментов разработки. Небо - это предел в этот момент, но, поскольку вы сказали, что хотите попасть в USB, я бы предложил использовать превосходную V-USB, чтобы ваш ATMega32 действует как USB-устройство. После этого, как говорится, шаги по переворачиванию светодиодов - это кусок торта:).

Ответ 4

Интересно, что использовать для написания собственных драйверы на компьютере.

Для версий libusb info читайте this

Ответ 5

Вы могли бы нам libusb. Это мощный и кросс-платформенный.

Но то, что вы пытаетесь сделать, - довольно простой интерфейс управления. Думаю, вы можете обойти большую часть сложности, используя HIDAPI.

http://www.signal11.us/oss/hidapi/

HID-устройства часто используют общие драйверы, входящие в состав ОС. Таким образом, вам вообще не нужно писать какие-либо драйверы, просто сделайте свое устройство совместимым с общим драйвером и адаптируйте его к клиентскому программному обеспечению.

Я думаю, что это то, что обычно делается в области электронной техники для любителей, что вас интересует здесь.

HIDAPI даже рекомендуется для простой связи с HID-устройствами в часто задаваемых вопросах libusb, так как его немного сложнее сделать на разных платформах с помощью libusb.

Ответ 6

Недавно в MSDN появилась область документации Microsoft WDK (Windows Development Kit). Существует раздел на USB, хотя лучше всего сначала прочитать предыдущие разделы, в частности, области "Начало работы". Они предполагают, что вы будете использовать C в качестве языка программирования для разработки драйверов.

Для Linux веб-сайт Linux USB должен указывать вам в правильном направлении. В частности, вам понадобится Руководство по программированию для драйверов USB-устройств Linux.

Ответ 7

Один хороший способ - просто разработать HID-устройство, поскольку драйвер встроен в большинство ОС более высокого уровня и довольно гибкий для простого ввода-вывода, о котором вы говорите. Еще один хороший вариант - просто использовать USB-устройство RS232 или программное обеспечение. Я использую PIC, у которых есть несколько хороших устройств с USB на борту.

Ответ 8

Я построил собственную тестовую кровать на основе ARDUINO UNO, и я использовал программиста ionlbs типа usbasp, и он работал отлично, но он не позволял преобразовывать TTL обратно в Rs-232 и, следовательно, я не мог используйте такие функции, как serial.print(), и мне пришлось установить ftdi-кабель, который позволил мне это сделать. Драйверы были libusb 1.xx, работающие просто отлично.

Если вы хотите запрограммировать AVR, вы можете использовать комплект программного обеспечения ARDUINO или стину для загрузки программ. Вам нужно знать c (только основы).

Ответ 9

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

Ответ 10

Интересно, действует ли ваш AVB как хост или устройство. Я думаю, ваш совет - устройство USB, и вам нужно зажечь светодиоды на вашем борту. Таким образом, это может быть хороший способ инициализировать вашу плату как HID-устройство. Для достижения этой цели вам понадобится пакет программного обеспечения HID для гаджета, работающий на вашей плате. Ссылки:

  • инфраструктура гаджета в uboot
  • СПРЯТАННАЯ СПЕЦИФИКАЦИЯ usb org
  • инструменты отладки, такие как USB Protocol Analyzer
  • libusb, запущенный на хост-компьютере для отправки пакетов