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

 
 
> время компиляции проекта ~8мин., От чего зависит и как уменьшить?
alux
сообщение Mar 29 2009, 08:48
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447



Проект состоит из двух десятков исходников. Плюс ко всему подключены в виде библиотек проекты scmRTOS и fatFS.
Компилятор IAR C/C++ Compiler for AVR 5.20.3 (5.20.3.50106). Компьютер Pentium 4 2.8ГГц ОЗУ 256 Мб.
Компиляция проекта составляет почти 8 минут! Собственно, меня это уже достало... 90 процентов времени занимает компиляция одного из файлов.
Как убыстрить этот процесс ? Зависит ли от количества ОЗУ компьютера или еще каких-либо факторов?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
alux
сообщение Apr 22 2009, 14:36
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447



Обнаружил, что если убрать Cross Call в опциях компилятора, то время компиляции нормальное (порядка пары десятков секунд). Но после этого программа перестает нормально работать. Проблема начинается при вызове функции menu_init(). Внешне это проявляется выводом "мусора" на ЖКИ и пересбросу МК. Размеры CSTACK, RSTACK увеличил в 10 раз. Не помогает. Программа работает нормально только при максимальной оптимизации по размеру (с включенной опцией Cross Call). Из описания компилятора (IAR 5.20.3) : "Эта опция уменьшает размер RSTACK путем запуска cross-call optimizer N раз". Странно однако, обычно эту опцию многие отключают, чтобы не было проблем. У меня же наоборот получается...
На что следует обратить внимание при выключении этой опции?
Go to the top of the page
 
+Quote Post
scifi
сообщение Apr 23 2009, 06:09
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(alux @ Apr 22 2009, 18:36) *
Странно однако, обычно эту опцию многие отключают, чтобы не было проблем.

Я всегда считал, что отключение оптимизации с целью сокрытия глюков - это всё равно, что прятать голову в песок. Если поведение программы зависит от настроек компилятора, значит программа глюкавая. В таком случае отлаживать можно как обычно: ставить точки останова, смотреть содержимое переменных, стека и т.д.
Go to the top of the page
 
+Quote Post
alux
сообщение Apr 23 2009, 06:57
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447



Цитата(scifi @ Apr 23 2009, 09:09) *
Я всегда считал, что отключение оптимизации с целью сокрытия глюков - это всё равно, что прятать голову в песок.

Я всегда работал с максимальной оптимизацией по размеру. Повторю, что глюк возникает при ОТКЛЮЧЕНИИ оптимизации. В данном случае опции Cross Call, которая влияет только на размер RSTACK.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 11:31
Рейтинг@Mail.ru


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