Hhuhu, hab mal ne Frage, und zwar wie läuft das eigentlich mit der Speicherverwaltung in einem uc?? wie sorgt da die MMU dafür, dass die Daten in den ram geladen werden können. Kann die MMU auch daten auf den flash auslagern? woher weis ich, ob mein ram voll ist, wenn ich nicht per mallok alloziiere sondern statisch speicher reserviere? Konkretes Beispiel, ich will einfach nur 512 bytes von einer SD Card lesen. mit 4kbyte ram (mega128) sollte das ja kein problem sein. aber wo ist da schluss, heist das ich kann maximal dateien der Größe 4k in den ram legen?? Danke schonmal und Gruß
Ein kleiner Mikrocontroller hat keine MMU. Lies mal ein Datenblatt eines AVR zum Beispiel. Ja wenn das RAM voll ist ist Schluss.
hm und wie funktioniert dann die Speicherverwaltung?? ich meine alloziieren und freigeben von Speicher zur Laufzeit? ohne das da nen Betriebssystem drauf ist oder ne mmu.
Eine kleine Library, resp etwas Code und ein paar Variablen. Es wird beim Startup ueber die Konfiguration dem Heap eine gewisse Groesse zugewiesen, und eine verkettete Liste haelt die Pointer auf die einzelnen Bloecke.
Das wird nicht vom uC verwaltet sondern vom Programm. Wenn avr-gcc verwendest, dann kümmern sich deren Funktionen um die Speicherverwaltung. Es wird dabei einfach irgendein freies Register für den Breakpointer und irgendein anderes für den Stackpointer verwendet. Dynamischer Speicher (malloc) verwendet den brk-pointer und wird vermutlich einfach mit einer doppelt verketteten Liste bewerkstelligt.
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.