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

 
 
> LPC1820, проблема с USB Mass Storage, Часть плат не работает при размере EP = 512 байт
Harvester
сообщение Aug 24 2016, 16:15
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 338
Регистрация: 1-02-06
Из: Королев, М.О.
Пользователь №: 13 846



Добрый день.
Имеется устройство на LPC1820 + eMMC.
Устройство представляет собой USB Mass Storage Device ("флешка"), реализованное с использованием фирменной библиотеки LPCUSBlib (чисто программный вариант, без использования функций USB ROM).
Проблема в следующем: часть плат некорректно работают при размере конечных точек больше 128 байт. Некорректность заключается в том, что устройства, судя по снифферу, в какой-то момент перестают отвечать на USB-запросы чтения/записи. Причем этот момент может отличаться для разных устройств, но для каждого конкретного устройства он фиксирован (т.е. одни устройства "виснут" на первой же команде чтения, другие обрабатывают команду чтения нормально, но "виснут" при записи).

Программист, написавший программу, утверждал, что это недокументированный баг в контроллере, который компания NXP не хочет признавать. И указывал на строки, имеющиеся в исходниках использованной им версии библиотеки LPCUSBLib:
Код
/* Max In/Out Packet Size */
#define MSC_FS_MAX_PACKET  128
#define MSC_HS_MAX_PACKET  128 /* < 256 work */

У меня стоит задача реализовать работу со штатным размером EP (512 байт). Я взял последнюю версию библиотеки - проблема не ушла.
Понятно, что теперь мне только остается детально исследовать работу библиотеки и модуля USB - может это все-таки программная бяка?
Но вдруг кто-нибудь сталкивался с подобной ситуацией и решил ее? laughing.gif
Спасибо.


--------------------
-Да как так-то?/-Да как-то так/-Ну так-то да
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jcxz
сообщение Aug 24 2016, 17:23
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Harvester @ Aug 24 2016, 22:15) *
Программист, написавший программу, утверждал, что это недокументированный баг в контроллере, который компания NXP не хочет признавать. И указывал на строки, имеющиеся в исходниках использованной им версии библиотеки LPCUSBLib:
Код
/* Max In/Out Packet Size */
#define MSC_FS_MAX_PACKET  128
#define MSC_HS_MAX_PACKET  128 /* < 256 work */

Интересно каким образом эти строки говорят о баге в контроллере??? wacko.gif
Баг определённо в вашем программисте. Так как другие программисты работают с этими контроллерами и не жужжат. wink.gif
На LPC17xx и LPC43xx делал много проектов с USB. Нигде с багами контроллера не сталкивался. Сомневаюсь, что в LPC18xx USB-периферия хуже чем в других семействах LPC.
Я всегда использовал для них USB-стеки из примеров IAR. Использовал bulk- и изохронные передачи - никаких проблем.
Да и определитесь вначале хотя-бы где точно у Вас проблема - с обменом по USB (контроллер там явно не при чём) или с чтением/записью eMMC.
Можно например сделать буфер в ОЗУ вместо eMMC и поработать с ним как с USB-диском.
Либо поработать напрямую с эндпоинтами - погонять данные в них / из них. Без MassStorage. Убедиться в корректности передач с разными размерами.
Go to the top of the page
 
+Quote Post
Harvester
сообщение Aug 24 2016, 17:54
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 338
Регистрация: 1-02-06
Из: Королев, М.О.
Пользователь №: 13 846



Цитата(jcxz @ Aug 24 2016, 20:23) *
Баг определённо в вашем программисте. Так как другие программисты работают с этими контроллерами и не жужжат. wink.gif

Ну, я как бы тоже больше доверяю NXP, поэтому и решил попробовать исправить ситуацию. sm.gif
Цитата(jcxz @ Aug 24 2016, 20:23) *
Да и определитесь вначале хотя-бы где точно у Вас проблема - с обменом по USB (контроллер там явно не при чём) или с чтением/записью eMMC.

Проблема где-то в обработчике USB - при появлении проблемного запроса callback-функция обработки SCSI-команд не вызывается.
Цитата(jcxz @ Aug 24 2016, 20:23) *
Я всегда использовал для них USB-стеки из примеров IAR. Использовал bulk- и изохронные передачи - никаких проблем.

Спасибо за подсказку, попробую.
Цитата(jcxz @ Aug 24 2016, 20:23) *
Либо поработать напрямую с эндпоинтами - погонять данные в них / из них. Без MassStorage. Убедиться в корректности передач с разными размерами.

А как это сделать? Особенно со стороны ПК.

P.S. Посмотрел примеры IAR - именно этот стек и использовался предыдущим программистом. Файл mscuser.h:
Код
/* Max In/Out Packet Size */
#define MSC_FS_MAX_PACKET  64
#define MSC_HS_MAX_PACKET  224 /* < 256 work */

А Вы точно использовали bulk-передачи с размером конечной точки 512 байт? laughing.gif

Сообщение отредактировал Harvester - Aug 24 2016, 19:01


--------------------
-Да как так-то?/-Да как-то так/-Ну так-то да
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Harvester   LPC1820, проблема с USB Mass Storage   Aug 24 2016, 16:15
- - GetSmart   Можно сделать хост на другом микроконтроллере (для...   Aug 25 2016, 06:49
- - Kabdim   Скорее косяки в библиотеках NXP - они ужасно кривы...   Aug 25 2016, 07:09
|- - Harvester   Цитата(Kabdim @ Aug 25 2016, 10:09) Скоре...   Aug 25 2016, 07:39
|- - Kabdim   Цитата(Harvester @ Aug 25 2016, 10:39) Мн...   Aug 25 2016, 08:12
||- - Harvester   Цитата(Kabdim @ Aug 25 2016, 11:12) Не ук...   Aug 25 2016, 09:17
||- - jcxz   Цитата(Harvester @ Aug 25 2016, 15:17) 2....   Aug 25 2016, 09:30
||- - Kabdim   Цитата(Harvester @ Aug 25 2016, 12:17) Фа...   Aug 25 2016, 09:54
||- - Harvester   Цитата(Kabdim @ Aug 25 2016, 12:54) Вы пр...   Aug 25 2016, 10:01
||- - Kabdim   Цитата(Harvester @ Aug 25 2016, 13:01) Ну...   Aug 25 2016, 10:19
||- - Harvester   Цитата(Kabdim @ Aug 25 2016, 13:19) Следу...   Aug 25 2016, 10:28
|- - jcxz   Цитата(Harvester @ Aug 25 2016, 13:39) Ну...   Aug 25 2016, 09:09
|- - Harvester   Цитата(jcxz @ Aug 25 2016, 12:09) Есть др...   Aug 25 2016, 09:33
- - GetSmart   Заодо сравните версию ботлоадера у рабочих и глючн...   Aug 25 2016, 14:40
|- - jcxz   Цитата(GetSmart @ Aug 25 2016, 20:40) Я в...   Aug 26 2016, 06:19
|- - Harvester   Цитата(GetSmart @ Aug 25 2016, 17:40) Воо...   Aug 26 2016, 09:46
- - Alechek   Видимо, все-таки дело в частоте USB.. Точнее, в ее...   Aug 26 2016, 10:37
- - jcxz   Цитата(Alechek @ Aug 26 2016, 16:37) Види...   Aug 26 2016, 11:31
- - Harvester   Цитата(jcxz @ Aug 26 2016, 14:31) Тогда п...   Aug 26 2016, 12:07


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

 


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


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