/* Must be last in romable region */
#if !defined(CONFIG_SDRAM_LMA_ADJUST)
SECTION_PROLOGUE(.last_section,,)
{
KEEP(*(.last_section))
} GROUP_LINK_IN(ROMABLE_REGION)
#else
/* ХАК: Раскрываем макрос секции вручную, чтобы задать динамический VMA.
1. LOADADDR(device_states) + SIZEOF(device_states) — динамически дает
физический адрес конца данных во флеше (0x6001002c).
2. Вычитаем 0x60000000, чтобы получить чистый относительный сдвиг прошивки.
3. Прибавляем базовый адрес RAM (0x80000000).
В итоге VMA строго равен 0x8001002c и полностью зависит от реального размера данных! */
.last_section (0x80000000 + (LOADADDR(device_states) + SIZEOF(device_states) - 0x60000000)) :
{
KEEP(*(.last_section))
} AT> NXP_FLASH_LMA
#endif