Есть некая функция foo,постоянно вызывается в основном цикле, надо ее разместить в некой другой области памяти. Функция ничего полезного не делает, изучаю компоновщик.
Спойлер
Код: Выделить всё
uint16_t foo (uint16_t n) __attribute__((section("ZZZ")));
uint16_t foo (uint16_t n)
{
.....
}Спойлер
Код: Выделить всё
LR_IROM1 0x08000000 0x00010000 { ; load region size_region
ER_IROM1 0x08000000 0x00001000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
.ANY (+XO)
}
;---------------------------------------------------------------------------------------------
ER_IROM2 0x08001000 0x00000500 { ; load address = execution address
.ANY (+RO,ZZZ)
}
RW_IRAM1 0x20000000 0x00005000 { ; RW data
.ANY (+RW +ZI)
}
}Код: Выделить всё
Program Size: Code=684 RO-data=272 RW-data=0 ZI-data=1640 Код: Выделить всё
foo 0x08001001 Thumb Code 20 foo.o(ZZZ)Если написать вот такой scatter
Спойлер
Код: Выделить всё
LR_IROM1 0x08000000 0x00010000 { ; load region size_region
ER_IROM1 0x08000000 0x00001000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
.ANY (+XO)
}
RW_IRAM1 0x20000000 0x00005000 { ; RW data
.ANY (+RW +ZI)
}
}
;======================
LR_IROM2 0x08001000 0x00000500 {
ER_IROM2 0x08001000 0x00000500 { ; load address = execution address
.ANY (+RO,ZZZ)
;foo.o(+RO)
}
}
Код: Выделить всё
Program Size: Code=656 RO-data=256 RW-data=0 ZI-data=1640Почитал Хелп как смог:), форумы буржуйские, но к сожалению знания аглицкого бедные для четкого понимания написанного. Русского по компоновщику кейла, можно сказать, ничего не нашел.
Теперь попробую задать вопрос, боюсь что очень колхозно и вряд ли с правильными терминами, пока можно сказать ничего не понял.
В первом скаттере есть регион LR_IROM1, в нем три как бы подрегиона(не знаю как правильно назвать) ER_IROM1,ER_IROM2, RW_IRAM1.. В ER_IROM2 определена секция ZZZ. Но не хрена не работает так.
А если я эту секцию указываю таком же в подрегионе, но уже в отдельном новом регионе, то тогда работает.
1. Я хоть приблизительно на верном пути с пониманием линковщика Кейла с регионами и "подрегионами"?
2. В чем разница между скаттерами?



