Oftmals ist eine aufwendige Speicherverwaltung nicht erforderlich, die z.B. auf Grund von Verkettungen repariert werden kann. In diesem Fall reicht eine einfache Speicherverwaltung mit einem Minimum an Overhead von Verwaltungs-informationen aus. Der hier vorgestellte Heap-Manager benötigt bei der Verwaltung von <=64kB 3bytes und bis 4GB 5bytes Overhead je Eintrag. Desweiteren kann er RAM und EE-PROM parallel verwalten und stellt für den EE-PROM Speicher über das Port HW-unabhängige Zugriffswerkzeuge zur Verfügung.

Speicherbedarf des pC/MEM V1.30a:

ROM: ca. 3 kByte (ohne MEM_Resize ca. 1kByte)
RAM: ca. 1 Byte je User (für MEM_GetErrno)


Es sind aber derzeit keine MMU Mechanismen hinterlegt. Dazu wären weitere MMU-abhängige Daten je Eintrag notwendig.


pCTFS_235a.zip

Sorry, auf Grund von Überschneidungen mit meinem Job kann ich diese Sourcen nicht zugänglich machen !


Releases:

1.00a

erste alpa-Release

1.04b

Kleine Korrekturen in MEM_Init. Komplette Code-Optimierung und Anpassungen für die Portierbarkeit.

1.10a

MEM_GetErrNo implementiert. Kleine Korrektur in MEM_Resize.

1.20c

MEM_CleanUp implementiert und Integration der notwendigen Taskregistrierung in die Einträge.

1.30a

Komplettes Update zu U08..U32 Typen.
Bessere Portabilität für RTOS-lose Verwendung implementiert.



Dienste des pC/MEM Version 1.30a (Kurzform)

Die hier aufgeführte Funktionsübersicht dient einzig als Kurzübersicht.
Für detailierte Informationen sehen Sie bitte in Referenz-Manual zu pC/MEM nach.


Memory-Manager:

 

MEM_Init

Initialisierung des Heap-Managers

MEM_Alloc

Allokieren von Speicher

MEM_Free

Freigeben eines allokierten Speichers

MEM_Resize

Größe von allokiertem Speicher ändern

Heap_Write_EE

auf allokiertem EEPROM-Heap schreiben

Heap_Fill_EE

allokierten EEPROM-Heap füllen

optional

 

MEM_CleanUp

Freigeben aller von einen Task allokiertem Speicherelemente


Error-Codes:

Name

Decimal_Value

MEM_NO_ERR

0

MEM_WR_PTR

120

MEM_OVF

121

MEM_ERR

122


Types of Memory:

Name

HEX_Value

MEM_RAM

0x00

MEM_EE

0x01