SDK 9.0, components/libraries/bootloader_dfu/bootloader.c, bootloader_app_is_valid:
if (p_bootloader_settings->bank_0 == BANK_VALID_APP)
{
uint16_t image_crc = 0;
// A stored crc value of 0 indicates that CRC checking is not used.
if (p_bootloader_settings->bank_0_crc != 0)
{
image_crc = crc16_compute((uint8_t *)DFU_BANK_0_REGION_START,
p_bootloader_settings->bank_0_size,
NULL);
}
success = (image_crc == p_bootloader_settings->bank_0_crc);
}
How did you ensure, that a image doesn't surprisingly have a crc of 0 ?
(OK, this may happen only rarley, but using something like BANK_VALID_APP_WITHOUT_CRC would solve this more clearly.)