FLASH.C2 V1.0 - Hilfe


Beschreibung

Einfügen als Systemmodul

Konstanten

Funktionen:
DelSeg()
readInt()
writeInt()
readLong()
writeLong()
readByteArray()
writeByteArray()
readIntArray()
writeIntArray()
readLongArray()
writeLongArray()
readString()
writeString()
readStringArray()
writeStringArray()


Beschreibung   Nach oben

Das Modul flash.c2 ermöglicht den wahlfreien Zugriff auf den Flash-Speicher
der C-Control II.
D.h. es können Daten geschrieben und gelesen werden.
Es gibt jedoch folgende Beschränkungen:
- Eine Speicherzelle kann nur einmal beschrieben werden.
   Vor einem Neubeschreiben muß das gesamte Flashsegment mit DelSeg() gelöscht werden.
- Der Flash-Speicher ist nur für 100.000 Löschzyklen ausgelegt.
   Bei mehr Löschzyklen können einzelne Speicherzellen schaden nehmen und nichtmehr
   beschreib-/löschbar sein.
   Daher sollte der Flash nicht zu oft gelöscht werden.
   Müssen viele Daten aktualisiert werden, wodurch ein Löschen nötig wäre,
   sollte besser ein externer Speicher, wie EEProms, welche bei Defekt schnell wechselbar sind,
   oder RAM (z.B. CC2Net-RAM-Device), welcher unendlich oft neu beschrieben werden kann.

Hinweise zu den Segmenten:
Ein Segment belegt 64kByte(65536 Byte)

Segment Hinweise
0 Betriebssystem - nicht verwenden !!
Schreibzugriff ist möglich 
1 frei - kann ohne Einschränkungen genutzt werden
2 frei - kann ohne Einschränkungen genutzt werden
3 Speicher für Systemroutinen - nicht verwenden !!
Schreibzugriff ist möglich 
4 VMC-Speicher(Programm) - nicht verwenden !!
5 VMC-Speicher(Programm) - kann verwendet werden, wenn Programm kleiner 64kB
wird beim Neuladen von Programmen gelöscht.
6 Konstanten-Speicher - nicht verwenden !!
7 Konstanten-Speicher - kann verwendet werden, wenn weniger als 64kB Konstanten verwendet werden
wird beim Neuladen von Programmen gelöscht.
8 SRAM - mit diesem Modul: nur lesen möglich !!

 

Einfügen als
Systemmodul
   Nach oben

Die Datei flash.c2 in das Verzeichnis .\CControl2\Lib kopieren und
in der Datei modules.txt die Zeile flash.c2 einfügen.
Ein zusätzliches Ausrufezeichen unmittelbar nach einem Modulnamen in modules.txt bestimmt,
daß das Modul in jedem neuen Projekt von Anfang an aktiviert wird.


Konstanten   Nach oben

// Einsprung-Adressen der System-Routinen:
// flash.hex:

const Segment   = 0x0300; //Flash-Segment
const _DELSEG   = 0xE000;
const _RDINT    = 0xE014;
const _WRINT    = 0xE024;
const _RDLONG   = 0xE056;
const _WRLONG   = 0xE06A;
const _RDBYTEARR= 0xE09A;
const _WRBYTEARR= 0xE0C8;
const _RDINTARR = 0xE14E;
const _WRINTARR = 0xE15C;
const _RDLONGARR= 0xE172;
const _WRLONGARR= 0xE182;


Funktionen:

Segment löschen   Nach oben

    function DelSeg(byte segment)

Mit DelSeg() wird das angegebene Flashsegment gelöscht. 

segment Flashsegment 0-7
Achtung !!
Mit 0 wird das Betriebsystem gelöscht !
Mit 3 wird der Speicher mit den ASM-Treibern gelöscht !
Mit 4, 5, 6,7 wird das Programm bzw. Teile davon gelöscht.
 

Schreibfunktionen für einzelne Werte   Nach oben

    function writeInt(byte segment, int addr, int data) returns int
    function writeLong(byte segment, int addr, long data) returns int

Mit diesen Funktionen werden einzelne Werte in den Flash geschrieben.
Bei der Adressierung muß beachtet werden, daß die verschiedenen
Variabeltypen eine unterschiedliche Anzahl an Bytes belegen. (Integer: 2Byte, Long: 4Byte)
Alle Werte werden mit LSB first gespeichert.
Kommt es beim Schreibvorgang zu einem Fehler, so wird FALSE (0) zurückgegeben.
Bei erfolgreichem Schreiben der Daten wird True(-1) zurückgegeben.

segment Flashsegment 0-7
Achtung !!
 0 =  Betriebsystem
 3 Speicher mit ASM-Treibern
 4, 5, 6,7 Programm und Konstantenspeicher
addr Adresse für die Daten 0- 65534
Nur gerade Adressen !
data zu speichernder Wert

Schreibfunktionen für Arrays   Nach oben

    function writeByteArray(byte segment, int addr, byte data[], int len) returns int
    function writeIntArray(byte segment, int addr, int data[], int len) returns int
    function writeLongArray(byte segment, int addr, long data[], int len) returns int

Mit diesen Funktionen können Arrays (Byte, Integer und Long) in den Flash
geschrieben werden. Werte zwischen -32768 und -1 für len werden
als 32768 bis 65536 interpretiert.
Alle Werte werden mit LSB first gespeichert.
Kommt es beim Schreibvorgang zu einem Fehler, so wird FALSE (0) zurückgegeben.
Bei erfolgreichem Schreiben der Daten wird True(-1) zurückgegeben.

segment Flashsegment 0-7
Achtung !!
 0 =  Betriebsystem
 3 Speicher mit ASM-Treibern
 4, 5, 6,7 Programm und Konstantenspeicher
addr Adresse für die Daten 0- 65534
Nur gerade Adressen !
data zu speicherndes Daten-Array
len Anzahl zu speichernder Array-Elemente

Schreibfunktion für Strings(Zeichenketten)   Nach oben

    function writeString(byte segment, int addr, string s) returns int

Mit dieser Funktion wird der Inhalt einer Stringvariable in den Flash
geschrieben. Ein String belegt im Flash immer 32 Byte.
Kommt es beim Schreibvorgang zu einem Fehler, so wird FALSE (0) zurückgegeben.
Bei erfolgreichem Schreiben der Daten wird True(-1) zurückgegeben.

segment Flashsegment 0-7
Achtung !!
 0 =  Betriebsystem
 3 Speicher mit ASM-Treibern
 4, 5, 6,7 Programm und Konstantenspeicher
addr Adresse für die Daten 0- 65504
Nur gerade Adressen !
len Anzahl zu speichernder Array-Elemente
 

Schreibfunktion für String-Arrays   Nach oben

    function writeStringArray(byte segment, int addr, string s[], int len) returns int

Mit dieser Funktion wird der Inhalt von Stringarrays in den Flash
geschrieben. Ein Stringarrayelement belegt im Flash immer 32 Byte.
Kommt es beim Schreibvorgang zu einem Fehler, so wird FALSE (0) zurückgegeben.
Bei erfolgreichem Schreiben der Daten wird True(-1) zurückgegeben.

segment Flashsegment 0-7
Achtung !!
 0 =  Betriebsystem
 3 Speicher mit ASM-Treibern
 4, 5, 6,7 Programm und Konstantenspeicher
addr Adresse für die Daten 0- 65504 (- 32 x len)
Nur gerade Adressen !
s[] Referenz auf String-Array
len Anzahl zu speichernder Array-Elemente
 


Lesefunktionen für einzelne Werte
   Nach oben

    function readInt(byte segment, int addr) returns int
    function readLong(byte segment, int addr) returns long

Mit diesen Funktionen werden einzelne Werte aus dem Flash gelesen und zurückgegeben.
Bei der Adressierung muß beachtet werden, daß die verschiedenen
Variabeltypen eine unterschiedliche Anzahl an Bytes belegen. (Integer: 2Byte, Long: 4Byte)

segment Flashsegment 0-7, 8=SRAM
addr Adresse für die Daten 0- 65534
Nur gerade Adressen !
 

Lesefunktionen für Arrays   Nach oben

    function readByteArray(byte segment, int addr, byte data[], int len)
    function readIntArray(byte segment, int addr, int data[], int len)
    function readLongArray(byte segment, int addr, long data[], int len)

Mit diesen Funktionen können Arrays (Byte, Integer und Long) aus dem Flash
gelesen werden.Werte zwischen -32768 und -1 für len werden als
32768 bis 65536 interpretiert.
Es muß darauf geachtet werden, daß das Zielarray mindestens so viele
Elemente enthält, wie für len angegeben.

segment Flashsegment 0-7, 8=SRAM
addr Adresse für die Daten 0- 65534
Nur gerade Adressen !
(Bei readByteArray() auch ungerade)
data Ziel-Array für gelesene Daten
len Anzahl zu lesende Array-Elemente

Lesefunktion für Strings(Zeichenketten)   Nach oben

    function readString(byte segment, int addr, string s) 

Mit dieser Funktion wird ein String aus dem Flash ausgelesen und
in der angegebenen Stringvariabel gespeichert.
Es werden immer 32 Byte aus dem Flash gelesen.

segment Flashsegment 0-7, 8=SRAM
addr Adresse für die Daten 0- 65504
Nur gerade Adressen !
(Bei readByteArray() auch ungerade)
s Referenz für String-Variable



Lesefunktion für Strings-Arrays   Nach oben

    function readStringArray(byte segment, int addr, string s[], len) 

Mit dieser Funktion wird ein String-Array aus dem Flash ausgelesen und
in dem angegebenen String-Array gespeichert.
Es werden immer 32 Byte pro Array-Element aus dem Flash gelesen.

segment Flashsegment 0-7, 8=SRAM
addr Adresse für die Daten 0- 65504 (- 32 x len)
Nur gerade Adressen !
(Bei readByteArray() auch ungerade)
s[] Referenz für String-Array



Autor: André Helbig   Mail: andre.h@cc2net.de    Erstellt: 18.4.2004