Цитата(quandr @ Nov 10 2017, 09:58)

Для большей предсказуемости времени выполнения.
Может есть смысл размещать в ОЗУ не весь код, а только тот, который этого требует?
Особенно выгодно по скорости выполнения размещать код в области ОЗУ, которая напрямую подключена к ядру (в STM32 она называется TCM RAM).
В KEIL это делается очень просто, почитайте
мануал.
Если нужно весь код, то я бы сделал так:
пишем простейший загрузчик (стартуемый из FLASH), который копирует и возможно даже на ходу распаковывает сжатый код из FLASH в ОЗУ.
Делает ремап векторов (в NVIC поправить всего один регистр) и запускает загруженный код.
А сам код для исполнения в ОЗУ собирается уже с другими параметрами линкера (в скрипте линкера нужно лишь поправить несколько строчек кода).
После чего его (BIN файл) можно упаковать (при желании) и добавить в прошивку загрузчика как внешний файл. KEIL это умеет.
Нажмите для просмотра прикрепленного файлаТ. е. можно так настроить, что нужный HEХ при компиляции будет формироваться автоматически, для этого лишь нужно выбрать нужный режим (у меня обычно DEBUG/RELEASE) в выпадающем списке.
Нажмите для просмотра прикрепленного файла