Herunterladen Inhalt Inhalt Diese Seite drucken

Listen-Handling; Listen Laden; Unbedingtes" Laden; Laden Mit Schutzfunktion - Scanlab RTC 5 Installation Und Inbetriebnahme

Inhaltsverzeichnis

Werbung

6.4 Listen-Handling

Die beiden Listenbereiche ("Liste 1" und "Liste 2")
dienen als Zwischenspeicher für ein kontinuierliches
Laden und Abarbeiten von Listenbefehlen. In diesem
Kapitel werden die Befehle beschrieben, mit denen
dieser Datentransfer gesteuert wird.

6.4.1 Listen laden

Listen werden mit den Befehlen set_start_list_pos,
load_list
oder weiteren Kontrollbefehlen (siehe
unten) zum Beschreiben mit Listenbefehlen
freigegeben. Dabei wird für die ausgewählte Liste ein
Input-Pointer definiert, an den die nachfolgenden
Listenbefehle übergeben werden.
Listen sind in sich geschlossene Blöcke von Speicher-
plätzen für Listenbefehle, d.h. wird beim Laden einer
Liste das Ende der Liste erreicht und der Input-Pointer
nicht auf die jeweils andere Liste gesetzt, so wird der
Input-Pointer automatisch auf den Anfang der aktu-
ellen Liste zurückgesetzt und das Laden wird dort
fortgesetzt. Es erfolgt niemals ein automatischer
Wechsel des Input-Pointers in eine andere Liste,
insbesondere nicht in den geschützten Speicherbe-
reich ("Liste 3").
Prinzipiell werden beim Laden von Listenbefehlen auf
die Listenspeicherplätze die dort zuvor gespeicherten
Listenbefehle überschrieben, auch wenn diese noch
nicht abgearbeitet und sogar wenn sie momentan
ausgeführt werden. Man sollte sich vergewissern,
dass keine Befehle überschrieben werden, die noch in
der Anwendung gebraucht werden (s.u.).
Der PCI-Transfer der Listenbefehle in den Listen-
speicher ist gepuffert, um die Geschwindigkeit für
einen kontinuierlichen Download zu erhöhen. Der
Puffer ist 16 Befehle groß.
Immer wenn der Puffer voll ist oder wenn die Befehle
set_end_of_list, list_return,
(und verwandte Befehle),
verwandte Befehle), auto_change,
auto_change_pos,
start_loop
erteilt werden, wird automatisch ein Flush ausge-
führt, damit die gepufferten Listenbefehle in den
Listenspeicher transferiert werden. Mit
set_input_pointer(get_input_pointer()) kann zu
jeder Zeit auch für einen unfertigen Puffer ein Flush
initiiert werden. Dies ist aber u.U. nur dann erfor-
derlich, wenn Listenbefehle abgearbeitet werden
sollen und die Listeneingabe noch nicht abge-
schlossen ist (z.B. bei einem externen Start).
®
®
RTC
5 PCI-Karte, RTC
5 PCI-Express-Karte, RTC
Rev. 1.10 d
6 Programmierung von Anwenderprogrammen
set_input_pointer
execute_list_pos
(und
oder
release_rtc
®
5 PC/104-Plus-Karte, RTC

"Unbedingtes" Laden

Durch den Befehl set_start_list(_1/_2) wird der
Input-Pointer an den Anfang der ausgewählten Liste
und durch die Befehle
set_start_list_pos
set_input_pointer
an die spezifizierte Adresse der
ausgewählten Liste gesetzt. Der jeweils nächste
Listenbefehl wird – unabhängig vom aktuellen Status
der ausgewählten Liste (siehe
Seite
76) – an diese Adresse geschrieben.
Bei Bedarf können zuvor mit den Befehlen
get_input_pointer
oder
get_list_pointer
get_status
oder
get_out_pointer
tionen von Input- und Output-Pointer ausgelesen
werden, z.B. um sicherzustellen, dass keine Listenbe-
fehle überschrieben werden, die noch nicht abgear-
beitet sind.

Laden mit Schutzfunktion

Durch den Befehl
load_list
Initiierung des Lade-Vorgangs wie beim
set_start_list_pos-Befehl an die spezifizierte Adresse
der ausgewählten Liste gesetzt, allerdings nur dann,
wenn die ausgewählte Liste nicht aktuell in
Verwendung ist. Alternativ kann man den Input-
Pointer mit
load_list
auch einfach in eine gerade
nicht aktive bzw. bereits abgearbeitete Liste setzen
lassen (die jeweils geeignete Liste wird dabei von der
®
RTC
5 automatisch ermittelt).
Der Returnwert des load_list-Befehls gibt zusätzlich
darüber Auskunft, ob bzw. in welcher Liste ein Lade-
Vorgang erfolgreich initiiert wurde. Andernfalls wird
der Input-Pointer auf eine illegale Position gesetzt. Im
letzteren Fall ist so lange keine Eingabe von weiteren
Listenbefehlen möglich, bis der Input-Pointer (z.B.
mit Hilfe eines erneuten load_list-Befehls mit posi-
tivem Resultat oder mit Hilfe eines
set_start_list_pos-Befehls) wieder gültig gesetzt
wird.
Dadurch wird automatisch ein unbeabsichtigtes
Überschreiben von Befehlen, die noch ausgeführt
werden sollen, verhindert.
Der load_list-Befehl hilft u.a. beim alternierenden
Listenwechsel, um gezielt auf das Abarbeiten einer
Liste zu warten (siehe
"Alternierender Listen-
wechsel", Seite
80).
®
5 PCIe/104-Karte
oder
"Listenstatus",
und
die aktuellen Posi-
wird der Input-Pointer zur
75

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis