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

 
 
 
Reply to this topicStart new topic
> LPC2478 mass storage
Chameleon
сообщение Oct 23 2012, 15:53
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 5-07-08
Пользователь №: 38 757



Пытаюсь запустить mass storage на отладочной плате StarterKit c LPC2478

Начальная стандартная инициализация проходит успешно.

При получении запроса Get max LUN отвечаю 1 (устройство с двумя дисками), но после этого происходит сброс USB, хотя вроде должен быть первый SCSI запрос (так происходит в рабочем кардридере).

До запроса Get max LUN в регистре REALIZED_EP биты для Endpoint 2 установлены, сразу после него - сброшены.

Для передачи данных используется Endpoint 2, на прием и на передачу.

Используется второй USB порт.

Вот дескрипторы:


CODE
/* USB Standard Device Descriptor */
const unsigned char DevDescriptor[] = {
18, /* bLength */
0x01, /* bDescriptorType */
0x10,0x01, /* bcdUSB */
0x00, /* bDeviceClass */
0x00, /* bDeviceSubClass */
0x00, /* bDeviceProtocol */
64, /* bMaxPacketSize0 */
0x51,0xC2, // VID
0x03,0x17, // PID
0x00,0x01, // Version
0x01, /* iManufacturer */
0x02, /* iProduct */
0x03, /* iSerialNumber */
0x01 /* bNumConfigurations */
};

/* USB Configuration Descriptor */
/* All Descriptors (Configuration, Interface, Endpoint, Class, Vendor */
const unsigned char ConfigDescriptor[] = {
/* Configuration 1 */
0x09, /* bLength */
0x02, /* bDescriptorType */
32,0, // wTotalLength = Configuration + Interface + 2 endpoint
0x01, /* bNumInterfaces */
0x01, /* bConfigurationValue */
0x00, /* iConfiguration */
0xC0, // Self powered
0x01, // bMaxPower
/* Interface 0, Alternate Setting 0, MSC Class */
0x09, /* bLength */
0x04, /* bDescriptorType */
0x00, /* bInterfaceNumber */
0x00, /* bAlternateSetting */
0x02, /* bNumEndpoints */
0x08, /* bInterfaceClass - Storage*/
0x06, /* bInterfaceSubClass - SCSI*/
0x50, /* bInterfaceProtocol */
0x00, /* iInterface */
/* Bulk In Endpoint */
0x07, /* bLength */
0x05, /* bDescriptorType */
0x02, /* bEndpointAddress */
0x02, /* bmAttributes */
0x40,0x00, /* wMaxPacketSize */
0, /* bInterval */
/* Bulk Out Endpoint */
0x07, /* bLength */
0x05, /* bDescriptorType */
0x82, /* bEndpointAddress */
0x02, /* bmAttributes */
0x40,0x00, /* wMaxPacketSize */
0, /* bInterval */
};


Сообщение отредактировал Chameleon - Oct 23 2012, 15:54
Go to the top of the page
 
+Quote Post
SyncLair
сообщение Oct 23 2012, 19:57
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 209
Регистрация: 6-01-12
Пользователь №: 69 197



Цитата(Chameleon @ Oct 23 2012, 19:53) *
Пытаюсь запустить mass storage на отладочной плате StarterKit c LPC2478

Простите вы используете Device a не хост?



--------------------
Go to the top of the page
 
+Quote Post
Chameleon
сообщение Oct 23 2012, 20:04
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 5-07-08
Пользователь №: 38 757



Да, Device
Go to the top of the page
 
+Quote Post
Chameleon
сообщение Oct 28 2012, 16:50
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 5-07-08
Пользователь №: 38 757



Нашел пример от кейла, не работает точно также. Инициализация проходит, а после запроса Get Max LUN происходит сброс.
По снифферу USB вижу, что компьютер пытается отправить превый SCSI запрос, но мое устройство его не получает.

Кто-нибудь запускал пример Usb memory от Кейла?

Сообщение отредактировал Chameleon - Oct 28 2012, 16:52
Go to the top of the page
 
+Quote Post
kovigor
сообщение Oct 29 2012, 10:25
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Chameleon @ Oct 28 2012, 20:50) *
Кто-нибудь запускал пример Usb memory от Кейла?

Я запускал, но на LPC214x, и затем строил на основе этого примера свой проект. Пример вполне рабочий ...
Go to the top of the page
 
+Quote Post
SyncLair
сообщение Oct 29 2012, 16:25
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 209
Регистрация: 6-01-12
Пользователь №: 69 197



Цитата(Chameleon @ Oct 28 2012, 20:50) *
Кто-нибудь запускал пример Usb memory от Кейла?

Пробывал запускать пока только на LPC1768 -> работает если питание платы не от USB. Даже пока не знаю с чем это связано!


--------------------
Go to the top of the page
 
+Quote Post
Chameleon
сообщение Oct 30 2012, 22:32
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 5-07-08
Пользователь №: 38 757



Вроде заработало, сделал два диска - один остался образ в ОЗУ, второй - DataFlash AT45BD32.
Теперь Виндовс не хочет форматировать диск, пишет "Не удается завершить форматирование." Датафлеш чистая, все FF. В отладчике смотрю, что пытается писать в нулевой сектор - совсем не образ нулевого сектора. Причем данные меняются от попытки к попытке.
Может влиять, что объем датафлеши 4Мб?

Запись в датафлеш вручную проверял, все правильно.

Кто-нибудь с таким сталкивался?
Go to the top of the page
 
+Quote Post
Chameleon
сообщение Nov 1 2012, 09:19
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 5-07-08
Пользователь №: 38 757



В общем победил.
Скорость чтения ~350Кб/сек.
Скорость записи ~40Кб/сек. Для DATAFLASH и должно так мало быть?
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Nov 1 2012, 11:55
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Chameleon @ Nov 1 2012, 11:19) *
Скорость чтения ~350Кб/сек.

Как-то медленно, такую скорость и АВР выдаст.


Цитата(Chameleon @ Nov 1 2012, 11:19) *
Скорость записи ~40Кб/сек. Для DATAFLASH и должно так мало быть?

Да, где-то так и получается: запись страницы - 20-50 миллисекунд, размер страницы 0,5 кБ. Так и выходит.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 1 2012, 12:28
Сообщение #10


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (_Артём_ @ Nov 1 2012, 14:55) *
запись страницы - 20-50 миллисекунд, размер страницы 0,5 кБ.
А у нее же два входных буфера. Если использовать их по очереди и заполнять следующий пока пишется предыдущий, нельзя ли удвоить скорость записи?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Nov 1 2012, 12:47
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Сергей Борщ @ Nov 1 2012, 14:28) *
А у нее же два входных буфера. Если использовать их по очереди и заполнять следующий пока пишется предыдущий, нельзя ли удвоить скорость записи?

Удвоить за счёт буфера - вряд ли.
Допустим скорость записи в буфер по spi - 500 кБ/сек.
Тогда запись в буфер - 1 мс. Всё равно ждать придётся...

Может скорость можно повысить за счёт предварительного стирания блоков-секторов и записывать без стирания. Но стирает она тоже не быстро.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 1 2012, 13:35
Сообщение #12


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (_Артём_ @ Nov 1 2012, 15:47) *
Тогда запись в буфер - 1 мс. Всё равно ждать придётся...
Ну да, ну да. Остается предварительное стирание, но как его реализовать? Это ведь только файловая система знает, какой сектор сейчас пустой. Разве что иметь некоторое количество резервных секторов и делать подмену. Но это еще один уровень иерархии. Делал так при организации MSD во внутренней флешке LPC1769. Работало, но не понравилось.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Chameleon
сообщение Nov 1 2012, 13:38
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 5-07-08
Пользователь №: 38 757



QUOTE (_Артём_ @ Nov 1 2012, 14:55) *
Как-то медленно, такую скорость и АВР выдаст.


Это наверно потому что без DMA и двойного буферирования по USB. Посмотрел по интернету, на Full speed вроде 600-700Кб максимально достижимая скорость чтения.
У меня это все равно будет вроде как хранилище настроек, Mass storage только для удобства доступа.
Go to the top of the page
 
+Quote Post

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

 


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


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