The crc() operator can only be applied
to a GROUP within a MEMORY directive. It cannot be applied to individual memory
ranges in a MEMORY directive or to groups in the SECTIONS directive.
Along with the restrictions described
in Section 8.9.1.1, the
following additional restrictions apply:
- Memory range groups cannot
contain any gaps between the ranges.
- All of the memory ranges must be
on the same page.
- Memory ranges that contain
sections that would not otherwise be eligible for CRC table generation cannot
have a CRC computed. That is, memory ranges for which a CRC value is generated
must correspond only to load addresses of initialized sections.
- The .TI.memcrc section may not be
placed in a range that itself is having a CRC value computed. This would result
in a circular reference; the CRC result would depend upon the result of the CRC.
See Section 8.9.2.3 for
ways to generate CRCs for most or all of Flash memory without violating this
restriction.