Forum: Mikrocontroller und Digitale Elektronik SD gleichzeitig im uC und als Wechseldatentr mögl?


von Hans W. (hansw)


Lesenswert?

Hi,

kleine Newbie Frage :-)

Wenn man ein uC board wie z.B. Arduino mit SD Modul ausstattet, ist es 
dann eigentlich möglich den Inhalt der SD wie einen Datenträger zu 
kopieren und sonst was. Oder muss man die SD Karte erst rausnehmen und 
extra in einen Cardreader stecken oder sonst was, damit man 
"windows-Zugriff" drauf bekommt?

Gruß

von Stephan (Gast)


Lesenswert?

und/oder sonst was klappt auf jeden Fall!

von PittyJ (Gast)


Lesenswert?

Was ist ein windows-zugriff?

von gordon51freeman (Gast)


Lesenswert?

Du musst dir zuerst das Programm dafür schreiben ;)

Gruss
Gordon

von Lars73 (Gast)


Lesenswert?

Du könntest es so programmieren, dass sich Mikrocontroller + SD-Karte 
wie ein USB Memory-Stick verhalten.

Dann ginge es.

Allerdings cacht Windows die Daten.

Wenn dein µC etwas in eine Datei schreibt und Windows hat diese Datei 
eben noch gelesen, dann wird Windows wieder die alten Werte lesen !!!

von Lars73 (Gast)


Lesenswert?

> und/oder sonst was klappt auf jeden Fall!

>Was ist ein windows-zugriff?

>Du musst dir zuerst das Programm dafür schreiben ;)

Das ist genau der Müll, den wir hier auf Mikrocontroller.net nicht 
brauchen.

von gordon51freeman (Gast)


Lesenswert?

Lars73 schrieb:
> Das ist genau der Müll, den wir hier auf Mikrocontroller.net nicht
> brauchen.

Was genau ist an meinem Beitrag so verkehrt?

von fer (Gast)


Lesenswert?

Gleichzeitig im uC und am PC geht glaube ich nicht, oder warum wird bei 
jedem mir bekannten Handy die SD Karte deaktiviert wenn es im 
Massenspeicher Betrieb am PC hängt?
MfG

von Hans W. (hansw)


Lesenswert?

>Inhalt der SD wie einen Datenträger zu
>kopieren und sonst was.
Mein Gott: kopieren, löschen, verschieben, umbennen...
>mit windows-zugriff
d.h. z.B. auf den "Arbeitsplatz" gehen und dort die SD als 
Wechseldatenträger stehen sehen und darauf zugreifen können.

was ist das hier eigentlich für ein kleinkarierter Haufen... Gibt es 
hier irgendwie Punkte für sinnlose Antworten?
Der Fuchs ist schlau und stellt sich dumm, bei manchen ist es anders 
rum...


Vielen dank denjenigen die weiterhelfen wollten. Dann weiss ich jetzt 
schonmal das es theoretisch möglich ist. Hätte ja auch sein können das 
es ganz einfach ist, war ja eine Newbiefrage :-)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Also:
Es geht nicht, weil nicht zwei Systeme gleichzeitig das Dateisystem 
verwalten können. Verändert das eine System etwas am Dateisystem, 
bekommt es das andere nicht mit, was, wenn z.B. Verzeichnisstrukturen 
oder die FAT betroffen sind, sehr schnell zu Datenverlust und anderen 
netten Inkonsistenzen führen kann.

von Kan a. (Firma: Basta) (kanasta)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Also:
> Es geht *nicht*

Natürlich geht das. Nimm einfach einen Kartenleser, und deinen Arduino, 
und verbinde die Drähtchen alle huckepack. Dann wirds schon funzen.

Ehrlich, ihr Experten, heutzutage braucht man doch keine Ahnung mehr von 
Dateisystemen oder so etwas zu haben. Ein Arduino reicht. Damit geht 
alles.

von Hans W. (hansw)


Lesenswert?

Hi,

ich habe nicht gefragt ob es möglich ist zweimal auf das Dateisystem 
zuzugreifen. Vielleicht habe ich mich unglücklich ausgedrückt.

Mich interessiert, ob es möglich ist sich zu sparen die SD Karte aus SD 
Modul zu nehmen und sie sich direkt ohne Umstecken als 
Wechseldatenträger verwenden lässt, auf den man in Win zugreifen kann.
Also quasi wie ein Handy, das man auf den Massenspeichermodus umstellt.

Gruß

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das ist prinzipiell möglich.

Wenn der µC selbst die USB-Schnittstelle zur Verfügung stellt, muss er 
ein MSD implementieren und darf, solange er mit dem USB-Host verbunden 
ist, keine eigenen Dateisystemzugriffe ausführen.

Wird das mit separater Hardware abgewickelt, so daß z.B. ein 
USB-SD-Kartenleser parallel mit dem µC auf die SD-Karte zugreifen soll, 
müssen einerseits die zur SD-Karte führenden Leitungen zwischen beiden 
hin- und hergeschaltet werden, damit sie sich nicht ins Gehege kommen, 
und andererseits auch hier der µC seine Zugriffe aufs Dateisystem 
einstellen, sobald der SD-Karten-Leser per USB mit einem USB-Host 
verbunden ist.

von Lukas K. (carrotindustries)


Lesenswert?

Du könntest es so wie google bei Android >= 3 machen: MTP. MTP ist ein 
dateibasiertes Protokoll, sodass auf deinem µC die SD-Karte gemountet 
bleiben kann.

von Hans W. (hansw)


Lesenswert?

Danke schön!


und danke kanasta für deine Antwort bzgl.
>Gibt es hier irgendwie Punkte für sinnlose Antworten?

von Kan a. (Firma: Basta) (kanasta)


Lesenswert?

Hans W. schrieb:
> und danke kanasta für deine Antwort bzgl.
>>Gibt es sowas auch vorgefertigt für Arduino?

Ja klar, einfach copy&paste und fertig.

von Hans W. (hansw)


Lesenswert?

Kann es sein das es manchen Leuten nicht schmeckt das man z.B. mit 
Arduino copy und paste, modifizieren und ggf selber was machen z.B. als 
Chemiker in kürzester Zeit alleine Projekte umsetzen kann, wozu man 
eigentlich noch einen Elektro-Fachmann bräuchte oder eine sehr lange 
intensive Einarbeitung. Aber der vom Fach in keinster Weise bei dem 
gleichen Projekt das Wissen des Chemikers ersetzen könnte?

Oder woher kommt dein "haten"? Klar, würde sich der Chemiker dann 
einbilden er könnte richtig programmieren und wäre ET spezialist könnte 
ich das nachvollziehen...

von Karl H. (kbuchegg)


Lesenswert?

Hans W. schrieb:
> Kann es sein das es manchen Leuten nicht schmeckt das man z.B. mit
> Arduino copy und paste, modifizieren und ggf selber was machen

Ich denke eher, es liegt daran, dass du deine Frage nicht richtig 
gestellt hast

> Mich interessiert, ob es möglich ist sich zu sparen die SD Karte
> aus SD Modul zu nehmen und sie sich direkt ohne Umstecken als
> Wechseldatenträger verwenden lässt, auf den man in Win zugreifen kann.

Die SD Karte ist hier nämlich völlig uninteressant.
Der springende Punkt ist, dass sich der Arduino gegenüber Windows als 
Massenspeicher ausgeben muss. Was und wie der Arduino dann die 
Dateizugriffe, die er von Windows erhält umsetzt, das ist das Bier vom 
Arduino. Respektive von dem Programm, welches du für den Arduino 
geschrieben hast. Oder eben von irgendwo herkopiert hast.

Ob dem Arduino da jetzt eine SD-Karte zur Verfügung steht oder ein 
EEPROM oder ein Kasettenrekorder, ist dahingehend wieder völlig 
nebensächlich. Den Windows redet in erster Linie mit dem Arduino und 
nicht mit der SD-Karte.

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Hans W. schrieb:
> Oder muss man die SD Karte erst rausnehmen und
> extra in einen Cardreader stecken oder sonst was, damit man
> "windows-Zugriff" drauf bekommt?

Willst Du Deinem µC USB und MSD beibringen, oder reicht Dir ein 
Umachalter?

Du könntest den Cardreader ja in Dein System einbauen und den SD-Slot 
anzapfen. So einfach mit einem neunpoligen Wechselschalter-Relais geht 
das sicher nicht, aber so ähnlich vielleicht. Bevor wir darüber 
detaillierter nachdenken, wollte ich erstmal verstehen, was Du willst.

von Hans W. (hansw)


Lesenswert?

Dankesehr Karl Heinz für die einleuchtende Beschreibung.

Ja Torsten, so wäre es auch gut, per Umschalter. Ich werde mal schauen 
ob ich irgendwie was dazu finde, ob sowas SW oder HW mäßig schon gemacht 
wurde, werde wohl kaum der erste sein der die Idee hat das es ganz 
praktisch wäre.

Gruß

von Stefan F. (sfrings)


Lesenswert?

Die Leitungen vom Arduino zur SD Karte kannst Du ja per Software 
deaktivieren (als Eingang konfigurieren). Mit etwas Glück kannst Du das 
bei einem PC-Kartenleser ebenfalls tun, nämlich indem Du dessen Reset 
Leitung dauer-aktivierst (hängt vom Kartenleser ab).

So kannst Du elektronisch umschalten, wer wann auf die Karte zugreifen 
darf.

Aber vergiss nicht, daß die jeweiligen Betriebssysteme VOR dem 
Umschalten darauf vorbereitet werden müssen, sonst riskierst Du ein 
korruptes Inhaltsverzeichnis auf der Karte. Windows Meckert ja auch 
brav, wenn Du eine Speicherkarte einfach aus dem Kartneleser entfernst, 
ohne sie vorher "auszuwerfen" oder wie auch immer Microsoft den Vorgang 
inzwischen nennt.

von Frankman (Gast)


Lesenswert?

Du kannst Deine SD-Karte multiplexen.
Das geht einwandfrei.
Die Multiplexer-Chips müssen für 3-5Volt geeignet sein und schnell 
genug.
Ich hatte damals welche von Texas Instruments verwendet, ich kann dir 
aber leider im Moment nicht den genauen Typen sagen.

Der Arduino könnte das Umschaltsignal für die Multiplexer liefern. Dann 
wüsste der Arduino auch gleich, das er, wenn die Karte auf "PC" 
gemultiplext ist, keine Daten auf die Karte schreiben kann.

Ich hatte in einem Projekt das so gemacht. Für den Kartenleser habe ich 
eine Starr-Flex-Leiterplatte gefertigt, die ich in den Kartenleser 
stecken kann.

Die Kartenspannung habe ich ebenfalls von meinem Ziel-System getrennt.
Das einzige worauf du achten mußt: Die Karte muss auf PC gemultiplext 
sein und der Kartenleser schon angesteckt. Dann erst kann man den 
Kartenleser mit dem Starrflex verbinden. Grund: Im Kartenleser ist ein 
Schalter, der merkt, wenn eine Karte gezogen oder gesteckt wird. Wenn 
die Karte nicht anwortet, obwohl der Kartenleser eine erkennt, stürzt 
Windows ab.

von Frankman (Gast)


Lesenswert?

Noch was: Da der Arduino nur als virtueller Com Port an den PC 
angeschlossen ist, kann dieser sich NIE so verhalten, als ob er ein 
Massenspeicher ist.
Aber es gibt ein Eval-bord von Microchip mit einem Pic 24F drauf, der so 
etwas kann, also auf eine SD-Karte schreiben und mit einem USB-Anschluss 
so tun, als ob er ein Card-Reader wäre...

von Thomas B. (escamoteur)


Lesenswert?

Hi,

ich hatte neulich so eine ähnliche Anforderung, ich musste eine SD karte 
die an einer USB-SD-Bridge (entspricht einem SD-CARD-Reader) mit einem 
µC teilen.

Den µC kann man tatsächlich trennen indem man die Pins aus Eingang 
schaltet.

Um dem SD-Kartenleser von der SD-Karte zu trennen musst Du etwas mehr 
machen:

- Dem SD-Kartenleser solltest Du vorgaukeln, dass die SD-Karte entfernt 
worden ist, damit er sich nicht aufhängt wenn Du ihn trennst. Dazu 
kannst Du den entsprechenden Card-Detect-Pin im SD-CARD Socket so 
manipulieren, dass Du ihn vom µC steuern kannst.

- Dein SD-CARD-Reader hat mit großer Wahrscheinlichkeit Pull-Downs 
aktiviert sobald er denkt, dass die Karte entfernt wurde. Daher musst Du 
die Leitungen vom SD-CARD-Reader mit einem FET-Busswitch von der 
SD-Karte trennen.

- Dein SD-CARD Reader betreibt die Karte mit großer Wahscheinlichkeit im 
SDIO-Modus mit 4 Datenleitungen. Dein µC wird wahscheinlich per SPI 
darauf zugreifen. SD-Karten mögen es leider überhaupt nicht wenn Du im 
Betrieb einfach von einem Modus in den anderen wechselst.
Dummerweise haben SD-Karten keinen Reset-Pin. Daher musst Du kurz die 
Spannungsverorgung der SD-Karte unterbrechen bevor Du umschaltest.

Gruß
Thomas

P.S:: Es wäre hilfreich gewesen, wenn Du in Deiner Fragestellung 
beschrieben hättest, wie Du die SD-Karte sowohl an den Reader als auch 
an den µC anzuschließen gedenkst.

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Ich denke, der TO hört sicher gern Vorschläge von uns, welche 
Möglichkeiten es gibt, sein Problem zu lösen.

Thomas Burkhart schrieb:
> Es wäre hilfreich gewesen, wenn Du in Deiner Fragestellung
> beschrieben hättest, wie Du die SD-Karte sowohl an den Reader als auch
> an den µC anzuschließen gedenkst.

Es macht keinen Sinn, vorab schon eine Lösung vorzugeben, wenn man eine 
ehrliche Frage stellt. Der TO wollte vermutlich wissen, wie wie man am 
besten sein Problem lösen könnte, ohne eine Lösung vorzugeben.

Den Vorschlag mit dem Dauerreset ^^ finde ich gut, dadurch muß man auch 
nicht den Card-Detect faken. Ich drück' die Daumen, dass das klappt!

von HansW (Gast)


Lesenswert?

Vielen Dank für die Mühen.

bei dem was ich jetzt in Erfahrung bringen konnte scheinen wohl die 
Antworten gemäß "musst du programmieren" falsch zu sein und Frankman hat 
recht mit:
>Da der Arduino nur als virtueller Com Port an den PC
>angeschlossen ist, kann dieser sich NIE so verhalten, als ob er ein
>Massenspeicher ist.

Ich werde mich dann erstmal mit dem Multiplexen auseinander setzen, 
danke für die Vorschläge.

von HansW (Gast)


Lesenswert?

naja möglicherweise geht es doch mit dem Programmieren, man muss es 
dafür aber sehr sehr drauf, so wie ich das verstanden habe, also nix für 
mich :)
nicht das sich jmd auf den Schlips getreten fühlt

von Andreas B. (andreas_b77)


Lesenswert?

Ich kann mich dunkel erinnern, fertige Lösungen für genau diesen Einsatz 
gesehen zu haben. Also ein Chip, der USB mit Mass Storage beherrscht und 
als SD Kartenleser arbeiten kann aber gleichzeitig einen lokalen Port 
für einen µC bietet, über den dieser auch auf die SD Karte zugreifen 
kann (so lange sie halt nicht über USB verfügbar gemacht wird). Eben 
das, was viele simple MP3-Player benötigten.

Ich kann mich aber leider nicht erinnern, wo und bei welchem Hersteller 
ich das gesehen habe.

von Thomas B. (escamoteur)


Lesenswert?

Ja, solche Bridge Chips gibt es, z.B. von Cypress:

http://www.cypress.com/?id=214&source=header

Für unser Projekt waren die aber zu teuer. Ein GL823 von Genesyslogic + 
ein Busswitch ist in Stückzahlen billiger.

Gruß
Thomas

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.