SWCU192 November 2021 CC1312R7 , CC1352P7 , CC2652P7 , CC2652R7
The COMMAND_CRC32 command checks a flash area using CRC32. The command consists of three 32-bit values that are all transferred MSB first. The first 32-bit value is the address in memory from where the CRC32 calculation starts, the second 32-bit value is the number of bytes comprised by the CRC32 calculation, and the third 32-bit value is the number of read repeats for each data location. A read repeat count of 0x0000 0000 causes the checksum to be generated by a read of all data locations only once. The command sends the ACK signal in response to the command after the actual CRC32 calculation. The result is finally returned as 4 bytes (MSB first) in a 6-byte packet. The bootloader then waits for an ACK signal from the host as a confirmation that the packet was received. The second parameter that holds the number of bytes must be higher than eight. If not, the returned checksum is 0xFFFF FFFF.
The format of the packet including the command is as follows:
unsigned char ucCommand[15];
ucCommand[0] = <size=15>;
ucCommand[1] = <checksum>;
ucCommand[2]= COMMAND_CRC32;
ucCommand[3]= Data Address [31:24];
ucCommand[4]= Data Address [23:16];
ucCommand[5]= Data Address [15: 8];
ucCommand[6]= Data Address [ 7: 0];
ucCommand[7]= Data Size [31:24];
ucCommand[8]= Data Size [23:16];
ucCommand[9]= Data Size [15: 8];
ucCommand[10]= Data Size [7: 0];
ucCommand[11]= Read Repeat Count [31:24];
ucCommand[12]= Read Repeat Count [23:16];
ucCommand[13]= Read Repeat Count [15: 8];
ucCommand[14]= Read Repeat Count [7: 0];