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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Бардак с at91sam7s64, Не работает норм ЮСБ
SolarA
сообщение Sep 9 2008, 12:50
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 17
Регистрация: 28-08-08
Пользователь №: 39 873



Народ не работает ЮСБ. help.gif
Скачал с сайта Атмела примеры версии 1.4 и попробовал вшить usb mass storage device. После этого плата определяет как просто device которому нужны драйвера и все(пробовал на 2000 и на ХР). Пробовал также версии которые идут с ИАР 5.2(по идеи тот же 1.4) а также версия 1.3. Все точно так же. Уже не знаю че делать. Устройство нормально не определяется и все. (тока один раз я нашел бинарник с GCCшного проекта поидеи который вшился и заработал, тоесть определил платку как масс сторедж с 0 байтов вообще и 0 байтов свободного места. это устройство нельзя отформатировать)

Задача
Мне надо организовать обмен данными между ПК и МК. Примерно 600 байт туда и обратно раз в милисекунду гдето(лучше чаще). Думал сделать через масс сторедж, дабы с ПК писало в какойто файл, а читало с другого. Выделить под эти файлы допустим по 2 кБ в РАМ(для с64 всего 16кб РАМ) и спокойно себе писать в файл с ПК и читать область памяти в проге на МК.
Или как вариант написать драйвера под винду для своего девайса и через них уже както общатся.

Хотелось бы услышать какието идеи или замечания как это сделать и если кому не сложно, попробуйте вшить иаровский пример - будет ли он у вас работать. Если будет, то пришлите ссылочку откуда скачали или же сам проект.
Буду премного благодарен за инфу
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Sep 9 2008, 13:10
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Во-первых, действительно ли оно у Вас просит драйверы, или говорит "unknown device"?

Во-вторых, 600 байт/мс туда и обратно через шину элементарно не пройдут.
Go to the top of the page
 
+Quote Post
SolarA
сообщение Sep 9 2008, 13:21
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 17
Регистрация: 28-08-08
Пользователь №: 39 873



Цитата(aaarrr @ Sep 9 2008, 16:10) *
Во-первых, действительно ли оно у Вас просит драйверы, или говорит "unknown device"?

Во-вторых, 600 байт/мс туда и обратно через шину элементарно не пройдут.

Пишет вот так:
USBDevice
"Для устройства не установлены драйверы. (Код 28)
Нажмите "Переустановить" для переустановки драйверов этого устройства."
Я понял вопрос, я вшивал core project он сразу просит установить драйвера,а этот в 2000 у меня не просит, а на ХР говорит что устройство сконфигурировано неправильно или чтото в таком духе.

Почему 600 байт/мс не пройдут? Скорость для фулл спид 12Мбит/сек=12кбит/мс вроде правильно считаю, ясно что такой скорости не будет, но 1кбит/мс думаю, что точно должно тянуть.

Плюс еще хотел спросить а то с даташита к at91sam7s64 не ясно: у UDP есть свои встроенные буфера FIFO или как в USARTе они работают с контроллером ПДП или их вообще нада назначать с РАМ в проге как какието масивы например
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Sep 9 2008, 13:34
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(SolarA @ Sep 9 2008, 17:21) *
Пишет вот так:
USBDevice
"Для устройства не установлены драйверы. (Код 28)
Нажмите "Переустановить" для переустановки драйверов этого устройства."
Я понял вопрос, я вшивал core project он сразу просит установить драйвера,а этот в 2000 у меня не просит, а на ХР говорит что устройство сконфигурировано неправильно или чтото в таком духе.

Понятно. Видимо нужно сказать спасибо кривым примерам.

Цитата(SolarA @ Sep 9 2008, 17:21) *
Почему 600 байт/мс не пройдут? Скорость для фулл спид 12Мбит/сек=12кбит/мс вроде правильно считаю, ясно что такой скорости не будет, но 1кбит/мс думаю, что точно должно тянуть.

1кбит/мс будет, а 4.8кбит/мс в обе стороны не будет.

Цитата(SolarA @ Sep 9 2008, 17:21) *
Плюс еще хотел спросить а то с даташита к at91sam7s64 не ясно: у UDP есть свои встроенные буфера FIFO или как в USARTе они работают с контроллером ПДП или их вообще нада назначать с РАМ в проге как какието масивы например

В даташите все предельно ясно: у UDP есть свои FIFO и нет PDC.
Go to the top of the page
 
+Quote Post
SolarA
сообщение Sep 9 2008, 14:02
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 17
Регистрация: 28-08-08
Пользователь №: 39 873



С UDP понял. Как собсно и с примерами.
Может у когото есть правильный пример инициализации для mass storage device?

По поводу скорости: я указал самый худший вариант. На самом деле там большую часть времени будет к ПК 270 байтов, с ПК на МК 300 байтов. Думаю будет успевать.

Сразу такой вопрос: можно ли организовать mass storage device с памятью в РАМ? Я ща копаюсь в исходниках недопримера там вроде выставляются адрес начала памяти и ее количество. Но не совсем понятно как оно все работает.

Плюс забыл сказать что тот бинарник с GCCшного примера пользует одинаковые библиотеки с моим проектом. Отсюда напрашивается такие вопросы:
1. Не из-за компилятора ли у меня не работает пример?
2. Не из-за того ли, что у меня не атмеловский evaluation board, а какойто полусамопальный наш(без кнопок, памяти, дисплея и т.д.), не работает пример? (По типу, он лезет в СДРАМ которой нету и поэтому както бочит)

Кстати толькошо нашел заглушку (если чегото там нету то прога не доходит до инициализации ЮСБ), убал ее. Теперь у меня неизвестное ЮСБ запоминающее устройство для которого в 2000 нада поставить драйвера, а ХР попросту говорит что оно сконфигурировано не правильно. Но зато уже определяет Vendor ID, Product ID и еже с ними.
Кстати там есть 2 такие строки

// Configure baud rate
AT91C_BASE_DBGU->DBGU_BRGR = BOARD_MCK / (115200 * 16);
// Enable receiver and transmitter
AT91C_BASE_DBGU->DBGU_CR = AT91C_US_RXEN | AT91C_US_TXEN;

Без которых устройство не определяется. Ума не приложу какое отношение DBGU имеет к UDP
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Sep 9 2008, 14:10
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(SolarA @ Sep 9 2008, 17:56) *
Может у когото есть правильный пример инициализации для mass storage device?

Едва ли кто-то станет делиться правильным примером бесплатно, увы sad.gif

Цитата(SolarA @ Sep 9 2008, 17:56) *
По поводу скорости: я указал самый худший вариант. На самом деле там большую часть времени будет к ПК 270 байтов, с ПК на МК 300 байтов. Думаю будет успевать.

В таком виде должно. Только учтите, что нагрузку на процессор это даст довольно заметную.

Цитата(SolarA @ Sep 9 2008, 17:56) *
Сразу такой вопрос: можно ли организовать mass storage device с памятью в РАМ?

Можно, почему нет?

Цитата(SolarA @ Sep 9 2008, 17:56) *
1. Не из-за компилятора ли у меня не работает пример?
2. Не из-за того ли, что у меня не атмеловский evaluation board, а какойто полусамопальный наш(без кнопок, памяти, дисплея и т.д.), не работает пример? (По типу, он лезет в СДРАМ которой нету и поэтому както бочит)

1. Это Вам должно быть виднее.
2. Насколько я помню, для атмеловского примера для S64 нужен только исправный процессор с правильным кварцем.

Цитата(SolarA @ Sep 9 2008, 18:02) *
Ума не приложу какое отношение DBGU имеет к UDP

Если выключить DBGU, то процессор просто зависнет при попытке отправить через него диагностику.
Go to the top of the page
 
+Quote Post
SolarA
сообщение Sep 9 2008, 14:17
Сообщение #7


Участник
*

Группа: Новичок
Сообщений: 17
Регистрация: 28-08-08
Пользователь №: 39 873



звучит тупо-но я чтото сделал и у меня нормально определилось устройство.
Пока у него 0 байт всего
буду копать дальше. Спасибо за поддержку beer.gif
Go to the top of the page
 
+Quote Post
SolarA
сообщение Sep 9 2008, 15:33
Сообщение #8


Участник
*

Группа: Новичок
Сообщений: 17
Регистрация: 28-08-08
Пользователь №: 39 873



Цитата(SolarA @ Sep 9 2008, 17:17) *
звучит тупо-но я чтото сделал и у меня нормально определилось устройство.
Пока у него 0 байт всего
буду копать дальше. Спасибо за поддержку beer.gif



Уже продолжая тему, может комуто сгодится, я подправил описание в проекте, поетому он у меня и запустился.
Теперь мучаю память, пока не получается ничего выделить, и у меня висит дисковый накопитель размером 0 байт.
Решил переписать для СДРАМ начальный адрес как кусок РАМ длинной в ФФФ
Go to the top of the page
 
+Quote Post
uriy
сообщение Sep 9 2008, 16:21
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Цитата
Уже продолжая тему, может комуто сгодится, я подправил описание в проекте, поетому он у меня и запустился.
Тогда зачем было писать в названии ветки что в SAM7S64 не работает USB раз вы не определили точно в чем проблема в железе или в софте? Кстати через какой интерфейс вы прошивали контроллер? На 99,9% уверен что через USB с помощью SAM-BA. Это еще раз подтверждает что USB работает. Где-то у меня была реализация Mass Storage. Там в примере уже был текстовый файл на диске. Размер диска 16 Кбайт кажется был. Если найду выложу.
Go to the top of the page
 
+Quote Post
SolarA
сообщение Sep 10 2008, 09:59
Сообщение #10


Участник
*

Группа: Новичок
Сообщений: 17
Регистрация: 28-08-08
Пользователь №: 39 873



Не получается выделить память.
Пишу такое :

MEDSdram_Initialize(&(medias[numMedias]),0x00203000,0x0FFF);
LUN_Init(&(luns[numMedias]), &(medias[numMedias]), buffer, 0, 0x0FFF, BLOCK_SIZE);
numMedias++;

где void MEDSdram_Initialize(Media *media,
unsigned int baseAddress,
unsigned int size)
{
trace_LOG(trace_INFO, "I: Sdram init\n\r");

// Initialize media fields
media->write = MEDSdram_Write;
media->read = MEDSdram_Read;
media->handler = 0;
media->flush = 0;
media->baseAddress = baseAddress;
media->size = size;
media->state = MED_STATE_READY;

media->transfer.data = 0;
media->transfer.address = 0;
media->transfer.length = 0;
media->transfer.callback = 0;
media->transfer.argument = 0;
}

void LUN_Init(MSDLun *lun,
Media *media,
unsigned char *buffer,
unsigned int baseAddress,
unsigned int size,
unsigned int blockSize)
{
unsigned int logicalBlockAddress = (size / blockSize) - 1;
trace_LOG(trace_INFO, "I: LUN init\n\r");

// Initialize LUN
lun->media = media;
lun->baseAddress = baseAddress;
lun->size = size;
lun->blockSize = blockSize;
lun->readWriteBuffer = buffer;

// Initialize request sense data
lun->requestSenseData.bResponseCode = SBC_SENSE_DATA_FIXED_CURRENT;
lun->requestSenseData.isValid = 1;
lun->requestSenseData.bObsolete1 = 0;
lun->requestSenseData.bSenseKey = SBC_SENSE_KEY_NO_SENSE;
lun->requestSenseData.bReserved1 = 0;
lun->requestSenseData.isILI = 0;
lun->requestSenseData.isEOM = 0;
lun->requestSenseData.isFilemark = 0;
lun->requestSenseData.pInformation[0] = 0;
lun->requestSenseData.pInformation[1] = 0;
lun->requestSenseData.pInformation[2] = 0;
lun->requestSenseData.pInformation[3] = 0;
lun->requestSenseData.bAdditionalSenseLength
= sizeof(SBCRequestSenseData) - 8;
lun->requestSenseData.bAdditionalSenseCode = 0;
lun->requestSenseData.bAdditionalSenseCodeQualifier = 0;
lun->requestSenseData.bFieldReplaceableUnitCode = 0;
lun->requestSenseData.bSenseKeySpecific = 0;
lun->requestSenseData.pSenseKeySpecific[0] = 0;
lun->requestSenseData.pSenseKeySpecific[0] = 0;
lun->requestSenseData.isSKSV = 0;

// Initialize inquiry data
lun->inquiryData = &inquiryData;

// Initialize read capacity data
STORE_DWORDB(logicalBlockAddress,
lun->readCapacityData.pLogicalBlockAddress);
STORE_DWORDB(blockSize, lun->readCapacityData.pLogicalBlockLength);
}


По идеи после этого у меня в устройстве должно появится 4095 байт места, которое я выдрал с РАМ
Но этого нету.
Подскажите пожалуйста где не правильно

Цитата(uriy @ Sep 9 2008, 19:21) *
Тогда зачем было писать в названии ветки что в SAM7S64 не работает USB раз вы не определили точно в чем проблема в железе или в софте? Кстати через какой интерфейс вы прошивали контроллер? На 99,9% уверен что через USB с помощью SAM-BA. Это еще раз подтверждает что USB работает. Где-то у меня была реализация Mass Storage. Там в примере уже был текстовый файл на диске. Размер диска 16 Кбайт кажется был. Если найду выложу.


Выложи пожалуйста.
С названием ветки протупил 05.gif , но ее уже вроде нельзя изменить.
Прошиваю через usb с помощью ИАР, или через SEGGER J-FLASH.
Отлаживаю Jet link 5
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Sep 10 2008, 10:43
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(SolarA @ Sep 10 2008, 13:59) *
По идеи после этого у меня в устройстве должно появится 4095 байт места, которое я выдрал с РАМ
Но этого нету.

Что же Вы один байт-то зажали? Дайте хотя бы 4096.
Но боюсь, что даже для самого маленького диска это слишком мало.
Go to the top of the page
 
+Quote Post
SolarA
сообщение Sep 10 2008, 10:54
Сообщение #12


Участник
*

Группа: Новичок
Сообщений: 17
Регистрация: 28-08-08
Пользователь №: 39 873



Почему мало?
Вы имеете ввиду что его винда определит как 0 или что мне его мало для нужд?
Мне хватить должно с головой. А насчет винды, я по крайней мере не слышал о какихто ограничениях в размере диска.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Sep 10 2008, 11:16
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



4096 байт - это 8 секторов. Для FAT на них нужно разместить BPB, одну или две копии FAT и основную директорию - это минимум 3-4 сектора.
Не уверен, что винда может работать со столь маленьким диском.
Go to the top of the page
 
+Quote Post
SolarA
сообщение Sep 10 2008, 11:38
Сообщение #14


Участник
*

Группа: Новичок
Сообщений: 17
Регистрация: 28-08-08
Пользователь №: 39 873



МДА... я уже сам прогуглил. Получается что действительно может не хватать. Ща под линуксовые ФС попробую найти минимальный размер. Такого я честно говоря не ожидал.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Sep 10 2008, 11:44
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



По-хорошему Вам нужно сделать программный эмулятор диска, а реальную память отдавать только под область данных.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 23:52
Рейтинг@Mail.ru


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