реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> USB Mass Storage, как объявить его "только чтение"?
igorle
сообщение Oct 31 2013, 11:21
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 338
Регистрация: 14-07-12
Пользователь №: 72 753



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

Скорее всего - я должен модицифировать дескриптор моего устройства (MASS_DeviceDescriptor в usb_desc.c) Но там не структура, а массив. Сооветственно имен полей нет. Пристальное вглядывание в дескриптор не помогло. Вопросы:
- Как сказать, что устройство Read Only?
- Где посмотреть структуру MASS_DeviceDescriptor?
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Oct 31 2013, 15:38
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(igorle @ Oct 31 2013, 15:21) *
Использую пример от 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

Вы на Линуксе?
Go to the top of the page
 
+Quote Post
Владивольт
сообщение Oct 31 2013, 17:15
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 168
Регистрация: 14-02-10
Пользователь №: 55 490



Цитата(Tarbal @ Oct 31 2013, 19:38) *
Если это большая карта, то там есть механический переключатель:

К сожалению, это только кусочек пластмассы, который служит толкателем для контакта "кармана"
Цитата
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 этого документа


--------------------
#define TRUE (4==(2*2))
Go to the top of the page
 
+Quote Post
igorle
сообщение Oct 31 2013, 17:18
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 338
Регистрация: 14-07-12
Пользователь №: 72 753



Я работаю на STM32. Там не то что Линукс - там всего 20 килобайт кода у меня.
Механический Lock на SD карте - это всего лишь кнопка. Вот я и хочу сообщить хосту, что эта "кнопка" находится в состоянии "Locked"
Go to the top of the page
 
+Quote Post
Владивольт
сообщение Oct 31 2013, 17:51
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 168
Регистрация: 14-02-10
Пользователь №: 55 490



Цитата(igorle @ Oct 31 2013, 15:21) *
Скорее всего - я должен модицифировать дескриптор моего устройства

Вот проделал такой опыт - взял карту, вставил в ридер, считал дескрипторы.
Затем переставил движок и снова считал. Разницы нет.
При этом в самом деле запись на карту не проходит.
Так что, наверное, устройство должно опрашивать состяние движка через контакт
и отвергать запросы хоста на запись.
Отпишитесь, как будет успех.
Прикрепленные файлы
Прикрепленный файл  usb_sd.zip ( 1.7 килобайт ) Кол-во скачиваний: 33
 


--------------------
#define TRUE (4==(2*2))
Go to the top of the page
 
+Quote Post
igorle
сообщение Oct 31 2013, 19:19
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 338
Регистрация: 14-07-12
Пользователь №: 72 753



Спасибо!
А какой получить такие красивые текстовые файлы с дескрипторами (да еще и с расшифровкой)?
Go to the top of the page
 
+Quote Post
Владивольт
сообщение Oct 31 2013, 20:09
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 168
Регистрация: 14-02-10
Пользователь №: 55 490



Цитата(igorle @ Oct 31 2013, 23:19) *
Спасибо!
А какой получить такие красивые текстовые файлы с дескрипторами (да еще и с расшифровкой)?

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


--------------------
#define TRUE (4==(2*2))
Go to the top of the page
 
+Quote Post
mantech
сообщение Oct 31 2013, 20:10
Сообщение #8


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(igorle @ Oct 31 2013, 22:19) *
Вот проделал такой опыт - взял карту, вставил в ридер, считал дескрипторы.
Затем переставил движок и снова считал. Разницы нет.
При этом в самом деле запись на карту не проходит.


В карте проверки на readonly нет!! Это должен делать контроллер. В УСБ-флешках есть такая функция, реализуется либо переключателем на корпусе либо программно, с помощью проги для встроенного контроллера (сам видел для чипов phison и alcor) так же флеха может сама перейти в только чтение при повреждении внутреннего нанда.
Go to the top of the page
 
+Quote Post
igorle
сообщение Oct 31 2013, 21:17
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 338
Регистрация: 14-07-12
Пользователь №: 72 753



Дак ведь я и делаю тот самый контроллер. Вопрос - как мне сказать хосту, что я разрешаю только чтение?
Go to the top of the page
 
+Quote Post
mantech
сообщение Nov 1 2013, 07:07
Сообщение #10


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(igorle @ Nov 1 2013, 00:17) *
Дак ведь я и делаю тот самый контроллер. Вопрос - как мне сказать хосту, что я разрешаю только чтение?

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

Сообщение отредактировал mantech - Nov 1 2013, 07:08
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Nov 1 2013, 12:15
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(igorle @ Nov 1 2013, 01:17) *
Дак ведь я и делаю тот самый контроллер. Вопрос - как мне сказать хосту, что я разрешаю только чтение?


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

Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 13:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.01446 секунд с 7
ELECTRONIX ©2004-2016