Forum: Mikrocontroller und Digitale Elektronik SDCard emulieren


von Klaus D. (klaus_d)


Lesenswert?

Hi,

kennt jemand von euch ein Projekt zum nachbauen oder etwas käuflich 
erwerbliches, um eine SDCard zu emulieren?

Ich möchte eine "Fake SDCard" in meine Kamera stecken und die Zugriffe 
auf die SDCard abgreifen und an den PC weiterleiten. Quasi ein "Man in 
the middle".

Gruß,
 Klaus

von Lukas K. (carrotindustries)


Lesenswert?

Wenn es dir darum geht, mit der Kamera Bilder aufzunehmen, die direkt an 
den PC übertragen werden, dann seh' dir das PtP (picture Transfer 
Procotol) an, damit kannst du die Kamera steuern und auch die Bilder 
abholen.

von Silvan K. (silvan) Benutzerseite


Lesenswert?

Es gibt auch diese irre teuren WLAN-SD-Karten.

von Jack (Gast)


Lesenswert?

Sind garnicht irre teuer.

http://de.eye.fi/products/connectx2

von Lehrmann M. (ubimbo)


Lesenswert?

Jack schrieb:
> Sind garnicht irre teuer.
>
> http://de.eye.fi/products/connectx2

Aber richtig Schrottreif !
Ich muss dich in dieser Hinsicht warnen - Garantie gibt es nur auf eines 
- auf Probleme.

von Klaus D. (klaus_d)


Lesenswert?

Hi,

es geht mir nicht darum, Bilder an den PC zu übertragen, sondern 
bestimmte Lese-/Schreib-Zugriffe bzgl. Reverse-Engineering abzugreifen. 
Einige Kameras suchen beim Einschalten nach bestimmten Dateien auf der 
SDCArd, um zb Debug-Menues freizuschalten. Diese zugriffe interessieren 
mich.

Das SDCARD Interfacing an sich ist nicht das Problem . Ich würde dazu 
wohl eine SDCARD kaufen, sie vorsichtig öffnen, die Innereien entfernen, 
Kabel dran löten, an einen µC anschliessen und SW selbst implementieren. 
Den µC würde ich dann noch per Serial->USB an den PC anschliessen. Das 
embedded System würde dann quasi als "Router" dienen, der den gesamten 
Traffic einfach an den PC weiterleitet.

Ich habe auch USB-SPI Adapter im Netz gefunden. Evtl. könnte ich die 
SDCARD damit direkt mit dem PC verbinden? Ohne den Umweg über einen µC. 
Wisst ihr, ob diese Adapter etwas taugen?

Um nicht alles selbst machen zu müssen, suche ich daher
-entweder etwas das ich nachbauen kann (bereits existierende Projekte)
oder
-etwas das ich käuflich erwerben kann (ein SDCARD Dev-Kit o.ä. ?)

Ist euch dazu zufällig etwas bekannt?

Gruß,
 Klaus

von Andreas B. (Gast)


Lesenswert?

Klaus D. schrieb:
> Einige Kameras suchen beim Einschalten nach bestimmten Dateien auf der
> SDCArd, um zb Debug-Menues freizuschalten. Diese zugriffe interessieren
> mich.

Die werden beim Einschalten das Verzeichnis einlesen und schauen, was da 
drin steht. Nach welchen Dateien sie suchen kannst du da ja nicht sehen.

von Simon B. (nomis)


Lesenswert?

Klaus D. schrieb:
> es geht mir nicht darum, Bilder an den PC zu übertragen, sondern
> bestimmte Lese-/Schreib-Zugriffe bzgl. Reverse-Engineering abzugreifen.
> Einige Kameras suchen beim Einschalten nach bestimmten Dateien auf der
> SDCArd, um zb Debug-Menues freizuschalten. Diese zugriffe interessieren
> mich.

Mhm, nur dass das Suchen nach Dateien normalerweise nicht den Dateinamen 
an die SD-Karte überträgt, sondern das Inhaltsverzeichnis des 
FAT-Dateisystems ausgelesen wird und dann in diesen Daten 
(Kamera-intern) nach Wunschnamen gesucht wird.

> Das SDCARD Interfacing an sich ist nicht das Problem . Ich würde dazu
> wohl eine SDCARD kaufen, sie vorsichtig öffnen, die Innereien entfernen,
> Kabel dran löten, [...]

Diesen Teil kannst Du Dir dramatisch vereinfachen mit z.B. 
http://www.watterott.com/de/SD-Sniffer oder 
http://www.watterott.com/de/microSD-Sniffer

Viele Grüße,
        Simon

von Klaus D. (klaus_d)


Lesenswert?

Vielen Dank für euere Antworten zu so später/früher Stund.

Jetzt wo ihr das erwähnt...Hätte ich auch selber drauf kommen können. 
Ist ja ein FAT Dateisystem, daß in der Kamera-FW realisiert wird...Damit 
hat sich meine Idee in Luft aufgelöst.

Danke fürs Augen öffnen!

Gute Nacht,
 Klaus

von Karsten W. (lsmod)


Lesenswert?

Ich würde gerne diesen alten Thread wieder aufgreifen, da ich es 
faszinierend finde das es zwar jede Menge Lösungen gibt um auf eine 
SD-Karte zuzugreifen, aber keinen Quellcode um eine zu emulieren!?

Hier gibt es einen vielversprechenden Ansatz, aber es fehlt noch der 
Teil mit dem SPI-Bus:
http://softgun.sourceforge.net/sdcard.shtml

Jemand hat hier an dem Thema gearbeitet, aber leider seine Lösung nicht 
veröffentlicht:
http://www.uzebox.org/forums/viewtopic.php?f=3&t=290&sid=e6ddd749f84743119aa9c601d52da8e3

Ist jemandem irgendwo Mal eine Lösung für das Problem begegnet?

: Bearbeitet durch User
von Marc S. (marc_s86)


Lesenswert?

Das Stichwort SPI bringt dir dabei vermutlich nicht viel, SD Karten 
unterstützen zwar SPI werden aber normalerweise anders angesteuert

von Markus F. (mfro)


Lesenswert?

Marc S. schrieb:
> Das Stichwort SPI bringt dir dabei vermutlich nicht viel, SD Karten
> unterstützen zwar SPI werden aber normalerweise anders angesteuert

Auch der "True SD"-Modus ist im Prinzip nix gross Anderes als 4 x SPI.

Knifflig macht's, dass CRCs Pflicht werden und auch noch "quer" 
berechnet werden müssen.

von Karsten W. (lsmod)


Lesenswert?

Das es knifflig ist hat wahrscheinlich verhindert das eine Lösung 
existiert. ;-)

Zusätzlich scheinen noch viele Informationen rechtlich geschützt zu sein 
und jeder Hersteller braut sein eigenes Süppchen.

Letzten Endes wird so ein Emulator aber nur für ganz spezielle Fälle 
benötigt.
Das Hauptproblem sind Kameras, die verhindern wollen das man die Bilder 
in voller Auflösung automatisch weiterverarbeiten kann.
Die meisten anderen Geräte bieten von vorne herein weitere 
Schnittstellen an um Daten bereit zu stellen.

Eine Lösung mit einer WLAN SD-Karte hat aber leider verschiedene 
Nachteile.
Neben dem Kaufpreis ist diese Lösung für eine einfache Anbindung zu 
umständlich. Die Karten sollen auch leider nicht sonderlich stabil 
funktionieren.

von Frank K. (fchk)


Lesenswert?

Karsten M. schrieb:
> Das es knifflig ist hat wahrscheinlich verhindert das eine Lösung
> existiert. ;-)
>
> Zusätzlich scheinen noch viele Informationen rechtlich geschützt zu sein
> und jeder Hersteller braut sein eigenes Süppchen.

Eigentlich sind alle Informationen öffentlich verfügbar.

Du wirst um ein FPGA nicht herum kommen. Das muss die ganze 
Interfacelogik mit CRC etc implementieren und einem Prozessor 
(Software?) die Datenblöcke in Block RAM Blöcken fertig zur 
Weiterverarbeitung präsentieren müssen.

Nichts anderes passiert ja in echten SD Cards auch. Da steckt meist ein 
kleiner ARM7 oder ein schneller 8051 plus viel Hardwarelogik drin. Diese 
Hardwarelogik wirst Du genauso in Hardware implementieren müssen. Und 
bei einem Einzelstück werden die Kosten so hoch sein, dass eine 
WiFi-SD-Karte dagegen spottbillig ist.

fchk

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wenn ich mich recht erinnere, wurden einige der WLAN-SD-Karten 
"gehackt", d.h. man kann auf dem darin befindlichen ARM-SOC eigene 
Firmware laufen lassen. Das sollte doch eine ausreichende Grundlage für 
weitere Forschungen sein, und es erspart einem das Selbstnachbilden des 
komplexen SD-Card-Interfaces.

Wurde auch schon hier im Forum erwähnt:

Beitrag "Transcend Wi-Fi SD Card - Technische Details / Hacken?"

(willkürlich ausgewählter Link)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Karsten M. schrieb:
> Das Hauptproblem sind Kameras, die verhindern wollen das man die Bilder
> in voller Auflösung automatisch weiterverarbeiten kann.
Man könnte sich einfach andere Kameras kaufen, die das nicht tun...

> Das Hauptproblem sind Kameras, die verhindern wollen das man die Bilder
> in voller Auflösung automatisch weiterverarbeiten kann.
Was würde es bringen, in so einem Fall direkten Zugriff auf die 
SD-Schnittstelle zu haben? Warum sollten die Daten an der 
SD-Schnittstelle noch in "voller" Auflösung da sein?

> Das es knifflig ist hat wahrscheinlich verhindert das eine Lösung
> existiert. ;-)
Es liegt vermutlich eher daran, dass schlicht kein Bedarf da ist.

> Eine Lösung mit einer WLAN SD-Karte hat aber leider verschiedene
> Nachteile. Neben dem Kaufpreis
Wenn dir schon der Preis für 1 WLAN-Karte zu viel ist, dann darfst du 
den Entwicklungsaufwand für diesen "Direktzugriff" nicht in Geld 
umrechnen...

von Karsten W. (lsmod)


Lesenswert?

Ich meine gelesen zu haben das nicht alle SD-Karten CRC nutzen.
Es scheint also nicht verpflichtend zu sein.

Ausserdem scheint so eine Emulation bereits erfolgreich umgesetzt worden 
zu sein.
http://www.thinkmind.org/download.php?articleid=icds_2011_4_30_10048
Es wurde bislang nur noch nie Quellcode dazu veröffentlicht.

: Bearbeitet durch User
von Markus F. (mfro)


Lesenswert?

Karsten M. schrieb:
> Ich meine gelesen zu haben das nicht alle SD-Karten CRC nutzen.

Im SPI Modus (aber der ist hier ja nicht das Thema) ist CRC optional. Im 
True SD Modus nicht. Zumindest nicht nach der Spezifikation.

von Karsten W. (lsmod)


Lesenswert?

Also ist die entscheidende Frage ob und wie ausgehandelt wird wie die 
Übertragung stattfinden muss.
Wenn sich das Gerät auf den SPI-Modus ohne CRC einlässt, wäre es mit 
vertretbarem Aufwand realisierbar.

von aaaaaaaaa (Gast)


Lesenswert?

Soweit ich mich erinnere fahren SD-Karten im SD mode hoch, der Host muss 
sie explizit in den SPI mode schalten. Wenn die Kamera bzw. der Host das 
nicht tut kann man da wenig machen denke ich.

von Karsten W. (lsmod)


Lesenswert?

Dann ist es wirklich sehr schwierig und aufwendig einen SD-Karten 
Emulator zu entwickeln.

Die einfachere Lösung um Daten abzugreifen ist es also einfach auf eine 
SD-Karte schreiben zu lassen und danach die Daten über einen Abgriff der 
Schnittstelle auszulesen.

von Frank K. (fchk)


Lesenswert?

Karsten M. schrieb:
> Also ist die entscheidende Frage ob und wie ausgehandelt wird wie die
> Übertragung stattfinden muss.
> Wenn sich das Gerät auf den SPI-Modus ohne CRC einlässt, wäre es mit
> vertretbarem Aufwand realisierbar.

Lies einfach mal den Standard.

https://www.sdcard.org/downloads/pls/index.html

Dann beantworten sich viele Fragen von selbst.

fchk

von Karsten W. (lsmod)


Lesenswert?

Frank K. schrieb:
> Lies einfach mal den Standard.

Ist wirklich easy und übersichtlich. :-)
Danke für den Link!

Alleine die "Physical Layer Simplified Specifications" hat einen Umfang 
von 202 Seiten.
Der "SD Host Controller Simplified" kommt dann noch mit 157 Seiten 
hinzu.

Das habe ich bestimmt schon heute Abend durch ...

Nun verstehe ich warum die WLAN SD-Karten so beliebt sind. :-)
Ich glaube ich gebe der auch eine Chance ...

: Bearbeitet durch User
von Pandur S. (jetztnicht)


Lesenswert?

>Dann ist es wirklich sehr schwierig und aufwendig einen SD-Karten
Emulator zu entwickeln.

Wenn ich daram denke, dass meine Karten mit 90MByte/s lesen und 
50MByte/s schreiben angeschrieben sind, musst du mit richtig Dampf 
dahinter. Und das kann nur ein FPGA. Dort einen Tracebuffer bauen, und 
diesen an den PC uebertragen. Dh, noch ein Ethernet Interface 
hinzufuegen.

von Peter II (Gast)


Lesenswert?

Oder D. schrieb:
> Wenn ich daram denke, dass meine Karten mit 90MByte/s lesen und
> 50MByte/s schreiben angeschrieben sind, musst du mit richtig Dampf
> dahinter.
man kann sie auch ausbremsen

> Und das kann nur ein FPGA.
SSD haben auch keine FPGA sondern ARM Prozessoren und die beschaffen 
über 500Mbyte/s

von Frank K. (fchk)


Lesenswert?

Peter II schrieb:
> Oder D. schrieb:
>> Wenn ich daram denke, dass meine Karten mit 90MByte/s lesen und
>> 50MByte/s schreiben angeschrieben sind, musst du mit richtig Dampf
>> dahinter.
> man kann sie auch ausbremsen
>
>> Und das kann nur ein FPGA.
> SSD haben auch keine FPGA sondern ARM Prozessoren und die beschaffen
> über 500Mbyte/s

Aber die ARMs werden massiv durch spezialisierte Logik unterstützt, 
sonst ginge das gar nicht. Nur dass das hier aufgrund der Stückzahlen 
ASICs sind und keine FPGAs. FPGAs sind für Massenstückzahlen zu teuer.

fchk

von Falk B. (falk)


Lesenswert?

@ Peter II (Gast)

>> Wenn ich daram denke, dass meine Karten mit 90MByte/s lesen und
>> 50MByte/s schreiben angeschrieben sind, musst du mit richtig Dampf
>> dahinter.
>man kann sie auch ausbremsen

Jain.

>> Und das kann nur ein FPGA.

Eigentlich schon.

>SSD haben auch keine FPGA sondern ARM Prozessoren und die beschaffen
>über 500Mbyte/s

Sagt das der Vertreter von ARM? ;-) Die CPUs machen dort nur den 
Hausmeister für die "langsamen", komplexen Protokollfunktion. Die fette 
Bandbreite rauscht über spezialisierte ASICs, nicht mal FPGAs.

von Karsten W. (lsmod)


Lesenswert?

Peter II schrieb:
> SSD haben auch keine FPGA sondern ARM Prozessoren und die beschaffen
> über 500Mbyte/s

Das wäre evtl. noch ein Ansatz für die Lösung des Problems.

https://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf

Auf S. 65 findet Ihr
1
The External Mass Media Controller (EMMC) is an embedded MultiMedia and SD card interface provided by Arasan.
2
It is compliant to the following standards: 
3
• SD Host Controller Standard Specification Version 3.0 Draft 1.0 
4
• SDIO card specification version 3.0 
5
• SD Memory Card Specification Draft version 3.0 
6
• SD Memory Card Security Specification version 1.01 
7
• MMC Specification version 3.31,4.2 and 4.4

Auf diese Art und Weise wurde das Problem des Anschluss der SD-Karte 
beim Raspi gelöst.
Leider ist bei einem Raspi dieses Interface bereits mit der SD-Karte des 
OS belegt.
Es sieht nicht so aus als ob man den EMMC für eine weitere Karte 
verwenden kann?
Und wenn, dann ist die Frage ob man an die GPIO Pins drann kommt?
Die Benutzung des EMMC ist darüber hinaus immer noch kein Kinderspiel 
...

von Karsten W. (lsmod)


Lesenswert?

Hier noch der Link auf die Webseite der Firma:
http://arasan.com/products/sd-emmc/

Leider scheint es solche Controller nicht "einzeln" zu geben.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Karsten M. schrieb:
> Auf diese Art und Weise wurde das Problem des Anschluss der SD-Karte
> beim Raspi gelöst.

Das ist die Gegenrichtung, also das, was nötig ist, um eine SD-Karte 
anzusteuern. Das hilft aber nicht, wenn man eine SD-Karte nachbilden 
will.

von Karsten W. (lsmod)


Lesenswert?

Stimmt - peinlicherweise. :-)
Ich wollte in erster Linie aufzeigen das das Interface-Problem sogar bei 
Broadcom bzw. ARM durch eingekaufte Hardware/Firmware gelöst wurde.

Tja - damit bleibt es dann dabei - das Thema bleibt von der Umsetzung 
her bei den Herstellern der SD-Karten.
Spezielle Hardware, geschützte Firmware, etc ...

Es gibt einfach nicht genügend Anwendungsfälle damit sich jemand die 
Arbeit macht hunderte Seiten von Spezifikationen in Opensource zu 
giessen.

von Karsten W. (lsmod)


Lesenswert?

Hier noch ein weiterer Tip aus einem anderen Forum:
http://webpages.uncc.edu/~jmconrad/ECGR6185-2008-01/notes/SD_CARD_DISPLAY_MICROCONTROLLER.pdf

Basis ist hier ein LM3S811 Cortex-M3 Prozessor.


Auf S. 8 steht
1
SDMCs can be operated using a standard SPI ,so for SDMC replica SSI is used in SPI mode.

Wenn dies auf verschiedenen Geräten funktioniert hat, dann ist es 
vielleicht doch möglich den Geräten die SPI Schnittstelle aufzuzwingen?

In der beschriebenen Implementierung reicht es natürlich wenn nur die 
Lese-Befehle umgesetzt worden sind.

: Bearbeitet durch User
von Karsten W. (lsmod)


Lesenswert?

Ich habe mir jetzt aus Neugierde so eine WLAN SD-Karte zugelegt.
www.ezshare.com. cn /bgw032052/english/product.asp?Category_id=8

Nun - sie funktioniert so lala wie erwartet.
Offensichtlich ist sie in erster Linie für Benutzer von Android und 
Apple-Produkten ausgelegt, die hiermit ihre Bilder herunterladen wollen.

Wenn man von einem PC auf die WLAN-SD-Karte zugreift, ist dies äußerst 
schleppend und nicht sehr befriedigend.
Bilder können nur herunter geladen, aber nicht gelöscht werden.

Weitere Probleme kommen dadurch zu Stande, das die Kamera im Test nach 
einiger Zeit die Stromversorgung der SD-Karte abstellt um Strom zu 
sparen.
Damit ist ein automatischer Zugriff auf die Daten nicht mehr problemlos 
möglich.

Ich konnte noch herausfinden das die Karte auf dem FTP und SSH Port 
lauscht, aber bislang konnte ich keine gültige Kombination aus 
User/Passwort finden die für einen Zugriff funktioniert.
Also habe ich Mal Dr. Bu vom Hersteller gefragt - vielleicht bekomme ich 
ja eine Antwort ... :-)

Eine WLAN SD-Karte ist also nicht die Antwort auf die Frage wie man den 
Zugriff auf die Bilder löst.
Da hilft wohl doch nur alle Signalleitungen der SD-Karte anzuzapfen und 
die Karte selber auszulesen.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

@ Karsten M. (lsmod)

>Nun - sie funktioniert so lala wie erwartet.
>Offensichtlich ist sie in erster Linie für Benutzer von Android und
>Apple-Produkten ausgelegt, die hiermit ihre Bilder herunterladen wollen.

War zu erwarten.
>Eine WLAN SD-Karte ist also nicht die Antwort auf die Frage wie man den
>Zugriff auf die Bilder löst.
>Da hilft wohl doch nur alle Signalleitungen der SD-Karte anzuzapfen und
>die Karte selber auszulesen.

Fast. Man muss den Datenverkehr mitschreiben und danach offline 
anlysieren. Viel Spaß dabei. Mit etwas Glück gibt es schon einen 
Logicanalyzer oder ein Mixed Signal Oszi, das einen passenden 
Datenstromanalysator drin hat. Sowas gibt es auf jeden Fall für RS232, 
I2C, SPI, CAN etc.

von Arc N. (arc)


Lesenswert?

Rufus Τ. F. schrieb:
> Karsten M. schrieb:
>> Auf diese Art und Weise wurde das Problem des Anschluss der SD-Karte
>> beim Raspi gelöst.
>
> Das ist die Gegenrichtung, also das, was nötig ist, um eine SD-Karte
> anzusteuern. Das hilft aber nicht, wenn man eine SD-Karte nachbilden
> will.

Die verkaufen auch das IP für die Gegenrichtung
http://arasan.com/products/sd-emmc/emmc-4-5-device/

Hyperstone hat SD-Devices/NAND-Controller-ICs im Angebot z.B.
https://www.hyperstone.com/de/S8-SD-eMMC-Flash-Memory-Controller-266,399.html
oder auch Alcor oder Phison

Hilft aber beim ursprünglichen Problem auch nicht wirklich weiter

Karsten M. schrieb:
> Es gibt einfach nicht genügend Anwendungsfälle damit sich jemand die
> Arbeit macht hunderte Seiten von Spezifikationen in Opensource zu
> giessen.

http://opencores.org/project,sdcard_mass_storage_controller
Keine Ahnung wie viel da von der SD-Karte dabei ist: "The design also 
include a simplified model of a SD-card to test against."

von Karsten W. (lsmod)


Lesenswert?

Falk B. schrieb:
> Fast. Man muss den Datenverkehr mitschreiben und danach offline
> anlysieren. Viel Spaß dabei.

Du hast mich hier falsch verstanden.
Wie bei dem WLAN-SD-Adapter wird einfach eine SD-Karte verwendet, auf 
die ganz normal geschrieben wird und erst danach die Daten ausgelesen.
Statt dem Controller mit WLAN-Gedöns wird die SD-Karte einfach parallel 
an den Signalleitungen angezapft und ausgelesen.
Dafür gibt es genügend fertige Routinen für AVR und Raspi.

Arc N. schrieb:
> Die verkaufen auch das IP für die Gegenrichtung
> http://arasan.com/products/sd-emmc/emmc-4-5-device/

Das wäre schon interessant.
Leider bekommt man die Controller wohl kaum zu kaufen, kontaktiert und 
programmiert.
Der Gesamtaufwand ist einfach zu hoch im Vergleich den anderen Weg zu 
gehen.

: Bearbeitet durch User
von bernd (Gast)


Lesenswert?

Mich interessiert das Thema, um einen SONY Digitalen Bilderrahmen als 
LCD zu verwenden, für den weiter keine Unterlagen beschaffbar zu sein 
schheinen.
1 neuer Frame alle paar Sekunden wäre schon schnell genug...

Berndchen

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.