Микроконтроллер содержит в себе отдельный блок энергонезависимой памяти (FRAM), в который можно что-то писать. Вот туда-то мы и будем записывать текущую версию железки и её конфигурацию. А прошивка при старте будет оттуда считывать capabilities и дальше выполнять нужные куски для настройки и т.п. Файл прошивки при этом будет один и тот же. Это не снимет проблем с тестированием, но снимет проблемы со сборкой и выбором нужной версии при прошивке.
Что же делать в аналогичных случаях, когда нет выделенного блока памяти? Тогда можно писать в основной флеш, предназначенный для прошивки. В другом проекте на STM32 я указал в разметке памяти (map-файл), что последний сектор не надо ни записывать, ни стирать. И после этого хранил там свои данные (это были настройки).