Как заставить инструменты Eclipse+GNU пропускать неиспользуемую память в одном разделе и не загружать ее?
Я использую:
- Eclipse IDE для разработчиков кислорода на C/C++ (4.7.0)
- GNU Tools ARM Embedded (версия инструментов GNU без оружия)
- Плагин отладки GDB SEGGER J-Link
В моем скрипте компоновщика у меня есть сегмент памяти (.myvars), который содержит два прерывистых раздела (.loadtable и.rawdata)
sections.ld:
.myvars :
{
__myvars_start__ = ABSOLUTE(.);
__loadtable_start__ = 0x60002000;
. = __loadtable_start__ - __myvars_start__;
*(.loadtable)
__rawdata_start__ = 0x60039000;
. = __rawdata_start__ - __myvars_start__;
*(.rawdata)
} > MYVARS
Иллюстрация:
.myvars 0x60000000
|
| (unused memory)
|
| .loadtable 0x60002000
| |
| |
| |
| 0x60002000 + sizeof(.loadtable)
|
| (unused memory)
|
| .rawdata 0x60039000
| |
| |
| |
| 0x60039000 + sizeof(.rawdata)
|
| (unused memory)
|
0x60800000
Используя section.ld, Eclipse загружает 0x60000000 ~ (0x60039000 + sizeof(.rawdata)) на мое устройство. Но я надеюсь, что смогу просто загрузить.loadtable и.rawdata.
Я знаю, что могу добиться с помощью этого сценария компоновщика (поместите раздел в два отдельных сегмента памяти):
.myvars1 :
{
*(.loadtable)
} > MYVARS1
.myvars2 :
{
*(.rawdata)
} > MYVARS2
Можно ли пропустить неиспользуемую память в одном сегменте памяти при загрузке?
Любой совет по этому вопросу? Буду благодарен за любые предложения.