Полная версия этой страницы:
mass storage ...
Vovanchik
Jul 11 2008, 07:20
Здравствуйте.
Реализовал на AT91SAM7S mass storage.
На моем компьютере все работает правильно. Стоит XP Professional SP1.
Но у одного конечного пользователя прибор не определяется в системе -
пишет "Неизвестное устройство" (пробовали на двух разных ПК - стоит XP professional SP2).
Проверил этот прибор у себя - работает.
Проверил еще на нескольких ПК, на которых стоит XP Professional и Home Edition,
и с SP1 и SP2 - все работает.
Не могу определиться с направлением поиска ошибки... Может кто чего посоветует.
Может все-таки на SP2 работает, а на SP1 не хочет? Скорее всего драйверы.
Может быть еще помехи на USB ( хотя это маловероятно ) - попробуйте короткий экранированный провод.
_4afc_
Jul 11 2008, 07:42
Цитата(Vovanchik @ Jul 11 2008, 11:20)

Здравствуйте.
Реализовал на AT91SAM7S mass storage.
На моем компьютере все работает правильно. Стоит XP Professional SP1.
Но у одного конечного пользователя прибор не определяется в системе -
пишет "Неизвестное устройство" (пробовали на двух разных ПК - стоит XP professional SP2).
Проверил этот прибор у себя - работает.
Проверил еще на нескольких ПК, на которых стоит XP Professional и Home Edition,
и с SP1 и SP2 - все работает.
Не могу определиться с направлением поиска ошибки... Может кто чего посоветует.
Компилятор?
какой (чей) mass storage реализовали?
Какой AT91SAM7S?
Уберите функции из озу и компилите всё в ARM режиме.
Проблема может быть во временах или разных запросах в разных виндах.
Vovanchik
Jul 11 2008, 07:57
Цитата
Может все-таки на SP2 работает, а на SP1 не хочет? Скорее всего драйверы.
Может быть еще помехи на USB ( хотя это маловероятно ) - попробуйте короткий экранированный провод.
Проверял и на SP1 и на SP2. У меня стоит SP1.
Проблема еще в том, что не могу найти рядом ПК с XP на котором не будет работать - уже проверил больше чем на 10 ПК - все ОК.
Цитата
Компилятор?
какой (чей) mass storage реализовали?
Какой AT91SAM7S?
Уберите функции из озу и компилите всё в ARM режиме.
Проблема может быть во временах или разных запросах в разных виндах.
Keil uVision3 v3.51 + RealView.
Пример mass storage взял атмеловский.
сейчас AT91SAM7S256, но планирую перейти на 512.
Функций в ОЗУ нет, а откомпилировать в АРМ не могу, код получается больше 256к.
aaarrr
Jul 11 2008, 12:28
Цитата(Vovanchik @ Jul 11 2008, 11:20)

Не могу определиться с направлением поиска ошибки... Может кто чего посоветует.
Наступал на подобные грабли при создании своего стека. Насколько я помню, это было связано с последовательностью действий при обработке SETUP запросов.
Могу только посоветовать достать все-таки компьютер, на котором устройство глючит - без этого никак.
А Вы кабель для подключения к компу используете тот-же самый, что и Ваш конечный пользователь?
_4afc_
Jul 11 2008, 13:37
Цитата(Vovanchik @ Jul 11 2008, 11:57)

Пример mass storage взял атмеловский.
сейчас AT91SAM7S256, но планирую перейти на 512.
Функций в ОЗУ нет, а откомпилировать в АРМ не могу, код получается больше 256к.
У меня атмеловский MSD1.7 также глючит в thumb в компиляторе WinARM.
Выкиньте всё лишнее кроме MSD и проверьте в АРМ режиме.
У меня MSD1.7+ФАТ+мои проги занимают 48к в АРМ режиме.
Если откомпилить в thumb или перенести в ОЗУ, то на половине машин в офисе - не пашет.
bloodden
Jul 11 2008, 21:01
Есть сборки разные типа ZVERCD, так я с ними не только ЮСБ а и много другого хлама немог заставить работать. Вот пример: мышка ЮСБ нивкакую. Убедите заказчика обновить/переустановить. Небось ещё спасибо скажет за дельный совет.
SergeiCh
Jul 12 2008, 04:40
А обычные флэшки на том компьютере определяются? У меня есть знакомый компьютер

с WinXP, который видит флэшки только после перезагрузки со вставленной флэшкой.
Цитата(_4afc_ @ Jul 11 2008, 14:42)

Уберите функции из озу и компилите всё в ARM режиме.Проблема может быть во временах или разных запросах в разных виндах.
Задержки в атмеловском примере из softpack на работу вроде бы не влияют, и даже наоборот

. Как я
тут писал, с NOTRACE, когда отладочная информация не выводится, msd отказывался форматироваться. У меня эта реализация под FreeRTOS компилируется gcc в thumb и нормально работает с низким приоритетом.
Я тоже делал Mass Storage Device, правда на LPC2148 на базе IAR овского примера.
- Сначала для меня были непонятны глюки с ошибками записи файлов - но после поднятия частоты
периферии выше 12 МГц все стало в норму.
- На всех XP на которых я пробовал все работает, но на 98х (у заказчиках и такие попадаются)
работает не всегда, даже с установлеными альтернативными драйверами. Я поменял в идентификатор
прибора с " SpcInquiryNotRemovableMedium " на " SpcInquiryRemovableMedium " - ситуация улучшилась.
А касательно вашей проблемы может проблема с самим USB (если не с драйверами) - у меня когда-то не самый новый комп с установленной XP не определял флешку, пока я в BIOSе не поменял режим на 1.0 принудительно.
Vovanchik
Jul 14 2008, 07:01
Наконец то нашел комп на котором не работает.
Стоит Win2000.
Почему то прибор не отвечает на запрос Win (смотрел SnoopyPro).
Поставил у себя 2000 все заработало.
Цитата
А касательно вашей проблемы может проблема с самим USB (если не с драйверами) - у меня когда-то не самый новый комп с установленной XP не определял флешку, пока я в BIOSе не поменял режим на 1.0 принудительно.
Попробую в BOIS поменять... Может поможет. Спасибо за совет.
Цитата
А обычные флэшки на том компьютере определяются? У меня есть знакомый компьютер с WinXP, который видит флэшки только после перезагрузки со вставленной флэшкой.
определяются...
Цитата
А Вы кабель для подключения к компу используете тот-же самый, что и Ваш конечный пользователь?
Сейчас другой, но с тем кабелем который отправляли ему у меня тоже все работало.
Вся проблема еще в том что заказчик в 1000 км от меня
aaarrr
Jul 14 2008, 10:34
Цитата(Vovanchik @ Jul 14 2008, 11:01)

Наконец то нашел комп на котором не работает.
Стоит Win2000.
Почему то прибор не отвечает на запрос Win (смотрел SnoopyPro).
Поставил у себя 2000 все заработало.

Просто дело не в винде, а в связке чипсет-винда. Придется Вам этот компьютер экспроприировать
Vovanchik
Jul 18 2008, 06:56
Цитата(aaarrr @ Jul 14 2008, 14:34)

Просто дело не в винде, а в связке чипсет-винда. Придется Вам этот компьютер экспроприировать

Хорошо бы, но не отдают

, на нем висит вся охрана ...
Сегодня пробовал еще раз запуститься на нем.
Обнаружил что в БИОСе прибор определяется как положено - выдает правильное название, пишет что USB Mass Storage, но при перезагрузке в Windows опять "неизвестное устройство". Отключил в БИОСе поддержку USB 2.0 - не помогло.
В Windows при установке драйверов цепляется файл USB.inf, хотя должен USBstor.inf (в свойствах пишет ошибка код 28). Один раз получилось прицепить USBstor.inf но в итоге ошибка код 10.
Что эти коды означают?
Думаю может стоит обновить дрова для чипсета?
dmitry-rf
Jul 22 2008, 10:20
а на атмэловском масс сторидже ктонибудь чтото реализовывал или его проверять надо?
andron86
Jul 23 2008, 08:33
А есть ли у кого атмеловский пример mass storage для NAND флэша?
_4afc_
Jul 23 2008, 12:29
Цитата(dch @ Jul 23 2008, 12:00)

а на атмэловском масс сторидже ктонибудь чтото реализовывал или его проверять надо?
А это который?
На их MSD1.7 я реализовал USB<->SDcard скорость 2Мбита.
Есть ещё что-то лежащее в webPak - его не пробовал, самому интересно что за зверь.
Не определяется USB из тестового примера на AT91SAM7A3 на некоторых ПК на XP SP2, при этом при подключении через usb-хаб все работает.
Мне встречались USB-флешки, которые вели себя точно так же.
А по поводу примеров - с чужим кодом имеете чужие глюки, и никак иначе.
и не у меня одного
http://electronix.ru/forum/index.php?s=&am...st&p=359663, что характерно матплата тоже из новых под AMD
Golikov A.
Aug 7 2008, 20:21
Цитата(Меандр @ Aug 6 2008, 20:03)

и не у меня одного
http://electronix.ru/forum/index.php?s=&am...st&p=359663, что характерно матплата тоже из новых под AMD

Был косяк когда делал усб, после частично заполненных дескрипторов подключал устрйотсво в винду для тестов. И та его запомнила, пока насильно не удалил его из списка устройств, через диспечер устройств, даже новое переделанное устройство определялось как старое неработающее... Маловероятно но может тут что-то типа того. Попробуйте грохнуть устройство принудительно, и заново найти. (там есть еще галочка показать скрытые устройства, может что-то с таким же вендером и пидом в винде лежит в невидиммых устройствах)
И потом если я не ошибаюсь УСБ 2.0 поддерживается асусовскими материнками после СП2, а до этого момента надо ставить драйвер материнки с прилагаемого диска, многие игнорируют этот процесс. Может подобная ситуация... в дескрипторе какая версия усб пробита у вас?
Все что смог придумать
Цитата(Golikov A. @ Aug 8 2008, 00:21)

Был косяк когда делал усб, после частично заполненных дескрипторов подключал устрйотсво в винду для тестов. И та его запомнила, пока насильно не удалил его из списка устройств, через диспечер устройств, даже новое переделанное устройство определялось как старое неработающее...
Можно сменить имя производителя или название устройства, не меняя PID/VID - приводит к переустановке драйвера. Кроме того драйвер ставится на каждый порт заново, во всяком случае по PID/VID. Т.е. можно в другой разъём сунуть в подобной ситуации.
sonycman
Jun 17 2009, 11:35
Тоже приступаю к написанию USB Mass Storage, но на STM32.
Подскажите, пожалуйста, насчёт дескрипторов текстовых строк.
В частности, нулевой дескриптор должен содержать идентификаторы языка.
Достаточно одного, или требуется отдельный LanguageID для каждой строки?
Будет ли русский текст правильно отображаться, если задать ID для английского языка - 0х409?
И ещё - посмотрел обмен по USB всякими снифферами. Что-то они показывают всё с довольно высокого уровня.
Имею ввиду, например, Bulk Data In транзакция длиной 4096 байт показана как единая транзакция...
Такого же быть не может, так как Bulk endpoints имеют макс. длину пакета равную 64 байтам (512 для High Speed).
То есть на самом деле эта транзакция идёт несколькими пакетами по 64 байта?
Да ещё и NAKи случаются, если девайс передаёт данные не сразу...
Как можно посмотреть всю низкоуровневую подноготную транзакций?
sonycman
Jun 17 2009, 20:10
Что-то совсем туго у STM с буфером под конечные точки.
Всего-то 512 байт. Минус ещё 128 байт - таблица адресов для конечных точек находится там же!
Ладно bulk передачи будут без проблем, но вот изохронные ни 512, ни тем более 1023 не осуществить...
Что они так жмут эту SRAM?
aaarrr
Jun 17 2009, 20:22
Цитата(sonycman @ Jun 18 2009, 00:10)

Что они так жмут эту SRAM?
Деньги экономят. А изохронная передача >512 байт - для стандартного звука много, а видео STM32 не нужно
sonycman
Jun 18 2009, 01:01
Цитата(aaarrr @ Jun 18 2009, 00:22)

Деньги экономят. А изохронная передача >512 байт - для стандартного звука много, а видео STM32 не нужно

Дык там ведь и 512 не получится - таблица конечных точек тоже лежит в этой-же SRAM...
Вообще в мануале есть вот такие слова:
– If BL_SIZE=1, the memory block is 32 byte large, which allows to reach the maximum packet length defined by USB specifications. With this block size the allocated buffer size
ranges from 32 to 1024 bytes, which is the longest packet size allowed by USB standard
specificationsИ далее идёт табличка, в которой макс. допустимым размером буффера является, конечно же 512.
То есть все эти слова - чистое враньё!
Вероятно, изначально в планах ST был всё таки массив в 1024 или даже больше байт, а затем урезали в целях экономии в два раза...
Ещё интересно вот это:
Reception memory buffer locations are written starting from the address contained in the
ADDRn_RX for a number of bytes corresponding to the received data packet length, CRC
included (i.e. data payload length + 2),
Ну зачем мне могут понадобиться в буфере два байта CRC при приёме, когда они проверяются аппаратно и автоматически?
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.