У меня из-за кривых makefile'ов такое встречалось. То gcc не
пересобирает файл после изменения в совершенно вроде бы левом (но
нужном) заголовочнике, то неправильно цель проходит (я так и не
научился без чистого вызова "make" нужную цель активировать, т.е.
если напишу "make flash" без предварительного make, он новые файлы
соберет с целью release, а не debug; но cmake для МК городить,
по-моему, как-то уж совсем чересчур). А в вашем случае такое впечатление, что не получается собрать код, который должен исполняться из RAM. Поэтому и выполняется старый.