Flexz 0 18 ноября, 2011 Опубликовано 18 ноября, 2011 · Жалоба Понадобилось сделать выравнивание массива по большому числу (ремап таблицы прерываний в рам в CortexM3) static InterruptHandler __attribute__((aligned(0x400))) isrTable[isrCount]; В map наблюдаем: *fill* 0x20002b34 0xcc 00 .bss._ZL8isrTable 0x20002c00 0x400 nvic.o При этом поле *fill* может гулять от малых значений до цифры близкой к 0x400, в зависимости от ручной перетасовки кода. Когда цифра маленькая еще туда-сюда, но когда она подбирается к 0x400 - это ж почти килобайт оперативки в пустую! Можно ли как-то заставить компилятор использовать область *fill* с пользой, причем только в данном месте? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ReAl 0 18 ноября, 2011 Опубликовано 18 ноября, 2011 · Жалоба Поместить таблицу в отдельную секцию и линкерным скриптом рамзестить эту секцию в начале ОЗУ ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flexz 0 18 ноября, 2011 Опубликовано 18 ноября, 2011 · Жалоба Действительно, дешево и сердито. Небольшим сюрпризом стал бинарник размером в 400метров, вместо 60кб Пришлось вспомнить про --remove-section= Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться