ARCAdaptor

Всё в твоих руках

Новости

Снова оптимизация AVR

Оптимизировать микропрограмму для AVR  можно разными способами. Кто-то экспериментирует  c опциями компилятора, кто-то меняет сам код. Конечно, можно писать на Ассемблере, но язык Си значительно сэкономит время и не отпугнет новичка. Да и пооптимизировать "есть что".

Работая над bootloader'ом PicoBoot, Ralph Doncaster обнаружил интересную особенность для контроллеров AttinyX5.

Так, например, если ваша программа не использует прерывания, то компилятор GCC в любом случае вставляет кусок кода, который называется __ctors_end перед переходом на основную часть программы. В этом коде выставляются вектора прерываний, начальные значения регистров, а также указатель стека.

Если прерывания не используются, то установка не нужна, соответственно от этого участка кода можно избавиться, сэкономив при этом несколько десятков байт.

В случае Ральфа удалось сжать размер программы с 274 то 190 байт. Для 8 килобайт памяти ATTiny это немаленькая экономия.

Конечно, в век гигабайтов и гигагерцев это кажется неуместным, но в мире embedded счет идет на биты и такты процессора, так что статья будет очень хорошим материалом для изучения одного из подходов к оптимизации.

Перейти к статье

<< Вернуться на предыдущую страницу

comments powered by Disqus