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

 
 
 
Reply to this topicStart new topic
> PDIUSBD12 + ATmegа16: несколько интерфесов на одной ендпоинт, Возможно ли???
prottoss
сообщение Jan 14 2007, 16:20
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Собрал девайс: PDIUSBD12 + ATmega16. У сего чуда (D12) 6 endpoints. Объявил USB CDC класс - все работает. Захотелось сделать два устройства в одном. Объявил composite device, но так как endpoints не хватает, на оба интерфейса объявил одинаковые endpoint-ы. Результат - первый девайс работает, второй нет. Возможно ли как то решить проблему???



PS: Возможно модераторы выкинут топик в раздел про интерфейсы, но там мало народу и никто не отвечает, мож здесь хоть в таком вопросе грамотный чел растолкует, куда чо втыкивать?


--------------------
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 14 2007, 16:53
Сообщение #2


Гуру
******

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



Цитата(prottoss @ Jan 14 2007, 16:20) *
Собрал девайс: PDIUSBD12 + ATmega16. У сего чуда (D12) 6 endpoints. Объявил USB CDC класс - все работает. Захотелось сделать два устройства в одном. Объявил composite device, но так как endpoints не хватает, на оба интерфейса объявил одинаковые endpoint-ы. Результат - первый девайс работает, второй нет. Возможно ли как то решить проблему???

Нет. Цитата из спецификации:
Цитата
An endpoint is not shared among interfaces within a single configuration unless the endpoint is used by alternate settings of the same interface. Endpoints may be shared among interfaces that are part of different configurations without this restriction.

Можно только взять контроллер "пожирнее".

Цитата(prottoss @ Jan 14 2007, 16:20) *
PS: Возможно модераторы выкинут топик в раздел про интерфейсы, но там мало народу и никто не отвечает...

Думаю, грамотного народа там не меньше, чем здесь.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 14 2007, 17:10
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(aaarrr @ Jan 14 2007, 20:53) *
Цитата(prottoss @ Jan 14 2007, 16:20) *

Собрал девайс: PDIUSBD12 + ATmega16. У сего чуда (D12) 6 endpoints. Объявил USB CDC класс - все работает. Захотелось сделать два устройства в одном. Объявил composite device, но так как endpoints не хватает, на оба интерфейса объявил одинаковые endpoint-ы. Результат - первый девайс работает, второй нет. Возможно ли как то решить проблему???

Нет. Цитата из спецификации:
Цитата
An endpoint is not shared among interfaces within a single configuration unless the endpoint is used by alternate settings of the same interface. Endpoints may be shared among interfaces that are part of different configurations without this restriction.

Можно только взять контроллер "пожирнее".
Досадно...А я аж четыре штуки для пробы заказал. Вот одну пока мучаю. Но вот о чем думал. Возможно ведь как то программно эмулировать хаб, который бы сообщал хосту, что на шине несколько девайсов. Как такая идея?
Цитата(aaarrr @ Jan 14 2007, 20:53) *
Цитата(prottoss @ Jan 14 2007, 16:20) *

PS: Возможно модераторы выкинут топик в раздел про интерфейсы, но там мало народу и никто не отвечает...
Думаю, грамотного народа там не меньше, чем здесь.
Да я в этом и не сомневаюсь, просто сюда больше таких людей заходит smile.gif , вот Вы например smile.gif


--------------------
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 14 2007, 17:26
Сообщение #4


Гуру
******

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



Цитата(prottoss @ Jan 14 2007, 17:10) *
Досадно...А я аж четыре штуки для пробы заказал. Вот одну пока мучаю. Но вот о чем думал. Возможно ведь как то программно эмулировать хаб, который бы сообщал хосту, что на шине несколько девайсов. Как такая идея?

Программно не получится - хаб это отдельная песня. Можно только поставить "железный" хаб, и получить в результате compound device.

Или писать свой драйвер. У филипса есть пример для двух COM-портов на LPC214x с исходниками драйвера PC. Там, правда, тоже используется 6 endpoint'ов.

А PDIUSBD12 все же подходит для одной какой-нибудь функции: main endpoint'ов только две.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 14 2007, 18:23
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(aaarrr @ Jan 14 2007, 20:53) *
...Цитата из спецификации:
Цитата
An endpoint is not shared among interfaces within a single configuration unless the endpoint is used by alternate settings of the same interface. Endpoints may be shared among interfaces that are part of different configurations without this restriction.


Я перевел это так
Цитата
Оконечная точка не разделена среди интерфейсов в пределах единственной конфигурации, если оконечная точка не используется дополнительными параметрами настройки того же самого интерфейса. Оконечные точки могут быть разделены среди интерфейсов, которые являются частью различных конфигураций без этого ограничения
А выделенное о чем говорит?


--------------------
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 14 2007, 18:31
Сообщение #6


Гуру
******

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



Цитата(prottoss @ Jan 14 2007, 18:23) *
А выделенное о чем говорит?

О том, что в нескольких alternate settings интерфейса может быть использована одна и та же конечная точка. Но alternate setting может быть выбран только один.

Я бы перевел так:
Цитата
Конечная точка не может совместно использоваться интерфейсами в пределах одной конфигурации, за исключением того случая, когда конечная точка используется в различных вариантах реализации одного интерфейса.

Терминология, конечно, кривая, уж простите.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jan 14 2007, 20:14
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



На мой взгляд - некоторая путаница. Устройство с несколькими интерфейсами (мультиинтерфейсные USB устройства) запросто могут делить одни и те же endpoint'ы. Лично делал устройство с совместной реализацией Communication Device и Printer Device. При этом сам тип устройства опеределяется в интерфейсном дескрипторе.

Проблема, когда хочется реализовать несколько устройств, когда тип устройства определяется в девайс дескрипторе. С этим сейчас, по крайней мере в Windows, полная труба. Хотя с точки зрения самого стандарта USB никто это не запрещает реализовать. Мне как-то попадалась публикация кого-то из разработчиков Microsoft, где было сказано, что они собираются это "как-нибудь в будущем" реализовать.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 14 2007, 20:25
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(sergeeff @ Jan 15 2007, 00:14) *
На мой взгляд - некоторая путаница. Устройство с несколькими интерфейсами (мультиинтерфейсные USB устройства) запросто могут делить одни и те же endpoint'ы. Лично делал устройство с совместной реализацией Communication Device и Printer Device. При этом сам тип устройства опеределяется в интерфейсном дескрипторе.

Проблема, когда хочется реализовать несколько устройств, когда тип устройства определяется в девайс дескрипторе. С этим сейчас, по крайней мере в Windows, полная труба. Хотя с точки зрения самого стандарта USB никто это не запрещает реализовать. Мне как-то попадалась публикация кого-то из разработчиков Microsoft, где было сказано, что они собираются это "как-нибудь в будущем" реализовать.
Интересно было бы посмотреть на конфиг и интефейсные дескрипторы сего девайса. А какой USB девайс Вы использовали, сколько физических точек?


--------------------
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 14 2007, 20:29
Сообщение #9


Гуру
******

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



Цитата(sergeeff @ Jan 14 2007, 20:14) *
На мой взгляд - некоторая путаница. Устройство с несколькими интерфейсами (мультиинтерфейсные USB устройства) запросто могут делить одни и те же endpoint'ы. Лично делал устройство с совместной реализацией Communication Device и Printer Device. При этом сам тип устройства опеределяется в интерфейсном дескрипторе.

Путаница - да, есть немного. А как у Вас Communication Device и Printer Device одни и те же endpoint'ы между собой делили, не понимаю?
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 14 2007, 22:08
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Кстати, мне почти smile.gif удалось заставить работать PDIUSBD12 как два CDC, но, похоже, я что то с inf-файлом туплю. Первый девайс ставится нормально и дышит как положенно, второй видится но ОСь говорит, что запускать не будет, код ошибки - 10 (((



Расклад такой:

интерфейс №1

интеррапт ендпоинт ин №3 (не действительная)

балк ендпоинт №1 ин + оут



интерфейс №2

контрол ендпоинт ин №0

балк ендпоинт №2 ин + оут


--------------------
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 15 2007, 00:55
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Совсем устал с этим inf-файлом, может все же кто подскажет, что делаю не так:

Код
Windows USB CDC Setup File
; Copyright (c) 2000 Microsoft Corporation
; 2007 PROTTOSS

[Version]
Signature="$Windows NT$"
Class=Ports
ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}
Provider=%COMPANY%
LayoutFile=layout.inf
DriverVer=10/01/2007,1.0.0.0



[Manufacturer]
%MFGNAME% = ManufName



[DestinationDirs]
DefaultDestDir=12



[ManufName]
%Modem3% = Modem, USB\VID_16C0&PID_0559&MI_00
%Modem4% = Modem, USB\VID_16C0&PID_0559&MI_01

;------------------------------------------------------------------------------
;  Windows 2000/XP Sections
;------------------------------------------------------------------------------

[Modem.nt]
CopyFiles=ModemCopyFileSection
AddReg=Modem.nt.AddReg



[ModemCopyFileSection]
usbser.sys



[Modem.nt.AddReg]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,usbser.sys
HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"



[Modem.nt.Services]
AddService=usbser, 0x00000002, ModemDriverService



[ModemDriverService]
DisplayName=%SERVICE%
ServiceType=1
StartType=3
ErrorControl=1
ServiceBinary=%12%\usbser.sys
LoadOrderGroup = Base



;------------------------------------------------------------------------------
;  String Definitions
;------------------------------------------------------------------------------
[Strings]
COMPANY="PROTTOSS"
MFGNAME="PROTTOSS"
Modem3="PDIUSBD12 USB Test Device N1"
Modem4="PDIUSBD12 USB Test Device N2"
SERVICE="USB-232 Emulation Driver for USB Test Device"


Код ошибки для второго интерфейса - 10
Первый работает отлично



Смотрел с помощью USBView.exe - все 6 пайпов открыты


--------------------
Go to the top of the page
 
+Quote Post
prottoss
сообщение Jan 15 2007, 14:44
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Накопал на нескольких англоязычных форумах вчера, что проблема в драйвере usbser.sys - ох уж этот драйвер!!! Столько хлопот в прошлом году мне доставил!!! Вобщем не умеет он работать с сотсавными девайсами. К сожалению ссылки привести не могу, но кому интересно в гугле можно набрать типа "USB CDC composite device". Одно радует, пока пурхался с этой проблемой научился экономить пару ендпоинтов для чего нить еще, просто контрол можно объявлять не действительный, а еще лучше нулевой - все работает. По крайней мере проверил на ХР и 2000 на двух машинках


--------------------
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 11:40
Рейтинг@Mail.ru


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