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

USB Mass Storage

Использую пример от ST. Данные хранятся на SD карте. Хочу, чтобы мое устройство было read only. Я проследил всю цепочку - от USB прерывания до собственно функции записи. По дороге никакие флаги не проверяются. Я полагаю, что мое устройство, когда представляет себя хосту, должно сказать, что оно Read Only".

 

Скорее всего - я должен модицифировать дескриптор моего устройства (MASS_DeviceDescriptor в usb_desc.c) Но там не структура, а массив. Сооветственно имен полей нет. Пристальное вглядывание в дескриптор не помогло. Вопросы:

- Как сказать, что устройство Read Only?

- Где посмотреть структуру MASS_DeviceDescriptor?

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


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

Использую пример от ST. Данные хранятся на SD карте. Хочу, чтобы мое устройство было read only. Я проследил всю цепочку - от USB прерывания до собственно функции записи. По дороге никакие флаги не проверяются. Я полагаю, что мое устройство, когда представляет себя хосту, должно сказать, что оно Read Only".

 

Скорее всего - я должен модицифировать дескриптор моего устройства (MASS_DeviceDescriptor в usb_desc.c) Но там не структура, а массив. Сооветственно имен полей нет. Пристальное вглядывание в дескриптор не помогло. Вопросы:

- Как сказать, что устройство Read Only?

- Где посмотреть структуру MASS_DeviceDescriptor?

 

Если это большая карта, то там есть механический переключатель:

http://www.olympusamerica.com/files/oima_c...es/_SD_Lock.jpg

 

Вы на Линуксе?

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


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

Если это большая карта, то там есть механический переключатель:

К сожалению, это только кусочек пластмассы, который служит толкателем для контакта "кармана"

Mechanical write protect switch (Host responsibility only)

The position of the write protect switch is unknown to the internal circuitry of the card.

см 4.3.6 этого документа

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


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

Я работаю на STM32. Там не то что Линукс - там всего 20 килобайт кода у меня.

Механический Lock на SD карте - это всего лишь кнопка. Вот я и хочу сообщить хосту, что эта "кнопка" находится в состоянии "Locked"

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


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

Скорее всего - я должен модицифировать дескриптор моего устройства

Вот проделал такой опыт - взял карту, вставил в ридер, считал дескрипторы.

Затем переставил движок и снова считал. Разницы нет.

При этом в самом деле запись на карту не проходит.

Так что, наверное, устройство должно опрашивать состяние движка через контакт

и отвергать запросы хоста на запись.

Отпишитесь, как будет успех.

usb_sd.zip

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


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

Спасибо!

А какой получить такие красивые текстовые файлы с дескрипторами (да еще и с расшифровкой)?

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


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

Спасибо!

А какой получить такие красивые текстовые файлы с дескрипторами (да еще и с расшифровкой)?

UVCView.x86.exe - как есть, надежен ли источник, вам решать

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


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

Вот проделал такой опыт - взял карту, вставил в ридер, считал дескрипторы.

Затем переставил движок и снова считал. Разницы нет.

При этом в самом деле запись на карту не проходит.

 

В карте проверки на readonly нет!! Это должен делать контроллер. В УСБ-флешках есть такая функция, реализуется либо переключателем на корпусе либо программно, с помощью проги для встроенного контроллера (сам видел для чипов phison и alcor) так же флеха может сама перейти в только чтение при повреждении внутреннего нанда.

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


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

Дак ведь я и делаю тот самый контроллер. Вопрос - как мне сказать хосту, что я разрешаю только чтение?

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


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

Дак ведь я и делаю тот самый контроллер. Вопрос - как мне сказать хосту, что я разрешаю только чтение?

В смысле, УСБ-хосту? Ему на это какбы пофиг :biggrin: Он сам "говорит" об этом файловой системе, по моему это было в diskstatus или ioctl уже подзабыл немного. Там нужно выставить флаг readonly.

Изменено пользователем mantech

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


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

Дак ведь я и делаю тот самый контроллер. Вопрос - как мне сказать хосту, что я разрешаю только чтение?

 

Наверняка в протоколе есть сообщения об ошибках. Вот и возвращайте подходящую ошибку.

 

 

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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