Wiki source code of Tabelle S19 Block

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

Show last authors
1 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.
2
3 == Tabellenspalten ==
4
5 **block_id** - Integer, Hauptschlüssel, muss vorhanden sein.
6 Eindeutige ID des Parametertyps
7
8 **block_number** - Integer
9 Zur Sortierung der Blöcke für die Verarbeitung
10
11 **program_id** - Integer
12 ID des Applikationsprogramms zu dem der Block gehört
13
14 **block_name** - String
15 Name des Blocks, meist "Paragraph $xxxx"
16
17 **block_type**
18
19 **control_code** - Integer
20 Kontroll Code für die Verarbeitung des Blocks.
21 Bit 0..3 - Load state: 1=Laden starten, 2=Laden beendet, 3=Daten setzen, 4=Objekt entladen
22 Bit 4..7 - Object ID (0=Device, 1=Adress Tabelle, 2=Assoziations Tabelle, 3=Applikationsprogramm, ...)
23
24 **segment_type** - Integer
25 Typ des Segments. Wird nur bei Load State 3 "Daten setzen" in control_code verwendet.
26 0=Code/Daten Segment mit absoluter Adresse allozieren,
27 1=Stack Segment mit absoluter Adresse allozieren,
28 2=Segment Kontroll Satz,
29 3=Applikationszeiger setzen: Zeiger zu Applikation's Funktionen: init, appSave, customPeiHandler,
30 4=Adresse und Anzahl für die Tabelle von Applikations EIB Objekten.
31 5=Applikationszeiger setzen: Funktion appCallback, ComOjects Tabelle, Segment 0 Adresse, Segment 1 Adresse.
32
33 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).
34
35 **segment_id** - Integer
36 ID des Segments
37
38 **segment_address** - Integer
39 16 Bit Adresse
40
41 **segment_length** - Integer
42 Länge der Daten, wenn Daten geschrieben werden sollen
43
44 **access_attributes** - Integer
45 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.
46
47 **memory_type** - Integer
48 Typ des Speicherblocks: 1=Low Ram, 2=High Ram, 3=Eeprom
49
50 **memory_attributes** - Integer
51 Bit 7 gibt an ob für den Speicherblock eine Prüfsumme errechnet werden soll. Alle anderen Bit werden nicht verwendet.
52
53 **block_data** - Hex String
54 Daten des Speicherbereichs. Leer wenn segment_length leer ist.
55
56 **block_mask** - Hex String
57 Optional. Zweck bisher unbekannt.