Миландр

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

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




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Рабочий USB Masstorage host
СообщениеДобавлено: 2016-окт-12 12:46 
Не в сети
Аватара пользователя

Зарегистрирован: 2016-май-25 16:21
Сообщения: 11
Откуда: Рязань
Мне удалось настроить чтение и запись по секторам и связать мои bulk функции с функциями чтения/записи файловой системы. Сейчас работаю над драйвером, который автоматически считывая дескрипторы устройства формировал setup пакет конфигурации и использовал адреса оконечных точек из их дескрипторов, а так же мог определять скоростной режим устройства и выставлять его в нужный по необходимости. Проект прикладываю, в тестовой функции модуль файловой системы считывает 0 сектор, монтирует файловую систему, создает/открывает файл, записывает строку и закрывает файл.
P.S.
Если отредактируете код, буду премного благодарен. Так же можете задавать вопросы по коду.


Вложения:
USB_host(создание файла,запись в файл).rar [1.24 МБ]
Скачиваний: 99

_________________
Во славу империи БАНЗАЙ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рабочий USB Masstorage host
СообщениеДобавлено: 2016-окт-28 11:06 
Не в сети
Аватара пользователя

Зарегистрирован: 2016-май-25 16:21
Сообщения: 11
Откуда: Рязань
Перебрал код предыдущего проекта, протестировал с различными флешками. Все работающие в full speed работают идеально, большинство, работающих в high speed, работают в данном проекте, по крайней мере все нумеруются, я столкнулся только с проблемой, что несколько флешек при работе с bulk интерфейсом, при запросе request sense возвращают failure command в CSW. Проект прикладываю. Если переберете код и решите проблему с high speed флешками, буду премного благодарен.


Вложения:
USB_MassStorage_host(работает с большинством флешек).rar [1.23 МБ]
Скачиваний: 93

_________________
Во славу империи БАНЗАЙ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рабочий USB Masstorage host
СообщениеДобавлено: 2016-ноя-09 10:59 
Не в сети
Аватара пользователя

Зарегистрирован: 2016-май-25 16:21
Сообщения: 11
Откуда: Рязань
Наверное больше ничего менять не буду, работает с большинством флешек, разных вендоров, повысил надежность работы, если вдруг оконечные точки не готовы или выдают ошибку.


Вложения:
USB_host(повышена надежность работы).rar [1.26 МБ]
Скачиваний: 128

_________________
Во славу империи БАНЗАЙ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рабочий USB Masstorage host
СообщениеДобавлено: 2017-апр-05 12:57 
Не в сети

Зарегистрирован: 2017-мар-02 08:48
Сообщения: 15
Переделал проект на прерывания.

Почему-то если после успешной bulk-передачи не сделать reset_recovery, то в следующей bulk-передаче флешка постоянно шлет NAK.
И при bulk-передачах не разу не получал состояния STALL.

Проверял на 5-ти флешках :
- на двух работает только чтение. Скорость чтения примерно 2.5 Мбит/с;
- на третьей в bulk-передачах на стадии запроса CSW все время отвечает NAK;
- ещё на двух других первая bulk-передача проходит успешно, потом делается reset_recovery, и уже в reset_recovery в передачах control флешка отвечает stall на этапе подтверждения STATUS_STAGE, и ни в какую дальше.

Эннумерацию проходят все.

Эксперементировал с задержками, но точно не знаю, где и сколько должно быть. Сейчас все убрал...

Посмотрите. Может, укажите на путь истинный. :?


Вложения:
usb_host.zip [1.71 МБ]
Скачиваний: 43


Последний раз редактировалось Lin 2017-май-04 10:49, всего редактировалось 1 раз.
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рабочий USB Masstorage host
СообщениеДобавлено: 2017-апр-05 13:02 
Не в сети

Зарегистрирован: 2017-мар-02 08:48
Сообщения: 15
Кто-нибудь может объяснить:
- в регистре MDR_USB->HIS бит RESUME устанавливается, когда возникает состояние повтора. Что это за состояние? Когда возникает? И как можно использовать?
- и бит SOFS устанавливается, когда SOF был отправлен. Это как и когда нужно использовать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рабочий USB Masstorage host
СообщениеДобавлено: 2017-апр-06 09:29 
Не в сети

Зарегистрирован: 2017-мар-02 08:48
Сообщения: 15
Ещё правильно я понимаю в bulk-передачах, что CBW передаем в DATA0, потом в стадии данных DATA1 / DATA0 / DATA1 и т.д.
А CSW должны принять в зависимости от типа последнего пакета стадии данных, т.е. если закончили на DATA0, то CSW должен прийти с DATA1, а если закончили на DATA1, то CSW с DATA0 ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рабочий USB Masstorage host
СообщениеДобавлено: 2017-апр-25 14:00 
Не в сети
Аватара пользователя

Зарегистрирован: 2016-май-25 16:21
Сообщения: 11
Откуда: Рязань
Lin писал(а):
Ещё правильно я понимаю в bulk-передачах, что CBW передаем в DATA0, потом в стадии данных DATA1 / DATA0 / DATA1 и т.д.
А CSW должны принять в зависимости от типа последнего пакета стадии данных, т.е. если закончили на DATA0, то CSW должен прийти с DATA1, а если закончили на DATA1, то CSW с DATA0 ?

Да, все верно, вот только CSW так же чередуются data0/data1 токены вне зависимости от токена CBW. Если data стадия setup транзакций закончилась на data1, то первый CSW придет data0

_________________
Во славу империи БАНЗАЙ


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рабочий USB Masstorage host
СообщениеДобавлено: 2017-апр-25 14:02 
Не в сети
Аватара пользователя

Зарегистрирован: 2016-май-25 16:21
Сообщения: 11
Откуда: Рязань
Lin писал(а):
Кто-нибудь может объяснить:
- в регистре MDR_USB->HIS бит RESUME устанавливается, когда возникает состояние повтора. Что это за состояние? Когда возникает? И как можно использовать?
- и бит SOFS устанавливается, когда SOF был отправлен. Это как и когда нужно использовать?

C состоянием повтора я и сам не разобрался, а по отправке SOF можно считать номера и время фрейма, это можно реализовать для передачи по прерываниям в HID и CDC классах

_________________
Во славу империи БАНЗАЙ


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рабочий USB Masstorage host
СообщениеДобавлено: 2017-май-04 10:53 
Не в сети

Зарегистрирован: 2017-мар-02 08:48
Сообщения: 15
Тьфу, когда выкладывал архив выше, запихнул в него два проекта (один старый, лишний). Сейчас поправил.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рабочий USB Masstorage host
СообщениеДобавлено: 2017-май-18 10:33 
Не в сети
Аватара пользователя

Зарегистрирован: 2016-май-25 16:21
Сообщения: 11
Откуда: Рязань
Подправил немного твой проект, вроде все работает


Вложения:
usb_host(pa6o4uu').rar [1.44 МБ]
Скачиваний: 73

_________________
Во славу империи БАНЗАЙ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рабочий USB Masstorage host
СообщениеДобавлено: 2017-май-19 10:18 
Не в сети

Зарегистрирован: 2017-мар-02 08:48
Сообщения: 15
kamikazzze писал(а):
Да, все верно, вот только CSW так же чередуются data0/data1 токены вне зависимости от токена CBW. Если data стадия setup транзакций закончилась на data1, то первый CSW придет data0
Вот тут не понял: откуда setup-транзакция в bulk-транзакциях?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рабочий USB Masstorage host
СообщениеДобавлено: 2017-май-26 14:01 
Не в сети
Аватара пользователя

Зарегистрирован: 2016-май-25 16:21
Сообщения: 11
Откуда: Рязань
Ну я имел ввиду последнюю setup транзакцию перед первой Bulk

_________________
Во славу империи БАНЗАЙ


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

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


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

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


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

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