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

USB "переходник"

Возникла потребность, для рабочих нужд, сделать на скорую руку накопитель информации на флэшке.

В идеале результат вижу так:

- Подключаем к устройству Diskonkey

- Подключаем устройство к PC (USB)

 

PC должен видеть флэшку, как будто она подключена к нему напрямую (или через хаб)

Устройство должно иметь возможность записывать файлы в файловую систему.

 

Цель - устройство пишет файлы на флэш, с компьютера данные считываются и стираются из флэшки.

 

Устройство нужно для собственных нужд, пользоваться буду я сам и коллеги. Так что можно пережить отдельные неудобства. Например, я могу не трогать текущий файл, открытый на запись устройством.

 

По сути, надо реализовать USB хост, USB устройство и файловую систему.

 

Что-то подсказывает мне, что идея не нова, и есть готовые проекты для этого.

Кто-то видел подобное и может дать ссылки? Чтобы не изобретать велосипед.

По силам это, например STM32F1?

 

PS. Я вот тут пораскинул мозгами. Может быть проще SD карточку приспособить, в качестве накопителя? Не надо будет USB хост городить...

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


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

PS. Я вот тут пораскинул мозгами. Может быть проще SD карточку приспособить, в качестве накопителя? Не надо будет USB хост городить...

Если есть какой-нибудь DevKit на ARM под Linux, то задача почти наверняка будет иметь гораздо простое решение ...

 

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


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

Мне надо компактно и из имеющихся материалов. А имею STM32F103C8

 

Странно, но я не нашел готового примера с USB "стика" для моего чипа. Есть один старый 2009 года. Но он с моим кейлом уже не совместим. Не в смысле формата проекта, а в смысле используемых инклюдов. Старый проект использует stm32f10x_lib.h. Сейчас вместо него Кейл определяет stm32f10x.h. И просто замена одного файла другим не работает :(

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


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

USB-USB на STM32F1 не получиться. У него только один интерфейс USB, и тот только Device.

Если брать stm-ку, то начиная с F2 - у этих два USB, в т.ч. хост и с примерами все в порядке.

 

Непосредственно по задаче, первое что приходит в голову - это тансляция запросов с хоста на девайс (т.е. с компа на флешку) на уровне, например, scsi команд, плюс встраивание своих запросов. И оно даже наверное будет работать, и даже почти всегда. Проблема возникнет в тот момент, когда и комп и сам девайс захотят записать что-то в один и тот же сектор, в таблице фат, например.

 

Вообще задача видится довольно нетривиальной, имхо решением будет отказаться от файловой системы на флешке и работать с ней с компа как с RAW диском.

Вспомните телефоны, при подключении к компу в режиме диска (для доступа к SD-шке) сам телефон теряет к ней доступ, так что даже для "взрослых" девайсов это не так просто.

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


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

Проблема в том, что PC благополучно закэширует считанные данные, поэтому изменения, сделанные "изнутри" в то время, пока диск подключен, в лучшем случае окажутся незамеченными, а в худшем приведут к ошибкам работы с файловой системой.

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


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

От идеи USB хоста я уже отказался. SD карта выглядит более реальным вариантом. А вот то, что таких проектов нет готовых - не ожидал. Надеялся что задача тривиальная и многократно решенная, в том числе и в открытых проектах.

 

Жаль. Спасибо.

 

Я все-же попытаюсь. Я видел на сайте ST несколько пакетов для работы с USB. Кто-нибудь делал/видел обзор? Кто-нибудь их использует и может порекомендовать?

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


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

Надеялся что задача тривиальная ...

Задача весьма своеобразная. Я делал на ARM9 дивайс, который при подключении по USB к машине представлялся для нее флэшкой, а носителем там служила SD - карточка. Но мне не нужно было писать на карточку файлы со стороны МК. А вам нужно.

Вопрос. Машина должна только читать данные с вашего дивайса, или может также и писать данные ?

 

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


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

Задача весьма своеобразная. Я делал на ARM9 дивайс, который при подключении по USB к машине представлялся для нее флэшкой, а носителем там служила SD - карточка....

 

Я когда нашел для себя (год назад) MSP430 и пищал от восторга (сделал несколько проектов для себя и друзей), то слышал от "теоретиков", мол брось ты его. Осваивай АРМ, например STM32. Для АРМа, говорят, есть масса библиотек и готовых проектов. Практически любую задачу уже решили и выложили код. Костяк любого разумного проекта, мол, будешь брать готовый прямо с сайта ST.

 

А сейчас я не могу найти даже готовый проект "Diskonkey". Чтобы PC видел стандартное USB устройство, а накопителем работала SD карточка. :(

 

А ведь и USB, SPI и файловая система - стандартные вещи.

То-ли все не так радужно, то-ли пока не разобрался, как искать.

 

Вопрос. Машина должна только читать данные с вашего дивайса, или может также и писать данные ?

Желательно чтобы машина (PC) могла удалять файлы. Но в крайнем случае от этого можно и отказаться. В принципе, контроллер может сам удалять старые файлы.

 

Единственно, я хотел бы иметь возможность форматировать SD c PC, но и от этого можно отказаться. Вынимать карточку, ставить ее в адаптер и форматировать отдельно.

 

Я могу сообщить контроллеру, что сейчас идет форматирование и писать ничего не надо. Но читать надо "на лету".

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


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

А сейчас я не могу найти даже готовый проект "Diskonkey". Чтобы PC видел стандартное USB устройство, а накопителем работала SD карточка. :(

Для STM32F207 я такой проект на сайте ST находил, собирал в Кейле и запускал на реальном устройстве. Проект, что называется, ознакомительный, а не профессиональный, но вполне рабочий ...

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


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

Проект, реализующий "USB-флешку" на SD карте лежит здесь

Но в нем нет файловой системы, т.е дальше начинается самое интересное, чтобы чтото записать изнутри контроллера на карту памяти нужно прикрутить файловую систему, которая будет взаимодействовать с картой памяти через SCSI интерфейс или напрямую через SPi в то время пока PC не обращается к карте.

Почитайте еще этот топик

и вот этот

Или поищите в сети что-нить по тегам STM32F103 + Fatfs + Mass Storage Device

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


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

Спасибо. Эти выходные буду изучать тему по Вашим ссылкам.

Кстати, у меня большая радость. Оказалось что в нашем здании и даже на нашем этаже есть представительство ST. И люди что сидят там - как раз и занимаются поддержкой разработчиков. Так что я договорился о встрече на следующей неделе. Обещали не только дать ссылки, но и совместно скомпилировать то что мне надо и проверить результат на моем борде.

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


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

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

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

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

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

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

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

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

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

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