Forum: Mikrocontroller und Digitale Elektronik Daten per USB MTP auf SD-Card lesen/schreiben


von Markus C. (cano)


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

von Max D. (max_d)


Lesenswert?

Mtp wird normalerweise von Smartphones und dgl genutzt um den Zugriff 
des host-Rechners auf das Dateisystem zu abstrahieren und zu 
beschränken.
deine Anwendung klingt eher nach einem Kartenleser als nach einem 
Smartphone...

von Mark W. (kram) Benutzerseite


Lesenswert?

Der FX3S von Cypress hat eine eingebaute SD Schnittstelle. Einen 
Controller auch.

von Dr. Sommer (Gast)


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?

von Marc Horby (Gast)


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

von Markus C. (cano)


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.

von Dr. Sommer (Gast)


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.

von S. R. (svenska)


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

von Timmo H. (masterfx)


Lesenswert?


von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das ist, wenn ich's richtig verstehe, die USB-Host-Implementierung, um 
mit einem MTP-Device "reden" zu können; ging es hier nicht eher darum, 
selbst ein MTP-Device zu implementieren?

von Timmo H. (masterfx)


Lesenswert?

Oh stimmt, my fault

von Henrik H. (Firma: TU Chemnitz) (heha)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.