Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: USB Mass Storage
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
igorle
Использую пример от ST. Данные хранятся на SD карте. Хочу, чтобы мое устройство было read only. Я проследил всю цепочку - от USB прерывания до собственно функции записи. По дороге никакие флаги не проверяются. Я полагаю, что мое устройство, когда представляет себя хосту, должно сказать, что оно Read Only".

Скорее всего - я должен модицифировать дескриптор моего устройства (MASS_DeviceDescriptor в usb_desc.c) Но там не структура, а массив. Сооветственно имен полей нет. Пристальное вглядывание в дескриптор не помогло. Вопросы:
- Как сказать, что устройство Read Only?
- Где посмотреть структуру MASS_DeviceDescriptor?
Tarbal
Цитата(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

Вы на Линуксе?
Владивольт
Цитата(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 этого документа
igorle
Я работаю на STM32. Там не то что Линукс - там всего 20 килобайт кода у меня.
Механический Lock на SD карте - это всего лишь кнопка. Вот я и хочу сообщить хосту, что эта "кнопка" находится в состоянии "Locked"
Владивольт
Цитата(igorle @ Oct 31 2013, 15:21) *
Скорее всего - я должен модицифировать дескриптор моего устройства

Вот проделал такой опыт - взял карту, вставил в ридер, считал дескрипторы.
Затем переставил движок и снова считал. Разницы нет.
При этом в самом деле запись на карту не проходит.
Так что, наверное, устройство должно опрашивать состяние движка через контакт
и отвергать запросы хоста на запись.
Отпишитесь, как будет успех.
igorle
Спасибо!
А какой получить такие красивые текстовые файлы с дескрипторами (да еще и с расшифровкой)?
Владивольт
Цитата(igorle @ Oct 31 2013, 23:19) *
Спасибо!
А какой получить такие красивые текстовые файлы с дескрипторами (да еще и с расшифровкой)?

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


В карте проверки на readonly нет!! Это должен делать контроллер. В УСБ-флешках есть такая функция, реализуется либо переключателем на корпусе либо программно, с помощью проги для встроенного контроллера (сам видел для чипов phison и alcor) так же флеха может сама перейти в только чтение при повреждении внутреннего нанда.
igorle
Дак ведь я и делаю тот самый контроллер. Вопрос - как мне сказать хосту, что я разрешаю только чтение?
mantech
Цитата(igorle @ Nov 1 2013, 00:17) *
Дак ведь я и делаю тот самый контроллер. Вопрос - как мне сказать хосту, что я разрешаю только чтение?

В смысле, УСБ-хосту? Ему на это какбы пофиг biggrin.gif Он сам "говорит" об этом файловой системе, по моему это было в diskstatus или ioctl уже подзабыл немного. Там нужно выставить флаг readonly.
Tarbal
Цитата(igorle @ Nov 1 2013, 01:17) *
Дак ведь я и делаю тот самый контроллер. Вопрос - как мне сказать хосту, что я разрешаю только чтение?


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

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.