.cals_data(NOLOAD) :
{
    __itcm_start = .;

    /* Резервируем ровно 20K для .caldata */
    .caldata : {
        KEEP(*(.caldata))
        . = ALIGN(4);
    } > ITCM

    /* Проверяем размер и заполняем до 20K */
    __caldata_end = .;
    __caldata_start = ADDR(.caldata);
    __caldata_size = SIZEOF(.caldata);

    /* Если .caldata меньше 20K, добавляем пустое пространство */
    . = __caldata_start + 20K;

    /* Проверяем, что не превысили размер */
    ASSERT((. - __caldata_start) >= 20K, "Зарезервировано менее 20K для .caldata");
    ASSERT(__caldata_size <= 20K, "Раздел .caldata превышает 20K!");

    KEEP(*(.nvmdata))
    . = ALIGN(4);
    *Model_actuator.c.obj(.bss .bss*)
    __itcm_end = .;
    . = ALIGN(4);
} > ITCM