Allregia 9 26 декабря, 2023 Опубликовано 26 декабря, 2023 · Жалоба 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 поставил, что овердифига, но не помогает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 26 декабря, 2023 Опубликовано 26 декабря, 2023 · Жалоба Скорее всего, длина дескриптора/конфигурации неправильно считается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Allregia 9 26 декабря, 2023 Опубликовано 26 декабря, 2023 · Жалоба И где это можно исправить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 26 декабря, 2023 Опубликовано 26 декабря, 2023 · Жалоба Я бы поискал по STORAGE_LUN_NBR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Allregia 9 26 декабря, 2023 Опубликовано 26 декабря, 2023 · Жалоба Не, это я уже искал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 26 декабря, 2023 Опубликовано 26 декабря, 2023 · Жалоба Тогда сначала проверить предположение сниффером. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Allregia 9 26 декабря, 2023 Опубликовано 26 декабря, 2023 · Жалоба Каким? Я USB раньше так глубоко не копал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 140 26 декабря, 2023 Опубликовано 26 декабря, 2023 · Жалоба Wireshark. Бесплатно само по себе, без кряков. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 26 декабря, 2023 Опубликовано 26 декабря, 2023 · Жалоба Wireshark, например. Не сказать, что удобно, но шляпу в конфигурации можно найти. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Allregia 9 26 декабря, 2023 Опубликовано 26 декабря, 2023 · Жалоба Wireshark скачал, но еще не пробовал, т.к. нашел решение тут: https://habr.com/ru/articles/571704/ Не все совпало, и не все оттуда использовал, но заработало! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Allregia 9 26 декабря, 2023 Опубликовано 26 декабря, 2023 · Жалоба C Wireshark пока не разобрался, USBPcap поставил, перегрузился, но Wireshark все равно USB не видит. Вин11 😞 Могу попробовать в виртуалке, там у меня 10-ка LTSC стоит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex11 5 27 декабря, 2023 Опубликовано 27 декабря, 2023 · Жалоба Посмотрите в Configuration Descriptor третий параметр wTotalLen - его нужно увеличить, если добавляете дополнительные дескрипторы дальше. Для анализа USB есть еще удобная программа USBliser, она, вроде, есть в здешних закромах вместе с таблеткой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 27 декабря, 2023 Опубликовано 27 декабря, 2023 · Жалоба 14 minutes ago, Alex11 said: Посмотрите в Configuration Descriptor третий параметр wTotalLen - его нужно увеличить, если добавляете дополнительные дескрипторы дальше. Должен покаяться, ввел всех в заблуждение: информация по LUN'ам возвращаятся уже по SCSI запросу INQUIRY, т.е. к дескрипторам отношения не имеет. Что не отменяет полезности сниффера и возможных ошибок в вычислении длины ответа. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться