Hi group,
I am working with a terminal, 512K RAM (small huh?). Little bit
old-fashioned H8510 micro or so.
I want to calculate a simple 1-byte xor-checksum (crc) over the bytes
written in Flash (where among others the program-code resides). This is the
map from 0 to 80000:
# -Z(CODE)INTVEC=000000-0001FF
#
# -Z(CODE)BOOT,CODELIBS=000200-00FE7F
#
# -Z(CODE)CODE=010000-01FFFF
#
# -Z(CODE)CODELIBS2,CDATA,CONST,CSTR,ZVECT,CCSTR,
#
# RCODE=020000-02FFFF
#
# -Z(CODE)CODELIBS3=030000-03FFFF
#
...
# -Z(CODE)CODELIBS7=070000-07FFFF -R -B -z
#
With a function called read_mem (from the IAR compiler) I can read bytes
from any place in memory. Also cool! :p
With a small software all works great, the checksum is steady.
The problem is; each time the crc is calculated for a big sized program in
flash, it ends up being a different value.
While I thought the program code in flash was always the same. At both the
first crc-calculating and in my calc-routine the bytes x00 and xFF are
ignored because some blocks in the flash seem to be xFF where the original
byte-code contains x00's.
Can somebody explain why my crc-calculating differs eacht time I execute the
function?
M/\RK
- posted
18 years ago