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

 
 
 
Reply to this topicStart new topic
> Atmega8 и tiny2313
na1s
сообщение Dec 12 2008, 20:35
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 87
Регистрация: 30-07-07
Из: Челябинск
Пользователь №: 29 459



Был код для меги8. Меги не было купил тини.Теперь код не влезает и iar пишет не хватает места. У меня используется stdio.h Если его удалить намного уменьшиться код? И вообще как-нибудь можно соптимизировать ко, чтоб он влез? Оптимизация в иаре стоит максимальная.
Go to the top of the page
 
+Quote Post
zhevak
сообщение Dec 12 2008, 22:03
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065



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

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

Да просто пробуйте сами что-нибудь сделать!
Как можно вообше что-то полезное посоветовать, не видя кода?


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post
defunct
сообщение Dec 13 2008, 14:35
Сообщение #3


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



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

Сколько у вас Flash и RAM занято сборкой под m8?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 13 2008, 18:00
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



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

file2.c:
#include <stdio.h>
int main()
{
    return 0;
}
имеют абсолютно одинаковый размер и код совпадающий побайтно.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
ARV
сообщение Dec 13 2008, 18:58
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(Сергей Борщ @ 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


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 13 2008, 19:25
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(ARV @ Dec 13 2008, 20:58) *
ГЫ smile.gif а если return 0 убрать? wink.gif
Получим предупреждение, что функция, возвращающая int на самом деле ничего не возвращает.
Этим примером я хотел показать, что само по себе подключение stdio.h не добавляет ни байта в результирующий код. Ибо в этом файле описаны лишь прототипы функций. Код будет добавляться, если какие-либо из этих функций использованы в коде. Поэтому фраза "У меня используется stdio.h" несет ровно ноль информации.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
ARV
сообщение Dec 13 2008, 19:49
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(Сергей Борщ @ Dec 13 2008, 22:25) *
Получим предупреждение, что функция, возвращающая int на самом деле ничего не возвращает.
да я шутканул smile.gif однако, avr-gcc вроде не предупреждает об этом... во всяком случае, для main() не замечал ни разу...


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 14 2008, 02:37
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(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


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

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

 


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


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