Daten per USB MTP auf SD-Card lesen/schreiben

OP #5435011
Lesenswert?

Hallo

ich möchte gerne Daten per USB auf eine SD-Card schreiben, die Daten 
anschließend mit einem Mikrorechner bearbeiten und auf demselben weg 
wieder zurückholen. Verwendet werden soll MTP (Media Transfer Protocol).
Wenn ich im Internet suche, finde ich nur wenig Projekte zu Thema.
Das Teensy-Projekt sieht vielversprechend aus. Damit werde ich mal 
experimentieren.
Weiß sonst noch jemand fertige Lösungen/Beispiele mit anderen 
Controllern, die ich studieren könnte.
Ich trage zuerst einmal Infos zusammen. Welcher Controller zum Einsatz 
kommen wird, ist noch offen.
Vielen Dank für Eure Unterstützung.

Grüße Markus
Gast #5435031
Lesenswert?

Wozu denn MTP? MTP impliziert dass du ein Gerät dazwischen hat, welches 
das Dateisystem implementiert.  Das bedeutet, dass das relativ 
kompliziert ist. Smartphones machen das bekanntlich so. Bei normalen 
SD-Karten-Lesern implementiert der PC das Dateisystem. Warum kannst du 
einen solchen nicht benutzen?
Gast #5435036
Lesenswert?

Dr. Sommer schrieb:
> Warum kannst du
> einen solchen nicht benutzen?

Er könnte die Daten verschlüsseln. Ähnlich wie die Cryptosticks, bei 
denen man ein Passwort über dessen Tastatur eingeben muss. Dann würde 
sein Vorhaben so Sinn machen. Oder er will nur eine Logdatei freigeben, 
und die restlichen Files "verstecken". Dann muss er das so auch 
machen...

Aber fragen wir doch einfach den TO :-D
OP #5435060
Lesenswert?

Dr. Sommer schrieb:
> Warum kannst du
> einen solchen nicht benutzen?

Der SD-Karten-Leser ist ein USB-Sorage-Device. Solange der Host mit der 
SD verbunden ist, kann ich vom Controller nicht darauf zugreifen.

Ich möchte aber eine Datei A senden, vom Controller darauf zugreifen, 
die Datei bearbeiten und das Ergebnis im Filesysem als Datei B ablegen.
Nun kann ich vom Host wieder auf Datei B zugreifen.
Gast #5435076
Lesenswert?

markus c. schrieb:
> Ich möchte aber eine Datei A senden, vom Controller darauf zugreifen,

Also gleichzeitig? Warum schließt du nicht den Controller direkt per USB 
an den Mini-Rechner an und tauschst darüber Daten aus? Dürfte deutlich 
weniger kompliziert als der Umweg über SD-Karte und MTP sein.

Ansonsten nimm halt ein altes Smartphone, und greif per MTP auf die 
darin befindliche SD-Karte zu. Eine App auf dem Smartphone könnte dann 
gleichzeitig Dateien darauf verarbeiten.

Alternativ gibt es "Fake"-SD-Karten welche die Dateizugriffe über ein 
WLAN umleiten.

Ein System mit 2 MTP-Schnittstellen ist mir nicht bekannt.
#5435399
Lesenswert?

Das hier schon oft erwähnte Problem ist, dass man ein Blockdevice nur 
exklusiv benutzen kann - entweder der Computer oder Controller. Für 
gleichzeitigen Zugriff ohne Treiber gibt es nur MTP (oder man braucht 
ein Transferprogramm und macht HID oder sowas).

MTP ist schon die richtige Lösung, wenn es darum geht, von einem 
Controller eine draufkopierte Datei zu benutzen, ohne ihn vorher vom 
Computer trennen zu müssen.

Dr. Sommer schrieb:
> Ein System mit 2 MTP-Schnittstellen ist mir nicht bekannt.

Das Ziel ist, ein Gerät zu bauen, welches man an den Computer 
anschließt, dann eine Datei A draufkopiert, kurz wartet, und dann eine 
daraus generierte Datei B runterkopiert. Die SD-Karte kommt (vermutlich) 
nur ins Spiel, weil die Datei vermutlich größer als ist als der 
verfügbare RAM eines AVR.

Mir ist leider kein MTP-Projekt bekannt, aber die Spezifikation müsste 
frei sein. Außerdem bin ich auch neugierig. Daher: Abo. :-D
(Firma: TU Chemnitz) #5881184
Lesenswert?

Richtig, das Teensy-Projekt ist ein Software-Adapter zwischen 
Blockdevice (Flashspeicher mit FAT) und MTP. Der Umfang schreit nach 
einem 32-Bit-Controller. Da sich MTP wesentlich schlechter als ein 
Blockdevice ins (Windows-)System einbindet, ist das generell eine 
ungünstige Lösung.

MTP ist ohnehin krankhaft als Dateisystem, es kann keine 
Datei-Abschnitte lesen // schreiben // sperren, keine Rechte // 
Attribute verwalten u.v.a.m.

Ich gehe mal davon aus, dass für Dein Projekt ein externer Flash 
größenmäßig Overkill darstellt und der RAM- oder Flash-Speicher im 
Kilobyte-Bereich des Mikrocontrollers ausreicht.

Dann wäre dies hier ein Ausgangspunkt: Nur 4 Kilobyte Kode für einen 
24-KByte-Flash-Speicher auf Arduino Pro Micro.
http://www.tu-chemnitz.de/~heha/pg/Wild%20GIF12/#7.1

Wenn der Controller eine der Dateien selbst verändert, muss man noch 
entsprechende Events (Benachrichtigungen, Rundrufe) versenden, damit der 
MTP-Client (bspw. Windows) das mitbekommt.
Genau das hat mein Projekt letztendlich vor: Wenn der Uralt-Theodolit 
Daten auf die Karte schreibt, soll das der (gleichzeitig 
angeschlossene!) Laptop auch mitbekommen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren