Forum: Mikrocontroller und Digitale Elektronik SD-Karte als Speicher


von Mikrotron (Gast)


Lesenswert?

Hallo zusammen
Mal kurz eine Frage könnte ich den SRAM Speicher eines Mikrocontrollers 
mit Hilfe von einer SD-Karte erweitern somit einen Teil der Karte 
freigeben. Und den anderen Teil als normaler Speicher benutzen?

von Stefan F. (Gast)


Lesenswert?

Nein, nicht einmal Ansatzweise.

von S. R. (svenska)


Lesenswert?

Das nennt man Auslagerungsspeicher, bzw. "swap space".
Ein kleiner Mikrocontroller ohne MMU kann das nicht.

Du kannst das möglicherweise in deiner Anwendung selbst implementieren. 
Hängt von der Anwendung ab, ob das bei dir geht, weiß ich nicht. 
Automatisch geht es jedenfalls nicht, weil keine MMU und kein 
Betriebssystem.

Ein größeres System (z.B. ein Raspberry Pi oder normaler Computer) kann 
das mit Hilfe des Betriebssystems. Damit machst du aber in erster Linie 
die SD-Karte kaputt.

: Bearbeitet durch User
von Fitzebutze (Gast)


Lesenswert?

Programme oder andere nur-Lesen-Daten lassen sich - je nach uC - mit 
mehr oder weniger Aufwand in eine Trampolin-Funktion schon von SD-Karte 
ausführen. Kann schon ein 8051-Kern und der sdcc. Bei den komplexeren 
CPUs hat man dann eher einen Exception-Handler parat, der bei Zugriff 
auf die 'overlay'-Adresse den Code nachlädt, der positionsunabhängig 
sein sollte bzw. entsprechend reloziert werden muss. Je nach Architektur 
nicht so ganz easy.

von Markus F. (mfro)


Lesenswert?

Richtig - das ist früher schon gegangen (Overlays) und geht immer noch. 
Ein Teil des Programmes (idealerweise der mit den 
SD-Karte-Lesefunktionen ;) ) verbleibt im Speicher und lädt bei Bedarf 
Overlays nach.

Von alleine geht das aber nicht - man ist eher auf sich allein gestellt.

von Jim M. (turboj)


Lesenswert?

Verstehendes Lesen? OP hat nach RAM und nicht ROM gefragt.

Ins RAM packt man die Daten aber nur sehr selten Programmcode eines µC.

Wenn einem bei µCs der RAM ausgeht, nimmt man das nächstgrößere 
(passende) Modell aus der Serie.

Wenn es keins gibt hat man Pech und muss externen SRAM dranfummeln oder 
die µC Serie wechseln (->Portierungsaufwand). Richtig dicke µC (wie der 
vom Teensy 4.0) haben Support für SDRAM.

von c-hater (Gast)


Lesenswert?

Mikrotron schrieb:

> Mal kurz eine Frage könnte ich den SRAM Speicher eines Mikrocontrollers
> mit Hilfe von einer SD-Karte erweitern somit einen Teil der Karte
> freigeben. Und den anderen Teil als normaler Speicher benutzen?

Prinzipiell schon, ist aber nicht empfehlenswert. SD-Karten sind dafür 
nicht wirklich geeignet. Sie gehen bei dieser Art der Nutzung sehr 
schnell kaputt.

von Joachim B. (jar)


Lesenswert?

Jim M. schrieb:
> Verstehendes Lesen? OP hat nach RAM und nicht ROM gefragt.

trotzdem ginge das, Daten im ROM genauer im Progmem die man temporär ins 
RAM lädt, malloc free.
Ich weiss gerade nicht welche gängigen µC stack Manipulation erlauben, 
aber möglich wäre es bei schrumpfenden stack das auch mal auszulagern 
auf die SD, aber wie geschrieben wurde:

c-hater schrieb:
> Sie gehen bei dieser Art der Nutzung sehr
> schnell kaputt.

von S. R. (svenska)


Lesenswert?

Markus F. schrieb:
> Richtig - das ist früher schon gegangen (Overlays)
> und geht immer noch.

Architekturabhängig. Beispielsweise kann ein AVR keinen Code vom RAM 
ausführen, also auch keinen Code von SD-Karte nachladen und ausführen.

Im Übrigen geht es bei RAM hauptsächlich um lesen und schreiben. Das 
ist für eine SD-Karte eher ungeeignet, zumal ein kleiner µC sicherlich 
keine ganzen Erase-Blöcke auf einmal verarbeitet.

Es bleibt bei meiner Aussage ganz oben (2. Antwort): Entweder, das 
Betriebssystem kann das schon (dann macht man sich auf Dauer die 
SD-Karte kaputt), oder es lässt sich möglicherweise in die Anwendung 
einbinden (stark anwendungs- und umgebungsabhängig, und macht 
möglicherweise trotzdem die SD-Karte kaputt).

Viel Spaß beim in Details abgleiten.

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

S. R. schrieb:
> Architekturabhängig. Beispielsweise kann ein AVR keinen Code vom RAM
> ausführen, also auch keinen Code von SD-Karte nachladen und ausführen.

Ein Ansatz wäre noch ein Bytecode-Interpreter. Der würde auch auf einem 
AVR ein Programm von SD-Karte ablaufen lassen.

von Fitzebutze (Gast)


Lesenswert?

Jim M. schrieb:
> Verstehendes Lesen? OP hat nach RAM und nicht ROM gefragt.
>

Ich lese SRAM. Was für Daten da reinsollen, sagt der TO nicht. 
Vielleicht mal praktisch denken?

> Ins RAM packt man die Daten aber nur sehr selten Programmcode eines µC.
>

Dazu gibt es zig Gegenbeispiele.

>
> Wenn es keins gibt hat man Pech und muss externen SRAM dranfummeln oder
> die µC Serie wechseln (->Portierungsaufwand). Richtig dicke µC (wie der
> vom Teensy 4.0) haben Support für SDRAM.

Ich glaube, der TO wäre auch noch selber drauf gekommen, einen grösseren 
Prozessor zu verwenden.

von c-hater (Gast)


Lesenswert?

S. R. schrieb:

> Architekturabhängig. Beispielsweise kann ein AVR keinen Code vom RAM
> ausführen, also auch keinen Code von SD-Karte nachladen und ausführen.

Doch, klar könnte er das. Selfprogramming existiert.

Aber: Bei dieser Nutzung dann ist halt statt der SD-Karte der µC-Flash 
schnell kaputt. Der ist für solche Art der Nutzung genausowenig gedacht, 
wie eine SD-Card als VRAM.

von Markus F. (mfro)


Lesenswert?

Cool, wie hier immer gleich bei jedem 2. Beitrag die kollektive Empörung 
ausbricht und es jeder besser (und ganz genau) weiss. Schön, von so 
vielen (Ober-?) schlauen Leuten umgeben zu sein.

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.