LINUX.ORG.RU

Massstorage в embedded устройстве. Как?


0

0

Есть тут одна задачка, которая пока крутится на уровне идей. Дело примерно в следующем: планируем мы разрабатывать один прибор, в котором хотим поставить контроллер с АРМ процессором и линуксом. В этом приборе будут сохраняться какие-то данные. Так вот есть идея, чтоб при подключении устройства к ПЦ заказчика (Windows-PC) наше устройство определялось как внешний диск и заказчик мог снять данные традиционно как с флэшки.

Так вот теперь не знаю, как к этому подступиться со стороны Линукса: в какой файловой системе сохранять данные в приборе, как отконфигурировать систему, чтоб предоставляла внешний диск и тп. Был бы рад любым идеям

Ну в общем принцип прост - нужное некое блочное устройство, которое вы будете экспортировать из вашего прибора. Что вы будете экспортировать дело ваше. Но общий принцип таков:
modprobe g_file_storage file=/dev/mmcblk0
После этого девайс будет доступен как Massstorage. Учитывайте конечно, что нужно будет на это устройство фс сделать фат или ntfs, раз для винды.
Исходники модуля лежат в linux/drivers/usb/gadget/file_storage.c

ixrws ★★★
()
Ответ на: комментарий от ixrws

Спасибо, посмотрю. А как быть, если надо записывать данные в JFFS2, например? FAT мне совершенно не подходит, поскольку планируется записывать данные каждые 10 секунд, а носитель - внутренняя flash IC. FAT её убъёт за месяц

velik_S
() автор топика
Ответ на: комментарий от velik_S

Может, делать двухуровневый сторадж? Ну или поставлять к Вашей железяке сидючок с драйвером для jffs2 под винды;)

svu ★★★★★
()
Ответ на: комментарий от velik_S

Зависит от задачи и средств. Если флеша много, то можно выделить часть места под образ fat, и синхронизировать этот образ, допустим с помощью rdiff-backup в момент подключения девайса к писюку. Если таких подключений планируется не каждую минуту, а раз в месяц - то фигня. Образ фатового раздела хранить также в основном разделе jffs2, чтобы она износ снижала.
Если же планируется доступ частый, или нет места, то драйвер jffs2 как сказали выше.
Ещё вариант - cifs(с помощью samba). Тогда надо будет в девайсе поднять usb сеть:
modprobe g_ether
ifup usb0
Потом настроить сеть на девайсе и на писюке. Ну и смонтировать сетевой диск.

ixrws ★★★
()
Ответ на: комментарий от ixrws

Вообще говоря, прямой доступ на запись в прибор - это очень плохой вариант. Если уж прямо так нужно записывать, то надо рассмотреть способ безопасного, косвенного доступа. Допустим заливаем что-то с помощью cifs, потом это что-то на девайсе проверяется скриптом и заливается куда нужно. Хотя бы минимальную защиту от дурака надо предусмотреть. Ну это конечно если вы не привыкли работать из-под рута и к девайсу не будете иметь доступ только вы:)

ixrws ★★★
()
Ответ на: комментарий от ixrws

+1. Вообще, может лучше делать небольшую предобработку данных - в процессе копирования с jffs на публично-видимый fat?

svu ★★★★★
()
Ответ на: комментарий от svu

А где можно почитать про двухуровневый сторадж? Цена очень критична, поскольку предполагается продать примерно сто тыщ устройств. Продавать сидюк с драйвером - тоже не вариант, поскольку всё равно ведь потеряют ;-)

velik_S
() автор топика
Ответ на: комментарий от velik_S

А если при подключении устройство будет определятся как маленькая флешка, на которой будет ваш драйвер? =) А драйвер уже даст увидеть всё остальное.

theos ★★★
()
Ответ на: комментарий от velik_S

> А где можно почитать про двухуровневый сторадж?
Не знаю. Это только идея. Но, как было сказано далее, идея неплохая. И защищает реальное хранилище от кривых ручек юзера, и позволяет данные слегка обработать.

> Продавать сидюк с драйвером - тоже не вариант, поскольку всё равно ведь потеряют ;-)

Потеряют - скачают с вашего веб-сайта.

svu ★★★★★
()
Ответ на: комментарий от theos

Одна неприятность - когда драйвер будет загружен, устройство будет видно как два виндовых диска. Пользователь запутается, обещаю Вам!:)

svu ★★★★★
()
Ответ на: комментарий от svu

Если пользователь - 60-ти летний старичек, то он точно запутается. А именно они - целевая группа этого медицинского аппарата. Тут должно быть всё на уровне обихода с фотоаппаратами - подключил>списал. А качать, устанавливать и тд, это не для нашей категории клиентов )

velik_S
() автор топика
Ответ на: комментарий от svu

Кинуть инсталлер туда, который будет отключать массторейдж и подключать jffs2. Однако блин, этот вариант некрасив для приборов, очень некрасив. Такое можно предусмотреть, но только для обслуги. Для тех кто просто снимает данные нужен безопасный доступ.

ixrws ★★★
()
Ответ на: комментарий от velik_S

Именно поэтому надо предусмотреть разные варианты.
Для обслуживающих - прямой доступ.
Для ничего непонимающих медиков - доступ только к тем данным, которые им нужны, а возможно имеет смысл сделать предобработку как уже было сказано выше.
Грубо говоря какой смысл давать доступ к sql базе тому, кому нужен отчёт, созданный на основе данных, которые содержатся в этой базе. Приучайтесь делать удобно для людей. Подумайте, зачем медикам доступ до /bin/bash или /dev/null ?:)

ixrws ★★★
()

Мне кажется более простым в реализации и использовании вариант когда устройство создаёт сетевой интерфейс и далее вся работа (скачивание данных, управление и т. д.) ведётся по http. Тогда туда можно будет в добавок и какие-нибудь настройки засунуть. ИМХО это гораздо лучше чем cifs в том плане, что а) протокол гораздо проще, б) легко делается обработка данных при передаче/получении.

Для "медиков, которые ничего не понимают" можно создать маленький раздел mass storage куда положить скрипт, запускающий браузер на нужный адрес.

slav ★★
()
Ответ на: комментарий от slav

поднять целый tcp стек, да еще с http сервером - это должно быть сильно дороже, чем обычный стораджевый интерфейс

svu ★★★★★
()
Ответ на: комментарий от svu

Ну если хочется ещё чтобы очень легко было, то надо заюзать gadgetfs, и сделать так, чтобы девайс при определённых условиях мог бы выдать себя хоть за морковку:)
Конечно если приборчик со слабым процом или что более страшно - с малым объёмом памяти, то от usb ether и всего выше включительно нужно отказаться сразу.

ixrws ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.