LINUX.ORG.RU

USB

 ,


0

3

Подскажите чего почитать (книгу, блог …) про USB стек для общего понимания и в частности для разработки простого устройства (USB 1.0 / обмен байтами между устройством и компьютером). Для Linux если это важно.

Помимо стека, надо еще понимать, на базе чего, что за порт? Банальный STM32 или какая то экзотика?

И да, банальный USB HID или чето кастомное хочется?

Еще рекомендую использовать USB сниферы

I-Love-Microsoft ★★★★★
()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)

Был такой сайт USB Made Simple, но он к сожалению закрылся и его архива что то не вижу. Но самое простое с чего начать можно это USB HID, там можно обмениваться без драйвера несколько килобайт в секунду

Но совсем отличного источника нет, придется сшивать разрозненные знания из множества источников, и однажды возникнет USB-просветление

Желание освоить USB мне абсолютно понятно, приветствую такое устремление

I-Love-Microsoft ★★★★★
()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)

И ещё добавлю, если сделаешь своё устройство и будешь сам реализовывать обработку всех запросов, вот тут есть хороший валидатор

https://www.usb.org/compliancetools

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

vbr ★★★★★
()

что ты понимаешь под «USB стек»? чисто софтовый уровень - там и стека как такового нет, обычно берут libusb. а если ты хочешь вручную хардкодить поток USB, то там под капотом довольно сложная математика и эти вещи обычно делают специальными чипами, они стоят копейки.

Iron_Bug ★★★★★
()
Ответ на: комментарий от Iron_Bug

мне нужно приложение для компьютера + устройство на raspberry pi pico.

устройство: читает adc, записывает в буфер. ждет команду от компьютера.

приложение(хост): отправляет несколько комманд( run, read, next ) устройству когда нужно, и читает из устройства из буфера.

собственно и все. по сути это просто типа анализатора будет, на несколько каналов.

вообще я хотел лишь взглянуть-понять издалека поверхостно как там все устроено. посмотрел. сейчас читаю «популярно об usb» Немоляев 2015.

nionio35
() автор топика
Ответ на: комментарий от nionio35

я думаю, что ты просто можешь использовать libusb. там есть чтение (синхронное и асинхронное) и запись, причём делается всё довольно тривиально, в интернете множество примеров.

Iron_Bug ★★★★★
()

Если пролазит для решения libusb - то бери её. Сношать себе голову всей этой тряхомудией с ручным управлением: интересно, конечно, но долго и нудно (и, в принципе, можно в той же libusb подсмотреть, если сильно надо).

SkyMaverick ★★★★★
()

Просто докину информации, может пригодится


Хост

apt get install libusb-dev

Устройство (к примеру AVR) там же схемы и примеры, но скорее всего тебе это не надо

https://www.obdev.at/products/vusb/index.html

Для других МК свои штуки, в том числе и аппаратные готовые, шлёшь байты и всё и пофигу как там этот USB внутри работает.

Бесплатные уникальные USB ID

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от Iron_Bug

Вообще ТСу надо смотреть в сторону USB HID SENSOR или как его там и его поддержку в подсистеме IIO со стороны хоста. Со стороны девайса т.к, упомянули малину то нужно курить подсистему UDC (USB Device Controller) и USB Gadget.

anonymous
()
Ответ на: комментарий от LINUX-ORG-RU

Для других МК свои штуки, в том числе и аппаратные готовые, шлёшь байты и всё и пофигу как там этот USB внутри работает.

Главное чтобы эндпоинтов хватило. Я тут наступил на грабли нехватки у stm32f4x1 в итоге психанул и вообще решил переделать на беспровод с esp’шкой.

anonymous
()
Ответ на: комментарий от anonymous

Ваще, жалко что нет всяких оптических интерфейсов по умолчанию как USB, чтобы везде, причём ещё и аналоговых нахер, чтобы тупо в компе ацп настраиваемая и всё, берёшь любой МК и от его UARTа или чего угодно иного мигаешь сраным диодом, к нему хоть леску рыболовную присобачил и воткнул в ПК всё, считывая с /dev/optic/1/stdin чё хочешь и оно там ещё буферизируется пусть.

Ну, для всякого медленного, на HID хватит с головой, консоль можно организовать, данные слать или получать. И никаких тебе супер технологий не надо. Оно и сейчас можно тупо вход микрофона использовать, но там всё гвоздями прибито, а было бы прикольно чтобы чисто штук 10 I/O, тупо 20 дырочек для оптоволокна и всё, и развязки не надо, огромная помехоустойчивость, не надо на МК городить херову гору логики, да и ПК не надо никаких библиотек, микромодуль в ядре примитивный и всё. А сколько бы всяких возможностей то. Клавы, мышки, 100500 приблуд всяких, да хоть к 220 подключай диод и свети им в комп отправляя текущую частоту в розетке для контроля. Сейчас для этого надо много специальных приблуд, кучи развязок и сложных микросхем с двух сторон, и всё равно это будет опасно.

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

Давайте там машину времени делайте уже скатаемся назад, и вернёмся и будет у нас

  • USB Universal Serial Buss
  • UOB Universal Optical Buss

Оно конечно можно и сейчас такое сделать поверх того-же USB или иного, но всё же было бы здорово иметь оптический GPIO по дефолту на любом стационарном ПК.

Чёт захотелось помечтать вслух :)

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от anonymous

Волокно позволит много устройств подрубать, а иначе либо много сенсоров с разными дианазонами приёма, и для каждого свой тип передачи, либо один мультичастотный со сложной логикой, ну нахер, усложнение того не стоящее, а пару метров по самому убогому волокну с помойки принять и передать можно всё. А длиннее и не надо, главное развязка есть и привязки к протоколам нет, скорость передачи может автонастраиваться при желании.

Так ладно всё, хватит фантазировать, время 5 утра, блин, сегодня поспать не получится :(

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от nionio35

нужно приложение для компьютера + устройство на raspberry pi pico

Для pico связь с ПК через usb последовательный порт это один из обычных режимов работы - включается командой pico_enable_stdio_usb в CMakeLists.txt

No ★★
()
Ответ на: комментарий от LINUX-ORG-RU

Ваще, жалко что нет всяких оптических интерфейсов по умолчанию как USB

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

А вообще, если хочется универсального и с гальванической развязкой - есть всяческая радиосвязь вроде блютуса.

COKPOWEHEU
()
Ответ на: комментарий от anonymous

Вообще ТСу надо смотреть в сторону USB HID SENSOR или как его там и его поддержку в подсистеме IIO со стороны хоста

Интересно, а есть ли готовые USB DAC/ADC решения с поддержкой IIO ?

Чтобы просто воткнул в USB порт компа и в /sys/bus/iio/devices/ все что надо нарисовалось и все сразу заработало как надо

alx777 ★★
()
Ответ на: комментарий от nionio35

Тебе нужен USB Serial. Это просто два потока данных, завёрнутых в USB. В примерах для Pi pico найдёшь всё, что надо для того, чтобы передавать и принимать данные. Поверх этих потоков данных реализуй свой простенький протокол. На стороне ОС просто откроешь /dev/ttyACM0 или что-то подобное и будешь читать-писать, все драйверы для этого уже есть во всех ОС (в винде есть нюансы, но тоже решаемо).

vbr ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Отличная статья по low level, но для понимания общей идеологии - не годится

Спасибо, приятно слышать.

А по общей идеологии там внизу несколько полезных ссылок на литературу. Ну и может быть полезно по другим моим статьям пройтись. Там, правда, больше упор на stm, но и структура USB устройств в какой-то степени описывается.

COKPOWEHEU
()