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