Загрузчик отвергает каждую новую прошивку с ошибкой CRC
Сборочный скрипт считает CRC32 по файлу firmware.bin (93 412 байт) и дописывает её в заголовок. Загрузчик проверяет образ так:
uint32_t crc = crc32((uint8_t *)APP_START, APP_SLOT_SIZE); /* 128 КБ */
if (crc != hdr->crc) reject_image();
Образ во flash записан верно — побайтное сравнение с файлом совпадает. Но загрузчик отвергает любую прошивку. Что исправить?
- Хранить в заголовке длину и считать CRC по ней
- Считать CRC32 загрузчиком в обратном порядке
- Стирать слот нулями, а не значением 0xFF
- Округлить размер образа до страницы flash
