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?
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.