Миландр

Ключевым подразделением нашей компании
является Центр Проектирования интегральных микросхем
Текущее время: 2019-май-20 17:23

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: USB Mass Storage Device
СообщениеДобавлено: 2018-фев-07 14:37 
Не в сети

Зарегистрирован: 2017-авг-24 12:05
Сообщения: 1
Здравствуйте! Скажите, пожалуйста, кому-нибудь удалось сделать законченный USB Mass Storage Device с SD или встроенной EEPROM?

Поделитесь, пожалуйста, плиз... :roll:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB Mass Storage Device
СообщениеДобавлено: 2019-мар-21 15:18 
Не в сети

Зарегистрирован: 2018-дек-17 15:20
Сообщения: 39
Мне удалось


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB Mass Storage Device
СообщениеДобавлено: 2019-мар-21 17:14 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1270
Откуда: Тула
С SD или встроенной EEPROM?

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB Mass Storage Device
СообщениеДобавлено: 2019-мар-22 21:27 
Не в сети

Зарегистрирован: 2018-дек-17 15:20
Сообщения: 39
C EEPROM (контроллеры 1986ВЕ91Т, 1986ВЕ1Т). Получилась флешка на ~100KB. Успешная работа с: Alt Linux KDesktop, Astra Linux, Windows 7/10/XP.
Отдельно с micro SD картами я работал тоже - для этих контроллеров SD карты должны инициализироваться в режиме SPI (данные и команды по одной линии), но не все карты инициализируются в этом режиме - удалось работать только с картами объемом 2GB. Помимо SPI есть еще так называемый параллельный режим (4 линии данных), периферийное устройство (SDIO) для этого режима есть в контроллере 1901ВЦ1Т, но с SDIO я еще не работал.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB Mass Storage Device
СообщениеДобавлено: 2019-мар-24 22:26 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1270
Откуда: Тула
Sergey3141592 писал(а):
C EEPROM (контроллеры 1986ВЕ91Т, 1986ВЕ1Т). Получилась флешка на ~100KB. Успешная работа с: Alt Linux KDesktop, Astra Linux, Windows 7/10/XP.

Это круто! Кажется, остался последний шаг до модной фишки - обновления прошивки путём закидывания файла на "флешку"!
Если не жалко и если код не сильно привязан к проекту - можете выложить или выслать в ЛС?
Sergey3141592 писал(а):
... в режиме SPI (данные и команды по одной линии), но не все карты инициализируются в этом режиме - удалось работать только с картами объемом 2GB. ...

Вроде бы так и должно быть...

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB Mass Storage Device
СообщениеДобавлено: 2019-мар-25 16:28 
Не в сети

Зарегистрирован: 2018-дек-17 15:20
Сообщения: 39
prostoRoman писал(а):
Это круто! Кажется, остался последний шаг до модной фишки - обновления прошивки путём закидывания файла на "флешку"!


В таком случае код для флешки должен грузиться из eeprom в ram и исполняться в ram контроллера при подключении по usb.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB Mass Storage Device
СообщениеДобавлено: 2019-мар-26 10:53 
Не в сети

Зарегистрирован: 2010-авг-30 19:12
Сообщения: 431
Цитата:
prostoRoman писал(а):
Это круто! Кажется, остался последний шаг до модной фишки - обновления прошивки путём закидывания файла на "флешку"!
В таком случае код для флешки должен грузиться из eeprom в ram и исполняться в ram контроллера при подключении по usb.

Не обязательно.Можно работать как с обычным загрузчиком.
Область кода делится на две части - нижняя загрузчик, верхняя Основное ПО.
При подаче питания Сперва стартует загрузчик, проверяет условия для загрузки (пин, подключение устройства , таймаут - что угодно) и либо продолжает работать для обновления ПО, либо отдает управление основному ПО (переход на верхние адреса).
При обновлении ПО принимаются блоки данных и записываются в верхнюю область кода.Только функции записи в EEPROM должны будут располагаться в ОЗУ. Остальной код работает из ПЗУ. Если загрузчик изображает из себя MSD размером ~100 кБ, то будет вопрос формирования FAT таблицы (имитировать ее в ОЗУ или фиксировать в ПЗУ) + отображение текущего файла, + прием нового файла (если юсер захочет на "флешку" записать файл - то по каким адресам его располагать - по фиксированным или нет. Или анализировать файл на лету вычленяя адреса записи).
Идея реализуема - но надо очень тщательно ее продумать.
Второй вариант обновления через USB - поднять хост, который подхватит внешнюю флешку, найдет файл с фиксированным именем и перепишет его по известному адресу.
Ну и третий - банальное CDC устройство с произвольным протоколом обмена между девайсом и ПК.

_________________
О сколько нам открытий чудных
Готовит просвященья дух,
И опыт - сын ошибок трудных ... (Пушкин)

Пергаменты не утоляют жажду ("Фауст",Гете)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB Mass Storage Device
СообщениеДобавлено: 2019-мар-26 19:59 
Не в сети

Зарегистрирован: 2018-дек-17 15:20
Сообщения: 39
Каким образом, в таком случае должна быть собрана прошивка, которая в виде файла будет передаваться по USB?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB Mass Storage Device
СообщениеДобавлено: 2019-мар-27 09:31 
Не в сети

Зарегистрирован: 2010-авг-30 19:12
Сообщения: 431
Цитата:
Каким образом, в таком случае должна быть собрана прошивка, которая в виде файла будет передаваться по USB?

Прошивка для приложения должна быть собрана со смещенным адресом для вектора сброса.
Если под загрузчик выделяется 16 кБ (0x0800_0000-0x0800_3FFF), то основное приложение должно располагаться по адресам 0х0800_4000-0х0801_FFFF (112 кБ). В настройках проекта правиться только базовый адрес.
А в каком виде этот файл передавать - решать автору загрузчика. Для USB в формате MSD удобнее наверное bin, а для CDC режима можно использовать HEX, поскольку преобразовать данные может приложение на ПК.
PS:Вариант собственного загрузчика относительно легко реализуем на семействе 1986ВЕ91Т (CM3), для МК 1986ВЕ1Т есть "засада" - нельзя перенести таблицу векторов.

_________________
О сколько нам открытий чудных
Готовит просвященья дух,
И опыт - сын ошибок трудных ... (Пушкин)

Пергаменты не утоляют жажду ("Фауст",Гете)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB Mass Storage Device
СообщениеДобавлено: 2019-мар-28 23:11 
Не в сети
Аватара пользователя

Зарегистрирован: 2011-авг-21 18:55
Сообщения: 260
редактор писал(а):
Цитата:
prostoRoman писал(а):
Это круто! Кажется, остался последний шаг до модной фишки - обновления прошивки путём закидывания файла на "флешку"!
В таком случае код для флешки должен грузиться из eeprom в ram и исполняться в ram контроллера при подключении по usb.

Не обязательно.Можно работать как с обычным загрузчиком.
Область кода делится на две части - нижняя загрузчик, верхняя Основное ПО.
При подаче питания Сперва стартует загрузчик, проверяет условия для загрузки (пин, подключение устройства , таймаут - что угодно) и либо продолжает работать для обновления ПО, либо отдает управление основному ПО (переход на верхние адреса).
При обновлении ПО принимаются блоки данных и записываются в верхнюю область кода.Только функции записи в EEPROM должны будут располагаться в ОЗУ. Остальной код работает из ПЗУ. Если загрузчик изображает из себя MSD размером ~100 кБ, то будет вопрос формирования FAT таблицы (имитировать ее в ОЗУ или фиксировать в ПЗУ) + отображение текущего файла, + прием нового файла (если юсер захочет на "флешку" записать файл - то по каким адресам его располагать - по фиксированным или нет. Или анализировать файл на лету вычленяя адреса записи).
Идея реализуема - но надо очень тщательно ее продумать.
Второй вариант обновления через USB - поднять хост, который подхватит внешнюю флешку, найдет файл с фиксированным именем и перепишет его по известному адресу.
Ну и третий - банальное CDC устройство с произвольным протоколом обмена между девайсом и ПК.


Четвёртый вариант viewtopic.php?f=33&t=3813&hilit=usb+dfu =) - всё удовольствие 8 КБайт для загрузчика + в основной прошивке немного кода с дескрипторами на переход в режим DFU-устройства...

Насчёт FAT не понятно, зачем полная файловая система?... У STM32 вроде SCSI-диск и для SD-Card, и для NAND ... https://www.st.com/content/ccc/resource ... 158241.pdf

Я думаю, вместо CDC можно пойти по-другому пути - поднять FTP через UART (viewtopic.php?f=22&t=2685) и кидать прошивку прям по FTP-адресу...

_________________
Hack the Planet!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB Mass Storage Device
СообщениеДобавлено: 2019-мар-29 08:26 
Не в сети

Зарегистрирован: 2010-авг-30 19:12
Сообщения: 431
Цитата:
Насчёт FAT не понятно, зачем полная файловая система?

Я лично с MSD не работал - ограничился HID (клавиатура свой код до появления библиотек) и CDC (на базе библиотеки MDR). Судя по многочисленным обсуждениям MSD чаще всего делают под FAT32 (FAT16), поэтому в каком то виде она должна присутствовать - а то вдруг винда обидется и не станет с устройством работать :-)

_________________
О сколько нам открытий чудных
Готовит просвященья дух,
И опыт - сын ошибок трудных ... (Пушкин)

Пергаменты не утоляют жажду ("Фауст",Гете)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USB Mass Storage Device
СообщениеДобавлено: 2019-мар-29 09:16 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1270
Откуда: Тула
R Max писал(а):
Четвёртый вариант viewtopic.php?f=33&t=3813&hilit=usb+dfu =) - всё удовольствие 8 КБайт для загрузчика + в основной прошивке немного кода с дескрипторами на переход в режим DFU-устройства...
За это ещё раз спасибо!

R Max писал(а):
Насчёт FAT не понятно, зачем полная файловая система?... У STM32 вроде SCSI-диск и для SD-Card, и для NAND ... https://www.st.com/content/ccc/resource ... 158241.pdf
Система может быть любая, но обычная FAT16 поддерживается вообще везде. Что может помочь перешить хоть со смартфона (в OTG будет же работать, да?). Ну и MSD на EEPROM может быть полезна как часть проекта. Это всё не для войны конечно, а для баловства))

R Max писал(а):
Я думаю, вместо CDC можно пойти по-другому пути - поднять FTP через UART (viewtopic.php?f=22&t=2685) и кидать прошивку прям по FTP-адресу...

Ещё раз спасибо, но для меня пока это видимо слишком сложно %)

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB