Tabelle S19 Block

Last modified by Stefan Taferner on 2014/04/21 22:37

Bei den S19 Blöcken handelt es sich um Steuerblöcke für das Laden eines BCU2 Geräts. Das Laden ist eine Kombination aus Memory Write und ParameterValue Write Befehlen. Eine zentrale Rolle hat dabei der Parameter für die Load Control. Mehr zur Load Control findet man in der BCU2 Hilfe Datei.

Tabellenspalten

block_id - Integer, Hauptschlüssel, muss vorhanden sein.
Eindeutige ID des Parametertyps

block_number - Integer
Zur Sortierung der Blöcke für die Verarbeitung

program_id - Integer
ID des Applikationsprogramms zu dem der Block gehört

block_name - String
Name des Blocks, meist "Paragraph $xxxx"

block_type

control_code - Integer
Kontroll Code für die Verarbeitung des Blocks.
Bit 0..3 - Load state: 1=Laden starten, 2=Laden beendet, 3=Daten setzen, 4=Objekt entladen
Bit 4..7 - Object ID (0=Device, 1=Adress Tabelle, 2=Assoziations Tabelle, 3=Applikationsprogramm, ...)

segment_type - Integer
Typ des Segments. Wird nur bei Load State 3 "Daten setzen" in control_code verwendet.
0=Code/Daten Segment mit absoluter Adresse allozieren,
1=Stack Segment mit absoluter Adresse allozieren,
2=Segment Kontroll Satz,
3=Applikationszeiger setzen: Zeiger zu Applikation's Funktionen: init, appSave, customPeiHandler,
4=Adresse und Anzahl für die Tabelle von Applikations EIB Objekten.
5=Applikationszeiger setzen: Funktion appCallback, ComOjects Tabelle, Segment 0 Adresse, Segment 1 Adresse.

Kurzer Exkurs: bei der BCU2 sind die meisten Pointer 16bit. Die Adresse der Com Objekt Werte ist aber weiterhin in der Comms Tabelle 8bit. Das Flag dort unterscheidet nicht wie bei der BCU1 zwischen RAM und EEPROM, sondern zwischen Segment 0 und Segment 1 (siehe oben bei segment_type==5).

segment_id - Integer
ID des Segments

segment_address - Integer
16 Bit Adresse

segment_length - Integer
Länge der Daten, wenn Daten geschrieben werden sollen

access_attributes - Integer
Zugriffsrechte für späteren Zugriff auf den Speicherblock der durch segment_address ud segment_length angegeben wird. Bit 0..3 Lese Rechte, Bit 4..7 Schreib Rechte. Man braucht den entsprechenden Zugriffs-Level wenn man auf den Speicherblock zugreifen will. Den erreicht man bei der BCU2 mit dem Befehl Authorize_Request.

memory_type - Integer
Typ des Speicherblocks: 1=Low Ram, 2=High Ram, 3=Eeprom

memory_attributes - Integer
Bit 7 gibt an ob für den Speicherblock eine Prüfsumme errechnet werden soll. Alle anderen Bit werden nicht verwendet.

block_data - Hex String
Daten des Speicherbereichs. Leer wenn segment_length leer ist.

block_mask - Hex String
Optional. Zweck bisher unbekannt.