ARM-OS-Dev Teil 7 – Physische Speicherverwaltung

Aus Lowlevel
Wechseln zu: Navigation, Suche
« ARM-OS-Dev Teil 6 – Multitasking Navigation ARM-OS-Dev Teil 8 – Ein erstes Programm »

Die Verwaltung des physischen Speichers ist im Grunde genommen plattformunabhängig, daher kann im Großen und Ganzen für dieses Thema auf die x86-Reihe verwiesen werden. Unterschiede gibt es lediglich bei der Initialisierung der Speicherverwaltung.

Initialisierung

Zunächst einmal kann man zwar wieder eine Bitmap mit 1M Bits erstellen, muss es aber nicht. Denn im Unterschied zur x86-Plattform ist die Speicheraufteilung auf I/CP-Boards ziemlich genau festgelegt: Es gibt 128 MB Speicher, von denen das erste Megabyte Mappings des Flashspeichers enthält. Somit brauchen wir keine Bitmap, die 4 GB verwalten kann, sondern nur eine für ein Zweiunddreißigstel (128 MB), also können wir BITMAP_SIZE hier als 1024 definieren.

Im Unterschied zu x86 haben wir auch keinen Bootloader, der uns eine Art Karte des physischen Speichers übergibt. Dafür kennen wir die Aufteilung auch so ganz genau – wie gerade beschrieben können wir den gesamten Speicher nach dem ersten Megabyte frei nutzen. Die pmm_init-Funktion braucht also nichts zu tun, als alle Einträge ab 0x00100000 als frei zu kennzeichnen.

Weitere Quellen

Der fertige Code für diesen Teil des Tutorials befindet sich hier.