реклама на сайте
подробности

 
 
> "Warm" смена дескрипторов (композитного) девайса существует?, В какой-либо версии USB.
GetSmart
сообщение Feb 16 2015, 13:56
Сообщение #1


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



В стандарте и конечно же в PC-ОСях такое реаизовано? Нужно чтобы одно из соединений композита продолжало работать без запинок/переинициализаций, а другие могли подключиться или отключиться. Вариант с полным отключением девайса не годится. Пока что-то похожее видится через имитацию хаба и независимые друг от друга дескрипторы, но это сложный вариант по сравнению с просто сменой дескрипторов и внутренней логики обработчиков эндпоинтов.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
alexunder
сообщение Feb 16 2015, 21:01
Сообщение #2


unexpected token
****

Группа: Свой
Сообщений: 899
Регистрация: 31-08-06
Из: Мехелен, Брюссель
Пользователь №: 19 987



Интересный вопрос. Однако, имитация хаба в данном случае самое лучшее, имхо, ведь для прочтения нового набора дескрипторов нужна ренумерация, т.е. переподключение устройства.


--------------------
А у тебя SQUID, и значит, мы умрем.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 16 2015, 21:29
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Не вполне понимаю, что именно нужно ТС, но есть подозрение, что решением является использование Alternate Setting для интерфейсов.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Feb 17 2015, 08:33
Сообщение #4


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(aaarrr)
Не вполне понимаю, что именно нужно ТС, но есть подозрение, что решением является использование Alternate Setting для интерфейсов.

Есть один микроконтроллер, один комп и один кабель между ними. Нужно чтобы микроконтроллер/девайс в любой момент работы компа без перетыканий кабеля или электрической имитации переподключения мог менять кол-во своих интерфейсов. Все интерфейсы стандартных классов со встроенными в ось драйверами. Допустим MSC, CDC, HID в любом количестве (на что хватит железа проца). Исходя из этого Alternate Setting не подходит, т.к.
Цитата
Единственный интерфейс может иметь альтернативные варианты установок. Каждый вариант установок имеет свой собственный описатель интерфейса с одним и тем же значением в поле "bInterfaceNumber" и уникальным значением в поле "bAlternateSetting". Каждый вариант установок имеет свои собственные описатели оконечных точек. В каждый момент времени активным может быть только один из вариантов. Сразу по завершении процесса обнаружения устройства хостом и выбора конфигурации активизируется вариант установок по умолчанию (значение поля "bAlternateSetting" равно 0x00) и только его обычно поддерживают драйверы накопителей операционных систем.


Отключать часть интерфейсов нужно обязательно, т.к. обмен данными будет недоступен. И любое ПО компа должно это видеть. Вариант с постоянным присутствием всех интерфейсов поэтому не годится.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 17 2015, 09:11
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Теперь понятно. Насколько мне известно, такого механизма нет.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Feb 18 2015, 13:35
Сообщение #6


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(aaarrr @ Feb 17 2015, 13:11) *
Теперь понятно. Насколько мне известно, такого механизма нет.

Не заложено или не реализовано?
Цитата
9.4.3 Get Descriptor
This request returns the specified descriptor if the descriptor exists.

Default state: This is a valid request when the device is in the Default state.
Address state: This is a valid request when the device is in the Address state.
Configured state: This is a valid request when the device is in the Configured state.


Композит похож на хаб наличием разнородных интерфейсов, очевидно независимых друг от друга на стороне хоста. Нормально было бы применять к нему похожую логику работы ПО хоста. Если не реализовали, то жаль конечно. Если сделать хост на другом микроконтроллере, то горячее изменение кол-ва интерфейсов вероятно можно реализовать. Но если этот хост потом воткнуть девайсом в комп, то возникнет проблема из абзаца ниже. То есть её решить можно только принципом гоячих изменений конфигурации/дескрипторов.

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

Оптимальнее было бы заложить в атрибуты дескриптора устройства (не интерфейса) флаг динамической/горячей конфигурации чтобы не тратить ресурсы на опрос девайсов с жёсткой конфигурацией. Мечты, мечты...

Сообщение отредактировал GetSmart - Feb 18 2015, 21:39


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Aug 23 2015, 10:27
Сообщение #7


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Неужели хабом "прикинуться" из вариантов NXP можно только на линейках LPC18xx & LPC43xx, которые единственные в режиме USB-device умеют принимать данные для любых адресов (функций) ? У других линеек либо конкретный адрес, либо 0 & EP=0.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
jcxz
сообщение Aug 27 2015, 07:05
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(GetSmart @ Aug 23 2015, 16:27) *
У других линеек либо конкретный адрес, либо 0 & EP=0.

С чего Вы взяли?
LPC в режиме device нормально проходят фазу установки адреса. Иначе это был бы не USB-device.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Aug 27 2015, 08:14
Сообщение #9


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(jcxz @ Aug 27 2015, 11:05) *
LPC в режиме device нормально проходят фазу установки адреса. Иначе это был бы не USB-device.

Через какой адрес и эндпоинт?

ЗЫ
"либо конкретный адрес" понимать нужно как адрес после энумерации (фазы установки адреса). То есть пакеты к одому единственному адресу процессором принимаются, а остальные улетают "мимо" процессора.

Сообщение отредактировал GetSmart - Aug 27 2015, 08:34


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th August 2025 - 14:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.01429 секунд с 7
ELECTRONIX ©2004-2016