Remote-processing RPC-2350 Manuel d'utilisateur Page 32

  • Télécharger
  • Ajouter à mon manuel
  • Imprimer
  • Page
    / 83
  • Table des matières
  • MARQUE LIVRES
  • Noté. / 5. Basé sur avis des utilisateurs
Vue de la page 31
DATA MEMORY CHAPTER 5
5-6
default values (from the program) should be used, since
it is uncertain if the first or second set is corrupted.
Both data sets would then be re-initialized.
A triplicate set is used to recover the last set or indicate
that the data in the first set is valid. The pr ocedure and
logic is as follows.
Data is written to each element in a set in a specific and
consistent order (data to an entire set does not have to be
written to, just that element). For example, a calibration
constant is saved (POKE' d) in three different places.
Assume that the constant was assigned address 0, 100,
and 200 in segment 1. The data is POKEd to address 0
first, then 100, then 200.
Upon reset, the calibration value is checked. If the value
at address 0 agrees with address 100 and 200, then no
corruption occurred. When address 0 and 100 agree but
not 200, then this indicates that a reset occurre d while
updating the third set. The first data set can be trusted.
The third data set simply needs to be updated.
When the first two sets do not agree, then you know that
the first data is corrupted. If the second and third set
agree, then, depending upon the system r equireme nts,
the first set could be "corrected" using the old data. The
user or other device could be alerted that a calibration
(or other ) must be performed again. W hen all thre e sets
disagree, then you must take action appropriate to the
situation.
Another technique to ch eck for valid mem ory is
checksum s. Sim ply write a progr am to add the values in
RAM and compare it against a number is a good check.
However, you cannot tell which data element was
corrupted.
Instances of data corruption are rar e. T hey do increase
as the board power is cycled or reset.
ASSEMBLY LANGUAGE INTERFACE
Assembly language programs (including compiled C)
must start from segment 0. Use the CAMBASIC CALL
statement to execute an assembly language program.
A specific area of RAM should be reserved for the
program. This is to prevent strings and variables from
corrupting that area of RAM . Use the SYS(1) and
SYS(2) statements to do this. SYS(1) retur ns the lowest
memory location while SYS(2) returns the upper
location. Run the program first to make sure variable
memory has been allocated before running these SYS
commands. F ailure to do so may r esult in address
returned that are not really free for assembly language
program s.
There are sever al ways to put a program in mem ory,
depending upon your application.
1. Use DATA statements and POKE the code into
segment 0 RAM.
2. Write a program to download code. Some
applications are connected to a larger system which
"initializes" its systems. Using INKEY$ or COM $,
code is received and then poked into memory using
POKE$.
3. Read the code from the EPROM (U3) (using INP)
and transfer it to RAM (using POKE).
4. Some space is available in the CAMBASIC ROM.
Space from about 6B00H to 6F FF H is available in
version 1.4 of the 2350G board. The starting
address will proba bly change in the future w ith
different CAMBASIC versions. You may burn
your assembly language program in U1 and CALL
in from BASIC.
5. Space is available in the Flash EPROM. In theory
you can run directly from Flash. This involves
running in sectored areas unique to the Z180.
However, this is probably more effort. Use the
Flash to stor e the program and then transfer it to
RAM segment 0.
In all cases, it is best to load code into RAM from a
"secure" source, such as F lash EPROM . Even though
RAM is battery backed, over tim e there is the possibility
it could be corrupted.
Below is an example of loading and running an asse mbly
language program.
100 FOR N = &FB00 TO &FB0C
110 READ A
120 POKE N,A
130 NEXT
900 DATA &DB, 2, &47, &E6, &FE, &D3
910 DATA 2, &78, &F6, 1, &D3, 2, &C9
2000 CALL &FB00
Lines 100 to 130 load the program into RAM. DATA
statements may be entered manually.
Vue de la page 31
1 2 ... 27 28 29 30 31 32 33 34 35 36 37 ... 82 83

Commentaires sur ces manuels

Pas de commentaire