Мы сейчас в одном изделии используем ШЕСТЬ разных контроллеров в
трёх типах корпусов. Партия 10 тыс. шт., но одного типа купить
оказалось нереально. Зато сделали свой формат контейнера для
прошивок. При обновлении в зависимости от типа ревизии платы
(установленного контроллера) загружается нужный вариант. Да, куча
#ifdef'ов в коде, но что делать. Список МК такой: PIC18F46K22
PIC18F46K42
PIC18F46Q84
PIC18F46Q43
PIC18F47Q42
PIC18F47Q43
Корпуса TQFP44 и LGA с шагом 0,4 мм и 0,65 мм.
Вот так универсальности плат добиваемся: