SWRA466E February 2015 – August 2024 CC1310 , CC1310 , CC1311P3 , CC1311P3 , CC1311R3 , CC1311R3 , CC1312PSIP , CC1312PSIP , CC1312R7 , CC1312R7 , CC1314R10 , CC1314R10 , CC1352P , CC1352P , CC1352P7 , CC1352P7 , CC1352R , CC1352R , CC1354P10 , CC1354P10 , CC1354R10 , CC1354R10 , CC2538 , CC2538 , CC2620 , CC2620 , CC2630 , CC2630 , CC2640 , CC2640 , CC2640R2F , CC2640R2F , CC2640R2F-Q1 , CC2640R2F-Q1 , CC2642R , CC2642R , CC2642R-Q1 , CC2642R-Q1 , CC2650 , CC2650 , CC2650MODA , CC2650MODA , CC2651P3 , CC2651P3 , CC2651R3 , CC2651R3 , CC2651R3SIPA , CC2651R3SIPA , CC2652P , CC2652P , CC2652P7 , CC2652P7 , CC2652PSIP , CC2652PSIP , CC2652R , CC2652R , CC2652R7 , CC2652R7 , CC2652RB , CC2652RB , CC2652RSIP , CC2652RSIP , CC2674R10 , CC2674R10
To verify that the firmware was successfully
programmed into the Flash memory, use the SBL function
calculateCrc32 to get a CRC32 checksum of a specified part of
the Flash memory from the bootloader. The calculateCrc32 function
uses the command CMD_CRC32 together with a start address and the number of bytes to
include in the CRC32 checksum.
For CC13xx and CC26xx, the bootloader also expects a read repeat count. Setting this to 0x00000000 makes sure that the data locations are only read once.
The CC2538, CC13xx, and CC26xx bootloaders use the CRC-32-IEEE 802.3 with the following polynomial to calculate CRC checksum.
CRC32poly = x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1
An example of how to
calculate the checksum using the CRC32poly is implemented in the SBL
example project. Figure 4-8 shows the sequence chart for the calculateCrc32 function.
Figure 4-8 Sequence Chart for CRC32 Command