Docu zu Memory Managern für Controller

Hi!

Ich bin auf der Suche nach verständlicher Doku in DE/EN zu Memory-Managern. Für vereschiedene Microcontroller, die ich häufiger einsetze, möchte ich mir gerne eine Library stricken, darunter auch einfache Memory-Management Funktionen für Chips, die keinen solchen als Hardware haben. Es geht um simple Dinge wie allozieren/freigeben von Speicher in beliebiger Größe, Überwachung von Übereschneidungen und natürlich auch einem Garbagecollector. Da in den meisten Anwendungsfällen kein (Multitasking-) Kernel zum Einsatz kommt, und die Rechenzeit knapp ist, wäre es schick, wenn die dargestellten Systeme das Garbage Collecting nicht direkt in der Speicher Freigabe machen würden, sondern eben in einer eigenen Routine, die dann zentral bei wenige Last aufgerufen werden könnte. Hat jemand Links, die solche Funktionen im Prinzip oder anhand von Beispielen dokumentieren und erklären? Klar kann ich mich auch durch diese Funktionen in einem aktuellen Linux Kernel quälen, aber ich suche was vereständliches und vor allem auch in Projekten umsetzbares, deren ROM und RAM nicht unbedingt der Ausstattung eines PCs entsprechen.

Danke schon mal für alle Tips und Links

Gruß, Ulrich

Reply to
Ulrich Prinz
Loading thread data ...

Ulrich Prinzschrieb: "

Also mir ist kein System auf Controllern bekannt, dass echte dynamische Speicherverwaltung machen würde. Die Zeiten mit wenig Last sind für den Softwareentwickler nicht unbedingt genau vorraussehbar. Das Problem mit der Fragmentierung ist wohl so einfach nicht beherschbar (s. DOS -> WinXP) und da sind in der Regel mehr Ressourcen als auf einen Microcontroller-System. Kleine Betriebssysteme für Microcontroller bieten daher die Möglichkeit so genannte memory-Partitions (mit fester Blockgröße) einzurichten. Darüber wird dann malloc() und free() abgebildet. Diese memory-Partitions werden dann in einer Liste verwaltet. Wenn kein Block mehr frei ist, dann wird über eine counting Semaphore der Task eingeschläfert. Ist zumindest bei embOS und µCosII so. Sourcen dafür sind leider nicht öffentlich, wenn man aber intensiv sucht, dann kann man schon was finden.

Tschö Dirk

Reply to
Dirk Ruth

...

Hi Dirk!

Soweit habe ich das auch schon herausgefunden. Semaphoren wollte ich umgehen, wie gesagt ein Kernel ist i.d.R. nicht vorhanden, aber genug RAM um gleich ganze Sektoren zu bilden habe ich auch nicht unbedingt übrig. Bei mir ist es aber eher umgekehrt, ich kann genau sagen, wie viel Zeit ich in der Hauptschleife einem Memory Manager zur Verfügung stellen kann, abere nicht, wie viel Speicher die Untereteile meiner Software gerade benötigen.

Andererseits, wo gibt es mal eine übersichtliche Seite zu kleinen, also wirklich kleinen Kerneln mit flat-memory-model, also für Proze wie ARM, RISC-X und so weiter, die mit wenigen kByte auskommen?. Wäre ja auch ein interessanter Angang. Ich hab hier z.B. einen 127MHz RISC-X laufen, der mit einem kleinen Kernel sicherlich auch gut zurecht käme. Leider ist für RISC-X nahezu nix open-sourciges zu finden.

Gruß, Ulrich

Reply to
Ulrich Prinz

Ulrich Prinzschrieb: "

Du könntest alle Memory-Blöcke auch in einer Liste verwalten. Da müste die Doku für die FAT was hergeben. Die macht doch nichts anderes.

Da gibt's schon einiges. Nur je weniger Speicher, um so weniger Funktionalität. Schau mal unter

formatting link
-> Products -> µC/OS-II ->

µC/OS-II -> Ports. Auf allen Ports läuft IMHO die gleiche Funktionalität. Ist schon beindruckend, was da möglich ist. Hat man einmal damit gearbeitet, dann will man's nicht mehr missen.

Auch kann man sich bei

formatting link
embOSTrial version herunterladen. Damit kann man ein paar Task starten. Sourcen muss man aber auch kaufen.

Open-sourciges kenn ich da leider auch nicht, aber ein Port für µC/OS-II ist recht einfach. Es gibt für relativ wenig Geld eine ältere Version von µC/OS-II mit einem Buch zu kaufen. Da ist dann der Source mit dabei.

Dirk

Reply to
Dirk Ruth

"Ulrich Prinz" schrieb im Newsbeitrag news:d68num$gv3$05$ snipped-for-privacy@news.t-online.com...

Schau mal hier:

formatting link

Vieleicht findest Du da eine Anregung. Ansonsten kannst Du ja einen Port anfangen :)

Gruß, Christian

Reply to
Christian Karsten

Hallo Christian!

Danke das sieht schon mal gut aus. Scheint so klein zu sein, dass der Quelltext noch lesbar ist.

Gruß, Ulrich

Reply to
Ulrich Prinz

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.