Перейти к содержанию
    

SRM32F4 USB MSD LUN

Help.

F407, Keil 5, USB MSD

 

В usbd_storage_if.c есть #define STORAGE_LUN_NBR , т.е. число дисков.

Если ставлю его 1 или 2 - все ОК.

Одинили два диска видятся, читаются и пишутся. Даже если в STORAGE_Read_FS/STORAGE_Write_FS ничего не прописываю, то диски конечно не работают, но в Device Manager  все ОК.

Как только ставлю 3 -  в Device Manager  USB Mass Storage Device становится желтеньким.

Дескриптор не трогал, только "размножил":

	/** USB Mass storage Standard Inquiry Data. */
const int8_t STORAGE_Inquirydata_FS[] = {/* 36 */
	  /* LUN 0 */
  0x00,
  0x80,
  0x02,
  0x02,
  (STANDARD_INQUIRY_DATA_LEN - 5),
  0x00,
  0x00,
  0x00,
  'S', 'T', 'M', ' ', ' ', ' ', ' ', ' ', /* Manufacturer : 8 bytes */
  'P', 'r', 'o', 'd', 'u', 'c', 't', ' ', /* Product      : 16 Bytes */
  ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
  '0', '.', '0' ,'1'                      /* Version      : 4 Bytes */
    
    #if (STORAGE_LUN_NBR>1)
  /* LUN 1 */
    ,
  0x00,
  0x80,
  0x02,
  0x02,
  (STANDARD_INQUIRY_DATA_LEN - 5),
  0x00,
  0x00,
  0x00,
  'S', 'T', 'M', ' ', ' ', ' ', ' ', ' ', /* Manufacturer : 8 bytes */
  'P', 'r', 'o', 'd', 'u', 'c', 't', ' ', /* Product      : 16 Bytes */
  ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
  '0', '.', '0' ,'1'                      /* Version      : 4 Bytes */
	
   #endif
	
    #if (STORAGE_LUN_NBR>2)
  /* LUN 2 */
    ,
  0x00,
  0x80,
  0x02,
  0x02,
  (STANDARD_INQUIRY_DATA_LEN - 5),
  0x00,
  0x00,
  0x00,
  'S', 'T', 'M', ' ', ' ', ' ', ' ', ' ', /* Manufacturer : 8 bytes */
  'P', 'r', 'o', 'd', 'u', 'c', 't', ' ', /* Product      : 16 Bytes */
  ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
  '0', '.', '0' ,'1'                      /* Version      : 4 Bytes */
    
   #endif
    
};
	

 

Стек и Хип уже по 0х2000 поставил, что овердифига, но не помогает.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Wireshark, например. Не сказать, что удобно, но шляпу в конфигурации можно найти.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Wireshark скачал, но еще не пробовал, т.к. нашел решение тут:

https://habr.com/ru/articles/571704/

Не все совпало, и не все оттуда использовал, но заработало!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

C Wireshark  пока не разобрался,   USBPcap поставил, перегрузился, но Wireshark  все равно USB не видит.

Вин11 😞

Могу попробовать в виртуалке, там у меня 10-ка LTSC стоит.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрите в Configuration Descriptor третий параметр wTotalLen - его нужно увеличить, если добавляете дополнительные дескрипторы дальше.

Для анализа USB есть еще удобная программа USBliser, она, вроде, есть в здешних закромах вместе с таблеткой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 minutes ago, Alex11 said:

Посмотрите в Configuration Descriptor третий параметр wTotalLen - его нужно увеличить, если добавляете дополнительные дескрипторы дальше.

Должен покаяться, ввел всех в заблуждение: информация по LUN'ам возвращаятся уже по SCSI запросу INQUIRY, т.е. к дескрипторам отношения не имеет.

Что не отменяет полезности сниффера и возможных ошибок в вычислении длины ответа.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...