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.
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. |
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 |