хм! у меня примерно также но без всяких умных слов typedef struct
{
uint32_t crc;
uint32_t crypt_crc;
uint32_t size;
.....
}appl_dev_info_t;
с этой структуры начинается прошивка.
компиляция как обычно с выводом бинарника. внешняя прога считает размер, считает crc открытой проши, криптует и считает crc криптованного файла. укладывает в структуру, выдает файл для флешера. в функции ресета бута , считаем срс, если сошлось переходим на основное ПО если нет сидим в буте! Естественно все эти 3 поля не шифруются и даже прога флешер может проверить валидное ПО или нет