Не обижайтесь, если что. Попробуйте Arduino IDE в качестве среды с
AVR-GCC 12 или даже 14, какой там найдётся? Мне очень понравилось.
Писал свой код bare metal. Очень хорошо работает оптимизация -O3
-flto (нужно только ручками в конфигурационном файле самой IDE
прописать). Отладка, правда, не работает (я не выяснял даже, есть
ли?). AVR-GCC весьма предсказуем и неплохо документирован. Если в скрипте линкера покопаться, думаю, можно всё сделать.
Может, стоит явно прописать секции, куда класть? Похоже, что в скрипте линкера, секция с переменными лежит во внешнем ОЗУ. Переместите её во внутреннее - по порядку следования секций.