Forum: Mikrocontroller und Digitale Elektronik SUCHE SD/MMC Ansteuerungen/Threads OHNE fat


von Rico S. (donricone)


Lesenswert?

Vllt hab ich mich mal wieder dumm angestellt beim Suchen :/

Ich bin auf der Suche nach einer Lib oder einer Beschreibung wie ich 
Daten auf die SD Karte bekomme usw. OHNE Dateisystem.

Mir haben die vielen Beiträge zu Fat bisschen Angst gemacht und ich 
möchte es ersteinmal so probieren.

Hab irgendwo den Tipp gelesen, einfach die SD mit FAT zu formatieren, 
danach eine Datei mit genau der größe des Speichers draufzukopieren und 
dann über Hex Editoren den Anfang der Datei zu Suchen. Ab dort könnte 
man dann seine Daten schreiben und am PC über Hex wieder auslesen. Hatte 
der jenige da recht, oder gibts da nen Haken. Es gibt immer einen Haken.

Grüße

von Marcel (Gast)


Lesenswert?

http://elm-chan.org/fsw/ff/00index_e.html

Ist zwar ein komplettes FAT System, aber bei den Anwendungsbeispielen 
siehst du die Low-Level Ansteuerung der Karte. Das ist das was du machen 
möchstest (Blöcke lesen/schreiben) und auch das komplizierteste an der 
Sache. Wenn das einmal geht kannst du einfach die FatFS dadrauf laufen 
lassen.

von Rico S. (donricone)


Lesenswert?

Oke Spitze, das hatte ich schn in der Hand, dachte es gibt vllt ein 
Stand Alone ohne Fat ich mag das Wot nicht mehr :D

Ich mach mich mal dran DANKE!

von sebastians (Gast)


Lesenswert?

Ich arbeite da grad an was. Wie lang kannst du warten? (je länger du 
wartest, umso schöner ist der Code...) Ist fast fertig, kann sich nur 
noch um Monate handeln... Freizeit-Projekt.

AVR schreibt über SPI auf die SD (MMC-Protokoll). Lib hab ich hier 
irgendwo gefunden, und im Großen und Ganzen nur konfiguriert für meinen 
AVR Typen (ATMega644).

Auslesen (und löschen, also auch schreiben) tu ich das unter Windows mit 
der gleichen Methode wie NTRawrite (Source findest du mit Suchmaschine). 
Hab dazu eine DLL mit python Wrapper geschrieben, auf die aktuellste 
Version hab ich erst am Wochenende Zugriff, falls du sie haben willst.

Probleme beim Windows-Zugriff (getestet mit XP):
- Tut nur mit Adminrechten. Ich hab keinen Weg gefunden, wie ich das 
(unformatierte) SD-Laufwerk einem anderen Benutzer freigeben kann.
- Tut nicht mit jedem SD-Laufwerk. Hab ein USB-Laufwerk, mit dem es 
einwandfrei funktioniert, mit dem im Laptop eingebauten tut es nicht 
(Gerät meldet falsche Größe)

Selbstausgedachtes "Dateisystem": Nur für logging (immer nur anhängen), 
wenn man löschen will, dann die ganze Karte. AVR findet (z.B. nach einem 
Stromausfall) den letzten benutzten 512-byte-Block durch binäre Suche in 
logarithmischer Zeit (Und es muss ein "großer" AVR sein, der die 512 
bytes im Speicher halten kann...) Mit dem Verfahren vermeide ich 
Verwaltungs-Strukturen, die ich regelmässig aktualisieren muss (und 
damit Flash-"Ermüdung").

Löschen tu ich nur unter Windows. Löschen mit dem AVR hab ich probiert, 
und es hat sich rausgestellt, dass man bei verschiedenen Karten 
verschiedene Löschbefehle braucht. Hab das drum aufgegeben (brauch ich 
eh nicht).

Log-Nachrichten codiere ich mit COBS, damit ich sie beim Senden über die 
serielle Schnittstelle (alternativ zum loggen in MMC, wenn ich mal 
"life" draufgucken will) einfach zerpflücken kann (Kein Problem mit 
Synchronisierung wenn mal was verlorengegangen ist). Hab dazu eine Open 
Source COBS Implementierung aus dem Internet so geändert, dass ich sie 
für in-place encoding (also ohne Zusatzspeicher) in einem Ringpuffer 
verwenden kann. Der Ringpuffer ist klein (kleiner als 256 bytes), in 
dieser Größenordnung braucht COBS nur 1 byte extra pro Nachricht - dafür 
muss halt Platz sein im Ringpuffer. Von dem Ringpuffer aus geht's über 
TWI in kleinen Stückchen (um den Bus nicht zu lang zu blockieren) in den 
AVR, an dem die MMC und die serielle Schnittstelle angeschlossen ist.

Das Schreiben dieses Beitrags hat mich gerade davon abgehalten, an dem 
python-Auswerteprogramm weiterzuarbeiten. Das macht auch den Empfang 
(RS232), und COBS-decoding.

Gute Nacht.

von Falk B. (falk)


Lesenswert?

@ Rico S. (donricone)

>Ich bin auf der Suche nach einer Lib oder einer Beschreibung wie ich
>Daten auf die SD Karte bekomme usw. OHNE Dateisystem.

Warum?

>Mir haben die vielen Beiträge zu Fat bisschen Angst gemacht und ich
>möchte es ersteinmal so probieren.

Genau anders herum wird ein Schuh draus! Nimm eine FERTIGE, getestete 
Lib und du wirst in Null Komma Nix dein SD-Karte ansprechen, ohne dich 
um irgendwelchen Low Level Kram kümmern zu müssen! Been there, done 
that. Die Lib von ELM Chan ist sehr gut, lief bei mir auf Anhieb.

Nim einen soliden SD-Kartenslot, keine umgeschnitzten ISA-Stecker oder 
sonstigen Müll. Du musst VIER Signale richtig anschließen, Pull-Up an 
SDO nicht vergessen (10k). Fertig!

>Hab irgendwo den Tipp gelesen, einfach die SD mit FAT zu formatieren,
>danach eine Datei mit genau der größe des Speichers draufzukopieren und
>dann über Hex Editoren den Anfang der Datei zu Suchen. Ab dort könnte
>man dann seine Daten schreiben und am PC über Hex wieder auslesen.

Bastelmurks! Nimm FAT und fatig.

von Falk B. (falk)


Lesenswert?

@ sebastians (Gast)

Genau SO macht man es nicht, wenn man keinen sinnlosen Stress haben 
will. Du erfindest das Rad neu, allerdings 7,32345 eckig. Naja, urteilen 
Sie selber.

von sebastan (Gast)


Lesenswert?

Zugegeben, ein bisschen Rad-Neu-Erfinderei war schon dabei. Hat trotzdem 
Spass gemacht.

Bis auf die 2 angegebenen Nachteile (Adminrechte, ...) hatte ich durch 
den Verzicht auf FAT aber keinen großen Stress (und aus dem Stress, den 
ich hatte, hab ich was gelernt.)

von sebastan (Gast)


Lesenswert?

Und, ja, ich weiß dass das Argument mit der Flash-"Ermüdung" nicht 
wirklich zieht, weil die Controller auf den SD-Karten für FAT ausgelegt 
sind.

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.