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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Markus C. (cano)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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


Bewertung
0 lesenswert
nicht lesenswert
Der FX3S von Cypress hat eine eingebaute SD Schnittstelle. Einen 
Controller auch.

von Dr. Sommer (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Oh stimmt, my fault

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


Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.