Herunterladen Inhalt Inhalt Diese Seite drucken

Nachträgliches Schützen Und Konvertieren Von Nichtindizierten Unterprogrammen - Scanlab RTC 5 Installation Und Inbetriebnahme

Inhaltsverzeichnis

Werbung

Bedingte Aufrufe
Damit das Aufrufen von Unterprogrammen
("normale" Aufrufe und "AbsCalls") auch von
externen Steuersignalen abhängig gemacht werden
kann, gibt es die Möglichkeit, mit zusätzlichen
Befehlen bedingte Verzweigungen in den Programm-
ablauf einzubauen (siehe
führung", Seite
236).
Aufrufe mit wiederholter Ausführung
Mit den Befehlen
sub_call_repeat
sub_call_abs_repeat
kann der Rumpf des Unterpro-
gramms automatisch wiederholt ausgeführt werden.
Nachträgliches Schützen und Konvertieren
von nichtindizierten Unterprogrammen
Nichtindizierte Unterprogramme können (direkt) nur
in einen Listenbereich ("Liste 1" oder "Liste 2"), also
nicht in den geschützten Speicherbereich ("Liste 3")
geschrieben werden. Prinzipiell gibt es aber zwei
Methoden sie nachträglich zu schützen:
(1) Änderung der Konfiguration:
Der Speicherbereich des Listenbereichs, in den
das nichtindizierte Unterprogramm geschrieben
wurde (und sofern dieser auch im oberen Bereich
des Speichers liegt), wird mit dem config_list-
Befehl dem geschützten Speicherbereich zuge-
ordnet. Das auf diese Weise nachträglich
geschützte Unterprogramm ist weiterhin ein
nichtindiziertes Unterprogramm (mit unverän-
derter Speicheradresse) und kann nach wie vor
mit dem list_call-Befehl aufgerufen werden.
Damit nichtindizierte Unterprogramme auf diese
Weise auch in den obersten Bereich des Listen-
speichers gebracht werden können, müssen die
entsprechenden Speicherbereiche gegebenenfalls
vor dem Laden des nichtindizierten Unterpro-
gramms mit
config_list
Listenbereich zugeordnet werden.
(2) Konvertieren in indizierte Unterprogramme:
Mit dem set_sub_pointer-Befehl wird ein nicht-
indiziertes Unterprogramm referenziert (d.h. dem
nichtindizierten Unterprogramm wird ein Index
zugewiesen und es wird mit in die Speicherver-
waltung der indizierten Unterprogramme aufge-
nommen). Mit
save_disk/load_disk
anschließend als indiziertes Unterprogramm in
den geschützten Speicherbereich ("Liste 3")
kopiert werden (mit
save_disk
tisch alle indizierte Unterprogramme und alle
über
set_sub_pointer
®
®
RTC
5 PCI-Karte, RTC
5 PCI-Express-Karte, RTC
Rev. 1.10 d
6 Programmierung von Anwenderprogrammen
"Bedingte Befehlsaus-
und
vorübergehend dem
kann es
werden automa-
nachträglich referenzierte
®
5 PC/104-Plus-Karte, RTC
nichtindizierte Unterprogramme in Indexreihen-
folge binär auf einen PC-Datenträger gespeichert
und mit
load_disk
von dort wieder in den
geschützten Speicherbereich geschrieben). Bei
einem nachfolgenden Aufruf über den Index mit
sub_call
wird dann nicht das Original, sondern
die Kopie im geschützten Speicherbereich
gestartet.
Falls ein nichtindiziertes Unterprogramm – sei es nach
Methode 1 oder nach Methode 2 – nachträglich
geschützt werden soll, so muss beachtet werden,
dass absolute Sprünge in den geschützten Speicher-
bereich und aus dem geschützten Speicherbereich
heraus verboten sind (siehe
Bei der Konvertierung in indizierte Unterprogramme
(Methode 2) müssen alle Programmierregeln für indi-
zierte Unterprogramme beachtet werden (siehe
Seite
82).
Wenden Sie möglichst immer nur eine der beiden
Methoden an, um zu vermeiden, dass es zu einem
unbeabsichtigten Datenverlust im geschützten
Speicherbereich durch Überschreiben kommt. Wenn
Sie zu Beginn nur mit Methode 1 arbeiten, aber zu
einem späteren Zeitpunkt auch indizierte Unterpro-
gramme verwenden wollen, dann sollten Sie deshalb
alle evtl. im geschützten Speicherbereich befind-
lichen nichtindizierten Unterprogramme mit
Methode 2 in indizierte Unterprogramme konver-
tieren, bevor mit dem load_sub-Befehl das erste indi-
zierte Unterprogramm definiert wird.
Beachten Sie hierzu auch die folgenden Hinweise:
• Wird bei Methode 1 ein Teil des geschützten
Speicherbereichs zum Überschreiben entschützt,
so riskiert man dabei, dass indizierte Unterpro-
gramme oder bereits zuvor geschützte Unterpro-
gramme überschrieben werden, die noch
benötigt werden.
• Nachträglich nach Methode 1 geschützte nicht-
indizierte Unterprogramme werden u.U. durch
einen nachfolgenden load_sub- oder load_disk-
Befehl unbeabsichtigt überschrieben.
• Der set_sub_pointer-Befehl verknüpft den
angegebenen Index auch dann mit der angege-
benen Startadresse, wenn zuvor bereits ein
indiziertes Unterprogramm für diesen Index
definiert wurde. Das ursprünglich so indizierte
Unterprogramm ist dann nicht mehr referenziert
und kann nicht mehr über Index aufgerufen
werden.
®
5 PCIe/104-Karte
"Sprünge", Seite
88).
83

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis