Die Speicherdimensionen

Die Speicherdimensionen setzen sich aus drei Komponenten zusammen: Bytes pro Sektor, Anzahl der Sektoren und Anzahl der Speicherbänke. Je nach Produktausstattung können diese Dimensionen variieren. Für einen problemlosen Zugriff auf den Speicher ist es also unerlässlich, die Dimensionen des Speichers zu bestimmen, auf den ein laufendes Programm zugreifen soll.

Ein Beispiel:. Bei einem JControl/SmartDisplay enthält jede Speicherbank 64kB, womit ein solches Modul in der Standardausführung genau eine Speicherbank besitzt. Diese Bank ist aufgeteilt in 512 Sektoren und jeder Sektor besteht aus 128 Bytes.

1    /**
2     * Java file created by JControl/IDE
3     *
4     * @author RSt
5     * @date 03.11.04 17:23
6     *
7     */
8    import java.io.IOException;
9    import jcontrol.comm.RS232;
10    
11    public class FlashDimensions {
12    
13      static String flashDimensions = "";
14      static RS232 myRS232;
15    
16        public FlashDimensions() {
17          try{
18            myRS232 = new RS232();//default = 19200 Baud
19          }catch(IOException e){
20          }
21          flashDimensions = jcontrol.system.Management.getProperty("flash.format");
22        }
23    
24        public static void main(String[] args) {
25            new FlashDimensions();
26            myRS232.println(flashDimensions);
27            for(;;);//Stops execution of this program.
28        }
29    }
Listing 1: FlashDimensions.java

Das obige Programm gibt (auf einem Standard-JControl/SmartDisplay) über die serielle Schnittstelle den String "512x128x1" ({Sektoren}x{Bytes/Sektor}x{Bänke}) aus, welcher die Speicherdimensionen des Beispiels (s.o.) widerspiegelt. Aus diesem String (die entsprechende Programmzeile ist hervorgehoben) kann ein Programm also während des Betriebs die Dimensionen des eingebauten Flash-Speichers bestimmen, sodass dem Benutzer die Daten zur Verfügung stehen, die er für den sicheren Zugriff auf den Speicher braucht.

Hinweis aus der Praxis:. Es gestaltet sich bei Speicheroperationen sehr einfach, in die 0-1-Falle zu geraten: Die Indizes der Bänke, Sektoren und Bytes beginnen bei 0 und reichen bis zu der entsprechenden Anzahl-1. Bei zwei Speicherbänken stehen also die Bänke 0 und 1 zur Verfügung. Dies ist zwar i.d.R. bekannt, bleibt aber dennoch eine häufige Ursache für Speicherzugriffsfehler.