2010-11-22 2 views
22

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

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

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

PS: Я знаю:

  • C (возможно, потребуется его здесь)

  • Java (вероятно, не нужно здесь)

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

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

  • ...

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

ответ

0

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

для Linux, то Linux USB сайт должен быть в состоянии направить вас в правильном направлении. В частности, вам понадобится Programming Guide for Linux USB Device Drivers.

+0

Ссылки руководства по программированию не работает – Benubird

0

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

9

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

Если вы действительно хотите ознакомиться с разработкой USB, вы должны начать с рассмотрения USB approved class specification documents.

5

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

+2

Оба этих проекта очень полезны в пространстве avr usb –

3

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

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

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

Те, вы должны получить и работает. Я бы посоветовал Googling помочь вам написать свои первые программы, но еще один хороший ресурс - это онлайн-материалы для this class at Cornell.

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

+0

Хороший совет: v-usb - есть и хорошие схемы - легко для diy –

3

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

  1. libusb (here, here и here)
  2. wdk
  3. WinDriver

Для вариантов libusb информация читается this

1

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

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

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

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

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

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

0

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

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

0

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

0

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

  1. гаджет в UBoot
  2. HID specefication usb org
  3. отладочных инструментов, такие как анализатор протокола USB
  4. libusb работает на хост-компьютере для отправки пакетов
Смежные вопросы