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

 
 
> Как установить драйвер на USB Device AT91RM9200?
junkl
сообщение Apr 20 2007, 13:58
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 69
Регистрация: 12-10-05
Из: Калуга
Пользователь №: 9 539



Не могу установить драйвер на USB Device AT91RM9200. При подключении устройства к компу Windows обнаруживает Неизвестное устройство. Любые попытки переустановить драйвер (указать путь к atm6124.inf или atm6124ser.inf) бесполезны.
В отладчике вижу, что мой девайс получает запрос GET_DEVICE_DESCRIPTOR и отсылает хосту этот дескриптор. Но ничего не происходит. Неизвестное устройство остается неизвестным.
В папочке Windows/system32 у меня лежат usbser.sys и atm6124.sys, а в папочке Windows/inf и atm6124.inf, и atm6124ser.inf, и atm6119.inf.

Подскажите, пожалуйста, в чем может быть проблема?
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 14)
cebotor
сообщение Apr 20 2007, 14:41
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 6-04-07
Из: Бронницы
Пользователь №: 26 809



Цитата(junkl @ Apr 20 2007, 14:58) *
Не могу установить драйвер на USB Device AT91RM9200. При подключении устройства к компу Windows обнаруживает Неизвестное устройство. Любые попытки переустановить драйвер (указать путь к atm6124.inf или atm6124ser.inf) бесполезны.
В отладчике вижу, что мой девайс получает запрос GET_DEVICE_DESCRIPTOR и отсылает хосту этот дескриптор. Но ничего не происходит. Неизвестное устройство остается неизвестным.
В папочке Windows/system32 у меня лежат usbser.sys и atm6124.sys, а в папочке Windows/inf и atm6124.inf, и atm6124ser.inf, и atm6119.inf.

Подскажите, пожалуйста, в чем может быть проблема?

если Винда не дает выбрать инф файл для устройства , говоря о том , что в нем подходящих данных нет , то это означтать может только два варианта - либо не совпадают VID и PID , вашего дескриптора с теми , которые лежат в инф файле , либо есть кардинальное несоответствие интерфейсов указываемых ваши дескриптором с двайверами . у Вас какой вариант ?


--------------------
если еррата пуста - это не хорошо а плохо
Go to the top of the page
 
+Quote Post
junkl
сообщение Apr 20 2007, 16:00
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 69
Регистрация: 12-10-05
Из: Калуга
Пользователь №: 9 539



Цитата(cebotor @ Apr 20 2007, 15:41) *
если Винда не дает выбрать инф файл для устройства , говоря о том , что в нем подходящих данных нет , то это означтать может только два варианта - либо не совпадают VID и PID , вашего дескриптора с теми , которые лежат в инф файле , либо есть кардинальное несоответствие интерфейсов указываемых ваши дескриптором с двайверами . у Вас какой вариант ?

Видимо, у меня второй вариант. smile.gif Спасибо, буду разбираться.
Go to the top of the page
 
+Quote Post
cebotor
сообщение Apr 20 2007, 17:47
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 6-04-07
Из: Бронницы
Пользователь №: 26 809



Цитата(junkl @ Apr 20 2007, 17:00) *
Видимо, у меня второй вариант. smile.gif Спасибо, буду разбираться.

если хотите увидеть то , что в самом деле фидит винда получая Ваши дескрипторы - то можно воспользоваться утилитой библиотеки libusb


--------------------
если еррата пуста - это не хорошо а плохо
Go to the top of the page
 
+Quote Post
junkl
сообщение Apr 20 2007, 21:12
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 69
Регистрация: 12-10-05
Из: Калуга
Пользователь №: 9 539



Цитата(cebotor @ Apr 20 2007, 18:47) *
если хотите увидеть то , что в самом деле фидит винда получая Ваши дескрипторы - то можно воспользоваться утилитой библиотеки libusb

А где ее взять?
Go to the top of the page
 
+Quote Post
amw
сообщение Apr 21 2007, 11:52
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(junkl @ Apr 20 2007, 21:12) *
А где ее взять?

http://libusb.sourceforge.net/


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
junkl
сообщение Apr 23 2007, 08:56
Сообщение #7


Участник
*

Группа: Новичок
Сообщений: 69
Регистрация: 12-10-05
Из: Калуга
Пользователь №: 9 539



Пытаюсь установить libusb, делаю все, как написано в INSTALL.libusb
(
% gzip -cd libusb-0.1.12.tar.gz | tar xvf - # unpack the sources
% cd libusb-0.1.12 # change to the toplevel directory
% ./configure # run the `configure' script
% make # build libusb
[ Become root if necessary ]
% make install
)

Распаковать-то я, конечно, распаковала и в папочку libusb-0.1.12 зашла.
Но у меня не получается запустить скрипт 'configure'

В ответ на './configure' я получаю:
"." не является внутренней или внешней командой, испольн-ой программой или пакетным файлом.

В ответ на 'make' получаю:
MAKE Version 5.2 Copiright <c> 1987, 2000 Borland

В ответ на 'make install' получаю:
MAKE Version 5.2 Copiright <c> 1987, 2000 Borland
Fatal: 'install' does not exist - don't know how to make it
-----------------------------------------------------------
Чего-то не хватает? Может надо что-нибудь предварительно установить?
Спасибо.
Go to the top of the page
 
+Quote Post
PrSt
сообщение Apr 23 2007, 09:26
Сообщение #8


http://uschema.com
****

Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394



Цитата(junkl @ Apr 23 2007, 08:56) *
Пытаюсь установить libusb, делаю все, как написано в INSTALL.libusb
(
% gzip -cd libusb-0.1.12.tar.gz | tar xvf - # unpack the sources
% cd libusb-0.1.12 # change to the toplevel directory
% ./configure # run the `configure' script
% make # build libusb
[ Become root if necessary ]
% make install
)

Распаковать-то я, конечно, распаковала и в папочку libusb-0.1.12 зашла.
Но у меня не получается запустить скрипт 'configure'

В ответ на './configure' я получаю:
"." не является внутренней или внешней командой, испольн-ой программой или пакетным файлом.

В ответ на 'make' получаю:
MAKE Version 5.2 Copiright <c> 1987, 2000 Borland

В ответ на 'make install' получаю:
MAKE Version 5.2 Copiright <c> 1987, 2000 Borland
Fatal: 'install' does not exist - don't know how to make it
-----------------------------------------------------------
Чего-то не хватает? Может надо что-нибудь предварительно установить?
Спасибо.

Стоп.... Погодите ка....
может я что-то не догоняю(не решал еще эту задачу), однако хочу хотя-бы для себя понять...
причем тут Borland?
Вы что это делаете в виндовс?
Вам привели ссылочку, и.... там ведь черным по белому написано

Operating System support
Linux
FreeBSD
NetBSD
OpenBSD
Darwin
MacOS X

от куда вы решили что Borland сможет собрать это хозяйство?
не удевительно Вы получаете вот это
Код
В ответ на 'make install' получаю:
MAKE Version 5.2 Copiright <c> 1987, 2000 Borland
Fatal: 'install' does not exist - don't know how to make it


поправьте пожалуйста меня если Borland уже умеет работать с утилитой make...
Если я все верно понял - то, Вам наверно это надо запускать со стороны "USB Device AT91RM9200" c Linux...


--------------------
Go to the top of the page
 
+Quote Post
cebotor
сообщение Apr 23 2007, 09:31
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 6-04-07
Из: Бронницы
Пользователь №: 26 809



Цитата(junkl @ Apr 23 2007, 09:56) *
Пытаюсь установить libusb, делаю все, как написано в INSTALL.libusb

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

http://libusb-win32.sourceforge.net

так подо что Вам ?


--------------------
если еррата пуста - это не хорошо а плохо
Go to the top of the page
 
+Quote Post
junkl
сообщение Apr 23 2007, 10:26
Сообщение #10


Участник
*

Группа: Новичок
Сообщений: 69
Регистрация: 12-10-05
Из: Калуга
Пользователь №: 9 539



Цитата(cebotor @ Apr 23 2007, 10:31) *
libusb есть и виндовый и линуксовый , если Вам нужен виндовый , то ссылку могу дать , там ничего вобще собирать не надо. то что Вы скачали , можно собрать под виндой , но работать будет под линуксом.
виндовый лежит тут

http://libusb-win32.sourceforge.net

так подо что Вам ?


Мне под Windows надо. Спасибо.
Go to the top of the page
 
+Quote Post
amw
сообщение Apr 23 2007, 14:29
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата
поправьте пожалуйста меня если Borland уже умеет работать с утилитой make...

Borland-овские инструменты (компиляторы, IDE ...) имею свой make.
Цитата
Если я все верно понял - то, Вам наверно это надо запускать со стороны "USB Device AT91RM9200" c Linux...

Нет, на хосте. Но использовать Windows версию.
Хотя и на RM9200 под Linux тоже можно, я думаю. Тогда использовать Linux версию, если там Linux.

Сообщение отредактировал amw - Apr 23 2007, 14:34


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
junkl
сообщение Apr 24 2007, 16:04
Сообщение #12


Участник
*

Группа: Новичок
Сообщений: 69
Регистрация: 12-10-05
Из: Калуга
Пользователь №: 9 539



Цитата(cebotor @ Apr 20 2007, 15:41) *
если Винда не дает выбрать инф файл для устройства , говоря о том , что в нем подходящих данных нет , то это означтать может только два варианта - либо не совпадают VID и PID , вашего дескриптора с теми , которые лежат в инф файле , либо есть кардинальное несоответствие интерфейсов указываемых ваши дескриптором с двайверами . у Вас какой вариант ?

Теперь я поняла, что у меня как раз первый вариант:
мое Неизвестное устройство отображается в Диспетчере устройств с PID и VID = 0.
Смотрю в отладчике передачу дескриптора устройства по запросу от хоста.
Может быть код моей функции неверен?
Код
void AT91F_SVC_USBCTL_DataIn(
    AT91PS_SVC_USBCTL pSvcUdp,     // \arg Pointer to an USBCTL service
    AT91PS_UDP pUdp)               // \arg Pointer to UDP registers
{
char *pBuffer;
unsigned int i;
// If bufferSize == 0 Send a Zero length packet
if (pSvcUdp->bufferSize == 0)
    AT91F_UDP_EpEndOfWr(pUdp, 0); // pUDP->UDP_CSR[endpoint] |= AT91C_UDP_TXPKTRDY; - data in FIFI is ready to be sent
// else initialize DPR
else {
   printf ("-I- In %d \r", pSvcUdp->bufferSize );
   pBuffer = pSvcUdp->pBuffer;

   do{//   while (pSvcUdp->bufferSize){
    if (pSvcUdp->bufferSize >= 8) { // bank 0 = 8 byte ?
      AT91F_UDP_EpWrite(pUdp, 0, *pBuffer++);
      AT91F_UDP_EpWrite(pUdp, 0, *pBuffer++);
      AT91F_UDP_EpWrite(pUdp, 0, *pBuffer++);
      AT91F_UDP_EpWrite(pUdp, 0, *pBuffer++);
      AT91F_UDP_EpWrite(pUdp, 0, *pBuffer++);
      AT91F_UDP_EpWrite(pUdp, 0, *pBuffer++);
      AT91F_UDP_EpWrite(pUdp, 0, *pBuffer++);
      AT91F_UDP_EpWrite(pUdp, 0, *pBuffer++);
      pSvcUdp->bufferSize -= 8;
    }
    else {
      for (i=0;i<pSvcUdp->bufferSize;i++)
        AT91F_UDP_EpWrite(pUdp, 0, *pBuffer++);

      pSvcUdp->bufferSize = 0;
    }

    pSvcUdp->pBuffer = pBuffer;
    AT91F_UDP_EpEndOfWr(pUdp, 0);   // pUDP->UDP_CSR[endpoint] |= AT91C_UDP_TXPKTRDY; - data in FIFI is ready to be sent
}  while (pSvcUdp->bufferSize);
}

  pSvcUdp->eot = !(pSvcUdp->bufferSize);
}


В исходном примере код был такой:
Код
...
    // If bufferSize == 0 Send a Zero length packet
    if (pSvcUdp->bufferSize == 0)
        AT91F_UDP_EpEndOfWr(pUdp, 0);

    // else initialize DPR
    else {
        pBuffer = pSvcUdp->pBuffer;
        if (pSvcUdp->bufferSize >= 8) {
            AT91F_UDP_EpWrite(pUdp, 0, *pBuffer++);
            AT91F_UDP_EpWrite(pUdp, 0, *pBuffer++);
            AT91F_UDP_EpWrite(pUdp, 0, *pBuffer++);
            AT91F_UDP_EpWrite(pUdp, 0, *pBuffer++);
            AT91F_UDP_EpWrite(pUdp, 0, *pBuffer++);
            AT91F_UDP_EpWrite(pUdp, 0, *pBuffer++);
            AT91F_UDP_EpWrite(pUdp, 0, *pBuffer++);
            AT91F_UDP_EpWrite(pUdp, 0, *pBuffer++);
            pSvcUdp->bufferSize -= 8;
        }
        else while (pSvcUdp->bufferSize--)
            AT91F_UDP_EpWrite(pUdp, 0, *pBuffer++);
            
        pSvcUdp->pBuffer = pBuffer;
        AT91F_UDP_EpEndOfWr(pUdp, 0);
    }
    pSvcUdp->eot = !(pSvcUdp->bufferSize);
...

Но только вот я не понимаю, как с помощью этой функции можно передать 18-байтный дескриптор, если реально передается только 8?

Спасибо.
Go to the top of the page
 
+Quote Post
amw
сообщение Apr 25 2007, 11:05
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(junkl @ Apr 24 2007, 16:04) *
Теперь я поняла, что у меня как раз первый вариант:
мое Неизвестное устройство отображается в Диспетчере устройств с PID и VID = 0.
Смотрю в отладчике передачу дескриптора устройства по запросу от хоста.

Но только вот я не понимаю, как с помощью этой функции можно передать 18-байтный дескриптор, если реально передается только 8?

Спасибо.

Размер конечной точки ноль равен восьми байтам? Я не знаю, как у RM9200 с этим размером. Если да, то нужно слать дескриптор устройства (который 18 байт длиной) порциями по восемь или меньше для последней порции байт. А точнее тремя порциями 8, 8, 2 байт.
Проверте сам дескриптор. Если там VID и PID равны нулю (что очень вероятно для примера) то укажите там правильные значения, которые прописаны в inf файле.
VID и PID равные нулю быть не могут. Смотрите спецификацию USB.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
cebotor
сообщение Apr 25 2007, 12:27
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 6-04-07
Из: Бронницы
Пользователь №: 26 809



Цитата(junkl @ Apr 24 2007, 17:04) *
void AT91F_SVC_USBCTL_DataIn(
AT91PS_SVC_USBCTL pSvcUdp, // \arg Pointer to an USBCTL service
AT91PS_UDP pUdp) // \arg Pointer to UDP registers
{

Но только вот я не понимаю, как с помощью этой функции можно передать 18-байтный дескриптор, если реально передается только 8?

Спасибо.

Вы не можете показать , где указанная функция применяется к дескриптору для передачи ? (хотелось бы в вашем исходном примере)
у меня вообще есть подозрение , что она вызывается где то циклически поэтому и отрабатывает только в пределах восьми байт .
Если не секрет , откуда пример ?


--------------------
если еррата пуста - это не хорошо а плохо
Go to the top of the page
 
+Quote Post
junkl
сообщение Apr 25 2007, 14:58
Сообщение #15


Участник
*

Группа: Новичок
Сообщений: 69
Регистрация: 12-10-05
Из: Калуга
Пользователь №: 9 539



Цитата(amw @ Apr 25 2007, 12:05) *
Размер конечной точки ноль равен восьми байтам? Я не знаю, как у RM9200 с этим размером. Если да, то нужно слать дескриптор устройства (который 18 байт длиной) порциями по восемь или меньше для последней порции байт. А точнее тремя порциями 8, 8, 2 байт.
Проверте сам дескриптор. Если там VID и PID равны нулю (что очень вероятно для примера) то укажите там правильные значения, которые прописаны в inf файле.
VID и PID равные нулю быть не могут. Смотрите спецификацию USB.


Да, размер Ep0 = 8. VID и PID ненулевые, совпадают со значениями в файле inf.
В своей функции я и передаю по 8 и меньше байт (8, 8, 2). Но устройство не распознается.
Я вот думаю, может я некорректно заканчиваю передачу каждых 8 байт?

Я вызываю функцию после передачи каждых 8, 8 и 2 байт:
AT91F_UDP_EpEndOfWr(pUdp, 0); // pUDP->UDP_CSR[endpoint] |= AT91C_UDP_TXPKTRDY; - data in FIFI is ready to be sent,
чтобы показать, что данные готовы к передаче.
Может быть перед передачей каждого куска надо еще ждать установки флага TX_COMP, чтобы удостовериться, что данные получены хостом?

Хотя я пробовала другой пример, и там этот флаг у меня не устанавливается.
И почему тогда в примере нет анализа этого флага?

Как проверить, что хост вообще получает мои данные?
Go to the top of the page
 
+Quote Post

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

 


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


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