|
|
  |
AT91SAM7 + USB |
|
|
|
Aug 10 2009, 17:37
|
Участник

Группа: Участник
Сообщений: 43
Регистрация: 26-06-09
Пользователь №: 50 675

|
Да мне главное что бы надежно работало.,.. Попробую usbser.sys
|
|
|
|
|
Aug 12 2009, 20:01
|
Участник

Группа: Участник
Сообщений: 43
Регистрация: 26-06-09
Пользователь №: 50 675

|
Все вроде работает. Но уточню несколько нюансов. На голой винде при подключении девайса, первого подключения в трее выскакивает надпись "atm6124.Sys ATMEL AT91xxxxx Test Board" Как-то хочется что бы вскакивало что-то свое, как это сделать не подскажите? И ещё скажите правильно ли я описал INF-файл для работы с usbser.sys? Код [Version] Signature="$Windows NT$" Class=Ports ClassGuid={36FC9E60-C465-11CF-8056-444553540000} Provider=%ATMEL% DriverVer=04/16/2008,1.0.0.0
[DestinationDirs] DefaultDestDir=12
[Manufacturer] %ATMEL%=AtmelMfg [AtmelMfg] %USBtoSerialConverter%=USBtoSer.Install,USB\VID_03EB&PID_6124
[USBtoSer.Install] CopyFiles=FakeModemCopyFileSection AddReg=USBtoSer.AddReg
[USBtoSer.AddReg] HKR,,DevLoader,,*ntkern HKR,,NTMPDriver,,usbser.sys HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"
[USBtoSer.Install.Services] AddService=usbser,0x00000002,USBtoSer.AddService
[USBtoSer.AddService] DisplayName=%USBSer% ServiceType=1 StartType=3 ErrorControl=1 ServiceBinary=%12%\usbser.sys
[Strings] ATMEL="My Corp." USBtoSerialConverter="SUPER-PUPER BOMBA" USBSer="USB Serial Driver"
|
|
|
|
|
Aug 13 2009, 11:56
|
Участник

Группа: Участник
Сообщений: 43
Регистрация: 26-06-09
Пользователь №: 50 675

|
Обьясните плз что такое индексы строк, а то я не понял со стандарта? (вродекак написано: Index of string descriptor describing product) Что в цнлом нужно прописыват в поле imanufacturer, iproduct и iserialnumber?
|
|
|
|
|
Aug 13 2009, 12:28
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(piz2383 @ Aug 13 2009, 15:56)  Обьясните плз что такое индексы строк, а то я не понял со стандарта? (вродекак написано: Index of string descriptor describing product) Что в цнлом нужно прописыват в поле imanufacturer, iproduct и iserialnumber? В этих полях нужно записать номера соответствующих строк, они будут использованы хостом при запросах GET_DESCRIPTOR - STRING. Номера строк должны быть ненулевыми, нулевой дескриптор используется для передачи списка LANGID. Код DEVICE DESCRIPTOR: 0x01, // Manufacturer string index 0x02, // Product string index 0x00, // Serial number string index (unused)
unsigned char StringDscr0[] = { 0x04, STRING_DSCR, 0x09, // LANGID 0x0409 0x04 // English (United States) };
unsigned char StringDscr1[] = { 0x12, STRING_DSCR, 'A', 0x00, 'B', 0x00, 'C', 0x00, ' ', 0x00, 'C', 0x00, 'o', 0x00, 'r', 0x00, 'p', 0x00 };
unsigned char StringDscr2[] = { 0x14, STRING_DSCR, 'M', 0x00, 'y', 0x00, ' ', 0x00, 'd', 0x00, 'e', 0x00, 'v', 0x00, 'i', 0x00, 'c', 0x00, 'e', 0x00 };
|
|
|
|
|
Aug 13 2009, 19:40
|
Участник

Группа: Участник
Сообщений: 43
Регистрация: 26-06-09
Пользователь №: 50 675

|
Меня как раз смутила надпись "ненулевыми" когда я читал спецификацию. В общем назначить можно любой.
|
|
|
|
|
Aug 14 2009, 19:21
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(aaarrr @ Aug 10 2009, 21:45)  usbser в XP работает надежно. Есть, конечно, и некоторые косяки - сигнализация не вся поддерживается и USB нельзя передергивать, пока порт открыт. А можно поподробнее про момент передергивания при открытом порте ? В чем проблема конкретно ? Дело в том что я тестировал на передергивание при передаче, и у меня ни разу не было проблем с этим. То есть неперерывные запрос/ответ(протокол типа модбас) ну и передергиваю кабель много раз, связь восстанавливается и ничего не падает.
|
|
|
|
|
Aug 15 2009, 14:29
|
Участник

Группа: Участник
Сообщений: 43
Регистрация: 26-06-09
Пользователь №: 50 675

|
А подскажите как определить что хост отключился от шины? Линию UDP_CNX подключил как в даташите, но она почему-то всегда в единице. Внезависимости от того подключен хост или нет. Включен пул-ап или нет. Не подскажите что с этой линией может быть не так? И можно как-то с помощью самого контроллера UDP определить подключен хост или нет?
|
|
|
|
|
Aug 15 2009, 20:26
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(piz2383 @ Aug 15 2009, 18:29)  А подскажите как определить что хост отключился от шины? Что значит отключился, шнурок физически оторвали? Цитата(piz2383 @ Aug 15 2009, 18:29)  Линию UDP_CNX подключил как в даташите, но она почему-то всегда в единице. Внезависимости от того подключен хост или нет. Включен пул-ап или нет. Не подскажите что с этой линией может быть не так? Если речь идет о линии, попключенной к VBUS через делитель, то с ней ничего не может быть не так. Разве только pull-up внутренний может перетянуть ее в единицу, если его не отключить. Других вариантов я не вижу. Цитата(piz2383 @ Aug 15 2009, 18:29)  И можно как-то с помощью самого контроллера UDP определить подключен хост или нет? Можно следить за RXSUSP или вручную мониторить UDP_ FRM_NUM.
|
|
|
|
|
Aug 15 2009, 22:22
|
Участник

Группа: Участник
Сообщений: 43
Регистрация: 26-06-09
Пользователь №: 50 675

|
Цитата(aaarrr @ Aug 15 2009, 23:26)  Что значит отключился, шнурок физически оторвали? Точнее сказать отсоединили. В общем когда кабелем соединяется ПК с устройством, то началом соединения можно считать приход пакета SET CONFIGURATION. А вот когда пользователь просто взял и отсоединил кабель. Вот про это я спрашивал  )) Цитата(aaarrr @ Aug 15 2009, 23:26)  Если речь идет о линии, попключенной к VBUS через делитель, то с ней ничего не может быть не так. Разве только pull-up внутренний может перетянуть ее в единицу, если его не отключить. Других вариантов я не вижу. aaarrr, я ваш вечный фанат. Да, именно отключив пул-апя добился того что при не подключенном кабеле у меня 0 на этой линии, а при подключенном единица  Спасибо. Цитата(aaarrr @ Aug 15 2009, 23:26)  Можно следить за RXSUSP или вручную мониторить UDP_ FRM_NUM. Да будущее запомню, но раз уж с той линией разобрались, то не понадобиться сейчас.
|
|
|
|
|
Aug 16 2009, 00:21
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(aaarrr @ Aug 15 2009, 00:36)  Если выдернуть кабель, пока открыт порт, то автоматом ничего не восстанавливается (по крайней мере на XP SP2). Если порт закрыть, то проблем нет. На W2K было еще хуже - устройство отваливалось до следующей перезагрузки. Я думал что Вы имеете в виду что ломается что-то более серьезное, а так да, переоткрытие порта решает вопрос переподсоединения. Цитата(aaarrr @ Aug 16 2009, 00:26)  Разве только pull-up внутренний О, эту знатную фичу я тоже ловил, причем вся мерзость ситуации в том что на одном контроллере пулап дотягивает до 1 а на другом таком же нет.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|