Hello,
I'm facing some strange behaviour when my main Application tries to use general-purpose CRC to do a self-validation. The checksum for the Application's memory section is calculated correctly, same as for other sections (Bootloaders, FSL) but after the calculation is done - and only when calculation is done for Application section - it looks like other functions of Application does not work correctly (without debugging active). I tried to debug it using E1 but I'm observing "code flash corruption" (don't know how to really describe it). Is it possible that general-purpose CRC using CRCD/CRCIN registers on "currently used/active code flash" affects somehow the flash itself?
First run (after CRC done):
Second run (after CRC done and reset):
I'm using IAR workbench and I know debugging with breakpoints change a bit code flash (and crc in that case is incorrect) but I'm running out of ideas how to track that issue down. Are there any restrictions when using general-purpose CRC? I haven't found any in datasheet.
Thanks!
I'm not sure exactly how this works but I think I was able to solve the issue by changing IAR's code_model from 'near' to 'far'. Probably some code was referring to (wrong) RAM addresses instead ROM