реклама на сайте
подробности

 
 
> GCC, aligned и пустое место, Как задействовать "паддинг"
Flexz
сообщение Nov 18 2011, 06:34
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 9-10-08
Из: Московская обл.
Пользователь №: 40 797



Понадобилось сделать выравнивание массива по большому числу (ремап таблицы прерываний в рам в CortexM3)
Код
static InterruptHandler __attribute__((aligned(0x400))) isrTable[isrCount];

В map наблюдаем:
Код
*fill*         0x20002b34       0xcc 00
.bss._ZL8isrTable
                0x20002c00      0x400 nvic.o

При этом поле *fill* может гулять от малых значений до цифры близкой к 0x400, в зависимости от ручной перетасовки кода. Когда цифра маленькая еще туда-сюда, но когда она подбирается к 0x400 - это ж почти килобайт оперативки в пустую!
Можно ли как-то заставить компилятор использовать область *fill* с пользой, причем только в данном месте?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 2)
ReAl
сообщение Nov 18 2011, 07:23
Сообщение #2


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Поместить таблицу в отдельную секцию и линкерным скриптом рамзестить эту секцию в начале ОЗУ ?


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Flexz
сообщение Nov 18 2011, 09:00
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 9-10-08
Из: Московская обл.
Пользователь №: 40 797



Действительно, дешево и сердито.
Небольшим сюрпризом стал бинарник размером в 400метров, вместо 60кб biggrin.gif Пришлось вспомнить про --remove-section=
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 01:24
Рейтинг@Mail.ru


Страница сгенерированна за 0.01359 секунд с 7
ELECTRONIX ©2004-2016