2014-08-29 10 views
1

Я работаю над продуктом, где оба флеш-пространства (для хранения прошивки) и памяти (для исполнения) стоят на высоте. Поэтому я хочу, чтобы получившийся ELF был как можно меньше, без значительного снижения производительности продукта. Код компилируется как сочетание ARM и Thumb, в основном используя режим Thumb, когда я могу с ним справиться. Я искал параметры компилятора/компоновщика, чтобы уменьшить размер (оптимизировать пространство, удалить неиспользуемые функции и т. Д.). Одна вещь, которую я заметил, это то, что я получаю много (около 180) отработанных пакетов дальней вызова, которые занимают немного места.Как свести к минимуму или устранить многократные переадресации вызовов ARM/Thumb?

Короче говоря, любой знает, как можно свести к минимуму или устранить эти исправления (предположительно, избегая большинства/всех дальней звонков)? Кажется, что должен быть способ реорганизовать и оптимизировать порядок того, как все хранится/связано в своих соответствующих разделах памяти, до сих пор звонки не нужны или, по крайней мере, сводятся к минимуму.

EDIT: Я больше не требую ответа на этот вопрос. Как оказалось, дальнейшие вызовы неизбежны в этом продукте, потому что они необходимы для вызовов между ITCM и SRAM (которые, к сожалению, расположены далеко друг от друга в адресном пространстве). Спасибо за комментарии и ответы.

+2

Можете ли вы дать процессор, который вы используете, и какой компилятор и параметры? Например, это кортекс-m или это какой-то старый ARM-926? «Межсетевое взаимодействие» будет отличаться в зависимости от функций ЦП. Например, ['blx' может быть недоступен] (http://www.davespace.co.uk/arm/introduction-to-arm/interworking.html) для всех типов ЦП, и компилятор будет нацелен на худший случай. –

ответ

2

Если вы используете линкер RVCT, armlink, вы можете попробовать различные алгоритмы сортировки секций, упомянутые в documentaton for --sort.

+0

Не использовать этот компоновщик, но если бы это было похоже --sort = AvgCallDepth был бы победителем. Спасибо за ответ! (Предоставление вам принятого ответа.) –

 Смежные вопросы

  • Нет связанных вопросов^_^