|
|
  |
проблемы с настройкой модуля USB в AT91SAM7S256 |
|
|
|
Oct 24 2007, 11:44
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 16-05-06
Пользователь №: 17 135

|
М-да что то не получается Из проводника диск форматируется , но при записи файла подвисает , причём потом из проводника диск виден , а например из-под тотал командера нет , т.е получается что при записи файла корёжится файловая система, но как то хитро Не совсем понял USB_CONFIG = 0x60 - это что ? Цитата(_4afc_ @ Oct 24 2007, 15:23)  А зачем им управлять? Кроме того там могут стоять другие клоки по сравнению с вашими. Зачем зря кварц и Pll дёргать. Достаточно для протокола отрубить\врубить usb: А тут мы в сами друг друга не поняли: я тоже имел ввиду что , не стоит по 2 раза конфигурить проц , соответственно и из обработки флага RXSUSP надо бы енто удалить , там частота ядра снижается , видимо для уменьшения потребления ?
|
|
|
|
|
Oct 24 2007, 11:45
|

Профессионал
    
Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565

|
Цитата(coolzero @ Oct 24 2007, 15:29)  Не совсем понял USB_CONFIG = 0x60 - это что ? Я имел ввиду нижеследующее, но вы скорее всего этот этап уже проскочили Вариант для устроиства с собственным питанием: Код FW_FULL_CONFIG_DESCRIPTOR fw_config = { { // Standard Configuration Descriptor sizeof(USB_CONFIGURATION_DESCRIPTOR), // Size of this descriptor in bytes USB_CONFIGURATION_DESCRIPTOR_TYPE, // CONFIGURATION Descriptor Type sizeof(FW_FULL_CONFIG_DESCRIPTOR), // Total length of data returned for this configuration. 1, // Number of interfaces supported by this configuration 1, // Value to use as an argument to the SetConfiguration() request to select this configuration 0, // Index of string descriptor describing this configuration 0x60,//USB_CONFIG_SELF_NOWAKEUP,//Must be 0x60 //USB_CONFIG_BUS_NOWAKEUP, // attribute : Bus-powered, no wakeup 0x01 // Maximum power consumption (in 2mA unit, so 0x01 =1= 2mA) }, Цитата(coolzero @ Oct 24 2007, 15:29)  М-да что то не получается Из проводника диск форматируется , но при записи файла подвисает , причём потом из проводника диск виден , а например из-под тотал командера нет , т.е получается что при записи файла корёжится файловая система, но как то хитро Разбиритесь со своей реализацией FAT или уберите её совсем для отсечения ошибок. Windows критична ко времени выполнения ReadMedia/flashwriteAdress - не ставьте там задержек. Вообще похоже весь протокол выполняется в прерывании. Цитата(coolzero @ Oct 24 2007, 15:29)  там частота ядра снижается , видимо для уменьшения потребления ? Да, причём мне кажется сие нужно делать только если где-то будет сказано, что у вас есть такой режим - малого потребления.
Сообщение отредактировал _4afc_ - Oct 24 2007, 11:49
|
|
|
|
|
Oct 24 2007, 12:02
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 16-05-06
Пользователь №: 17 135

|
вот оно что , я то думаю где собака порылась насчёт 0х60 я так и подумал , только вот в исходниках значение USB_CONFIG_SELF_NOWAKEUP = 0хС0 ... у меня с такими параметром винда и у-во не могла определить ... Насчёт того что Windows критична ко времени - это не есть гуд Так как я пишу по SPI во внешнюю флеш , то хадержки могут быть там Придётся попробовать увеличить скорость ( сейчас MCK\4) или использовать DMA... мне так кажется
|
|
|
|
|
Oct 24 2007, 12:26
|

Профессионал
    
Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565

|
Цитата(coolzero @ Oct 24 2007, 16:02)  вот оно что , я то думаю где собака порылась насчёт 0х60 я так и подумал , только вот в исходниках значение USB_CONFIG_SELF_NOWAKEUP = 0хС0 ... я уже не помню почему выбрал именно 0х60, но их цифры меня навели на мысль, что они биты путают. Цитата(coolzero @ Oct 24 2007, 16:02)  у меня с такими параметром винда и у-во не могла определить ... Насчёт того что Windows критична ко времени - это не есть гуд Так как я пишу по SPI во внешнюю флеш , то хадержки могут быть там Я на 50мс задерживал - скорость заполнения внутреннего буфера - ничего. Но если на секунды - то вроде отваливался. Кстати - поставьте свой PID/VID - тоже полегче будет жить. Цитата(coolzero @ Oct 24 2007, 16:02)  Придётся попробовать увеличить скорость ( сейчас MCK\4) или использовать DMA... мне так кажется в дма - придётся cs самому дёргать
Сообщение отредактировал _4afc_ - Oct 24 2007, 12:28
|
|
|
|
|
Oct 24 2007, 12:40
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 16-05-06
Пользователь №: 17 135

|
А если я поменяю PID\VID - у меня проблем с драйверами не будет ? Я думал что они как раз по ним дрова цепляют , потому что у меня было 2 примера - CDC модем и эмулятор сом-порта , разница у них была в последнем бите PID , но при этом каждый цеплял свой драйвер ... Если речь идёт о секундах тада засада : копирую файлы по 3 кило - нормально , порядка 60 - завис . и от файловой системы мне не уйти , записанные файлы я должен буду потом найти и использовать уже по другому назаначению ( не по USB ) , а как их использовать если файловая структура не понятно какая.. ?
|
|
|
|
|
Oct 24 2007, 13:04
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 16-05-06
Пользователь №: 17 135

|
Значит надо рыть в другую сторону , возможно действительно уйти от динамического распределения памяти в сторону статических буфферов.
|
|
|
|
|
Oct 25 2007, 05:15
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 16-05-06
Пользователь №: 17 135

|
Да вроде нет - програмка пока отладочная , кроме usb нет ничего , только обработка прерываний по usb , да бесконечный цикл по опросу состояния флагов ( приём , передача , event ) .
Маленькие файлы копируются вроде нормально ( ~1-3 кБ) , побольше похоже не всегда дописываются до конца
|
|
|
|
|
Oct 25 2007, 07:54
|
Участник

Группа: Свой
Сообщений: 45
Регистрация: 19-04-07
Пользователь №: 27 172

|
Цитата(coolzero @ Oct 25 2007, 11:15)  Маленькие файлы копируются вроде нормально ( ~1-3 кБ) , побольше похоже не всегда дописываются до конца Возможно проблемы и не в программе. У нас иногда с серийными устройствами бывают "проблемы" при проверки работы USB, потом оказывается, что очередной раз купили плохие кабели. Обычно если на кабеле маркировка "High Speed", проблем не бывает, а если "Full Speed", то как повезет
|
|
|
|
|
Oct 25 2007, 08:51
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 16-05-06
Пользователь №: 17 135

|
Всё возможно , надо проверить , спасибо ... Но вот странная штука , проверяя отладчиком и USBMonitor трафик пакетов , получаю что в случае зависания копирования , получаю от винды совершенно чумовую копию каталога файлов ( я так понимаю что при записи файла , она считывает мой каталог , вносит туда новую запись и посылает мне ). После этого всё виснет... Там почему то записаны 2 записи имени файла - первая с 0 между каждыми символами - 2 нормальная ...
|
|
|
|
|
Oct 25 2007, 10:21
|

Профессионал
    
Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565

|
Цитата(Dron_Gus @ Oct 25 2007, 13:53)  Я описание ФАТ давно читал, но не длинное ли имя файла так закодировано? По два байта на символ... Именно длинное имя пишется в UTF16 ! Причём используется практически все 32 байта записи. Причём если имя длинное - используют несколько записей. Проще писать в формате 8+3 сомандером - тогда всё тип-топ будет.
|
|
|
|
|
Oct 25 2007, 10:23
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 16-05-06
Пользователь №: 17 135

|
Так точно , похоже на то . Длину имен подрезал, стало получше, думал что совсем хорошо... Но погонял и некоторая нестабильность в работе всё равно остаётся
|
|
|
|
|
Oct 25 2007, 10:42
|
Участник

Группа: Свой
Сообщений: 45
Регистрация: 19-04-07
Пользователь №: 27 172

|
Цитата(coolzero @ Oct 25 2007, 16:23)  Так точно , похоже на то . Длину имен подрезал, стало получше, думал что совсем хорошо... Но погонял и некоторая нестабильность в работе всё равно остаётся Все-таки кабель Full Speed или High Speed? Что на нем написано?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|