|
|
  |
PDIUSBD12 + ATmegа16: несколько интерфесов на одной ендпоинт, Возможно ли??? |
|
|
|
Jan 14 2007, 16:53
|
Гуру
     
Группа: Свой
Сообщений: 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: Возможно модераторы выкинут топик в раздел про интерфейсы, но там мало народу и никто не отвечает... Думаю, грамотного народа там не меньше, чем здесь.
|
|
|
|
|
Jan 14 2007, 17:10
|

Гуру
     
Группа: Свой
Сообщений: 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: Возможно модераторы выкинут топик в раздел про интерфейсы, но там мало народу и никто не отвечает...
Думаю, грамотного народа там не меньше, чем здесь. Да я в этом и не сомневаюсь, просто сюда больше таких людей заходит  , вот Вы например
--------------------
|
|
|
|
|
Jan 14 2007, 18:23
|

Гуру
     
Группа: Свой
Сообщений: 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. Я перевел это так Цитата Оконечная точка не разделена среди интерфейсов в пределах единственной конфигурации, если оконечная точка не используется дополнительными параметрами настройки того же самого интерфейса. Оконечные точки могут быть разделены среди интерфейсов, которые являются частью различных конфигураций без этого ограничения А выделенное о чем говорит?
--------------------
|
|
|
|
|
Jan 14 2007, 18:31
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(prottoss @ Jan 14 2007, 18:23)  А выделенное о чем говорит? О том, что в нескольких alternate settings интерфейса может быть использована одна и та же конечная точка. Но alternate setting может быть выбран только один. Я бы перевел так: Цитата Конечная точка не может совместно использоваться интерфейсами в пределах одной конфигурации, за исключением того случая, когда конечная точка используется в различных вариантах реализации одного интерфейса. Терминология, конечно, кривая, уж простите.
|
|
|
|
|
Jan 14 2007, 22:08
|

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

|
Кстати, мне почти  удалось заставить работать PDIUSBD12 как два CDC, но, похоже, я что то с inf-файлом туплю. Первый девайс ставится нормально и дышит как положенно, второй видится но ОСь говорит, что запускать не будет, код ошибки - 10 ((( Расклад такой: интерфейс №1 интеррапт ендпоинт ин №3 (не действительная) балк ендпоинт №1 ин + оут интерфейс №2 контрол ендпоинт ин №0 балк ендпоинт №2 ин + оут
--------------------
|
|
|
|
|
Jan 15 2007, 00:55
|

Гуру
     
Группа: Свой
Сообщений: 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 пайпов открыты
--------------------
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|