Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Atmega8 и tiny2313
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
na1s
Был код для меги8. Меги не было купил тини.Теперь код не влезает и iar пишет не хватает места. У меня используется stdio.h Если его удалить намного уменьшиться код? И вообще как-нибудь можно соптимизировать ко, чтоб он влез? Оптимизация в иаре стоит максимальная.
zhevak
Цитата(na1s @ Dec 13 2008, 01:35) *
Был код для меги8. Меги не было купил тини.Теперь код не влезает и iar пишет не хватает места. У меня используется stdio.h Если его удалить намного уменьшиться код? И вообще как-нибудь можно соптимизировать ко, чтоб он влез? Оптимизация в иаре стоит максимальная.

1. Попробуйте оптимизировать логику/алгоритм проги.
2. Попробуйте часть кода написать на ассемблере.
3. Попробуйте заменить там где можно printf либо своими функциями, либо другими (puts, atoa, и т.п.)
4. Попробуйте найти несколько похожих фрагментов кода и оформить его в функции.
5. Попробуйте все-таки оценить стоимость меги и стоимость своего рабочего времени по оптимизации кода.

Да просто пробуйте сами что-нибудь сделать!
Как можно вообше что-то полезное посоветовать, не видя кода?
defunct
mega8 и tiny2313 отличаются
- по объему флеш памяти в 4 раза
- по объему RAM в 8 раз.
- и наличием аппаратного умножителя в меге (т.е. если используются операции умножения и деления у вас в программе, то код для Tiny будет занимать больше места).

Сколько у вас Flash и RAM занято сборкой под m8?
Сергей Борщ
Цитата(na1s @ Dec 12 2008, 22:35) *
У меня используется stdio.h Если его удалить намного уменьшиться код?
Не поверите, то две программы:
Код
file1.c:
int main()
{
    return 0;
}

file2.c:
#include <stdio.h>
int main()
{
    return 0;
}
имеют абсолютно одинаковый размер и код совпадающий побайтно.
ARV
Цитата(Сергей Борщ @ Dec 13 2008, 21:00) *
Не поверите, то две программы:
Код
file1.c:
int main()
{
    return 0;
}

file2.c:
#include <stdio.h>
int main()
{
    return 0;
}
имеют абсолютно одинаковый размер и код совпадающий побайтно.
ГЫ smile.gif а если return 0 убрать? wink.gif
Сергей Борщ
Цитата(ARV @ Dec 13 2008, 20:58) *
ГЫ smile.gif а если return 0 убрать? wink.gif
Получим предупреждение, что функция, возвращающая int на самом деле ничего не возвращает.
Этим примером я хотел показать, что само по себе подключение stdio.h не добавляет ни байта в результирующий код. Ибо в этом файле описаны лишь прототипы функций. Код будет добавляться, если какие-либо из этих функций использованы в коде. Поэтому фраза "У меня используется stdio.h" несет ровно ноль информации.
ARV
Цитата(Сергей Борщ @ Dec 13 2008, 22:25) *
Получим предупреждение, что функция, возвращающая int на самом деле ничего не возвращает.
да я шутканул smile.gif однако, avr-gcc вроде не предупреждает об этом... во всяком случае, для main() не замечал ни разу...
Сергей Борщ
Цитата(ARV @ Dec 13 2008, 21:49) *
однако, avr-gcc вроде не предупреждает об этом... во всяком случае, для main() не замечал ни разу...
Извиняюсь перед na1s за отклонение от его темы.
Предупреждает:
Код
D:\Projects>echo int main() {} >test.c && gcc -Wall test.c
test.c: In function `main':
test.c:1: warning: control reaches end of non-void function
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.