Herunterladen Inhalt Inhalt Diese Seite drucken

Siemens RMOS3 Bedienungsanleitung Seite 73

Echtzeit-betriebssystem rmos3 rmos3 v3.50 benutzerhandbuch
Inhaltsverzeichnis
Page Fault Exception
Ein Schreibzugriff auf Speicherbereiche, die für den jeweiligen Privileglevel nur lesbar sind,
führt zu einer Page Fault Exception. Eine Fehleranalyse ist mit den GNU-Tools möglich.
NULL-Zeiger
Zugriffe im untersten 4k-Bereich sind auf PL3 grundsätzlich nicht möglich. Ein Zugriff auf
einen nicht initialisierten Zeiger führt deshalb zu einer Page Fault Exception. Auf PL0 kann
auf den untersten 4k-Bereich lesend zugegriffen werden.
User Stacks
Jede Anwenderapplikation benötigt einen User Stack. User Stacks werden aus dem
normalen Heap allokiert und sind dort Read-Only. Die Stack-Seiten werden zusätzlich mit
Read/Write-Attribut in einen höheren linearen Speicherbereich abgebildet. Die Seiten vor
und nach einem Stack sind gesperrt (guarded pages, jeweils 4kByte groß). Dadurch wird bei
einem Stacküberlauf oder Stackunterlauf eine Page Fault Exception ausgelöst. Geht der
Zugriff allerdings über die gesperrte Seite hinaus auf einen gültigen Stack einer anderen
Task, kann der fehlerhafte Zugriff nicht erkannt werden.
Jedes Anwenderprogramm hat einen User Stack und einen System Stack. Der angeforderte
Speicher wird beim User Stack auf 4k aufgerundet. Der System Stack ist immer 3072 Bytes
(0x0c00) groß und wird während der Bearbeitung von Betriebssystemaufrufen verwendet.
Für den Anwender ist nur der User Stack sichtbar. Der User Stack kann für Segmentierte
und Flat Anwendungen (siehe RMOS3-GNU Beschreibung) eingestellt werden.
User Stacks müssen mit
RM_STACKALLOC
Ein mit
Bestehende Programme
Bestehende Anwenderprogramme im segmentierten und Flat-Speichermodell können
unverändert ablaufen. Einschränkungen siehe unten.
Zugriff auf physikalischen Speicher
Beim Zugriff auf physikalischen Speicher muss bei GNU und CAD-UL der Speicher mit
RmMapMemory
Exception. Der Aufruf
Der Speicherbereich von 0xB8000 bis 0xBBFFF wird vom System als R/W-Speicherbereich
freigegeben. Ebenso ist der gesamte Speicherbereich von 0xC0000 bis 0xEFFFF für
Zugriffe auf Baugruppen freigegeben.
Der PCI Shared Interrupt Server schaltet alle Adressbereiche der PCI-Karten automatisch
frei.
Zur Freischaltung der Speicherbereiche von ISA-Karten steht das Programm MAPMEM zur
Verfügung (siehe Referenzhandbuch Teil 1, Kapitel 2.2.20).
Der konfigurierbare Nukleus gibt die Adressbereiche der konfigurierten Baugruppen
automatisch frei.
RMOS3 V3.50 Benutzerhandbuch
Bedienhandbuch, 07/2012, A5E03692290-01
RmCreateTask
erzeugt werden.
allokierter Speicher, der als Stack benutzt wird, ist nicht geschützt!
malloc
als beschreibbar freigegeben werden. Sonst erhält man eine Page Fault
RmCreateDescriptor
Betriebssystem-Eigenschaften von RMOS3
und
bzw.
RmAlloc
RmMemPoolAlloc
reicht unter CAD-UL nicht aus.
8.1 Speicherschutz
mit Parameter
73
Inhaltsverzeichnis
loading

Inhaltsverzeichnis