Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Глюки IAR на больших проектах
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
sergik_vrn
У меня IAR EWARM 4.41a, до этого был 4.20с - на обоих серьезные проблемы при работе с большими проектами (из большого числа файлов). Среда начинает сильно тормозить, при переключении контекста нередки зависания на 1-2 минуты и более, загрузка проца 99%, немереное потребление виртуальной памяти, особенно в режиме отладки... Замечено было даже, что при превышении определенного к-ва исходных файлов в каталоге проекта среда при запуске трапается, приходится разносить исходники по подкаталогам. Сперва грешил на "грязную" систему NT 2000, на днях установил с 0 XP, попробовал на совсем "голой" - картина аналогичная, даже хуже.
Скажите мне, я такой один, или у кого-то наблюдались похожие симптомы?
deadman
Было похожее на IAR для MSP430.
После какого-то времени начинал жутко тормозить.
Проекты были небольшие, так что с размером скорее не связано.
Закрыл/открыл - какое-то время работаешь. sad.gif
alexander55
Цитата(sergik_vrn @ Dec 5 2007, 10:54) *

А что за машина у Вас, если не секрет ?
zhevak
Цитата(deadman @ Dec 5 2007, 13:18) *
Было похожее на IAR для MSP430.
После какого-то времени начинал жутко тормозить.
Проекты были небольшие, так что с размером скорее не связано.
Закрыл/открыл - какое-то время работаешь. sad.gif


Примерно та же хренотень.

IAR C/C++ Compiler for AVR
4.30A/W32 [Evaluation] (4.30.1.3)
Пролечен, но ругается "Time limited license: 14 days left"

Процессор Пень-4 2.4 ГГц двуядерный (поэтому загружается на 50%), оперативы 512 Мег. Т.е. никаких видимых ограничений не наблюдается.

Откраваю среду -- нормально, проц не загружен.
Загружаю проект -- иногда нормально, иногда проц срывается в 50% загрузку.
Начинаю что-нибудь изменять в тексте -- стабильно 50% загрузка, иногда подскакивает до 100, потом снова падает до 50.

Зависаний компа на 1-2 минуты не получал, хотя тормоза в IAR'е ощущуаются. Собственно как наскочил на этот эффект: по звуку вентилятора на проце. Как только -- так сразу пропеллер натужно начинает сдувать тепло. Послал комп на три кнопочки и увидел.

Автору спасибо за поднятую тему, я бы сам наверно не собрался ее поднять.
sergik_vrn
Цитата(alexander55 @ Dec 5 2007, 11:42) *
А что за машина у Вас, если не секрет ?


P4 2.4ГГц, 512М ОЗУ, Win XP SP2. пока не начинаются тормоза, никаких претензий по производительности нет. Visual Studio не тормозит

Цитата(zhevak @ Dec 5 2007, 11:42) *
[..]
Зависаний компа на 1-2 минуты не получал, хотя тормоза в IAR'е ощущуаются. Собственно как наскочил на этот эффект: по звуку вентилятора на проце. Как только -- так сразу пропеллер натужно начинает сдувать тепло. Послал комп на три кнопочки и увидел.


кстати, да, после 10-15 минут работы начинает шуметь вентилятор проца. ну я со всем готов мириться, но эти зависоны...
Andy Mozzhevilov
Потратьте немного времени на освоение запуска компилятора через make или с использованием подобных технологий сборки проекта, возьмите нормальный редактор, типа слика или подобного другого. Пара недель, которые вы инвестируете в эти технологии, потом окупятся сторицей. Я не понимаю, как можно пользоваться достаточно убогим встроенным редактором оболочки IAR.
Сам пользую оболочку IAR только для запуска дебагера.
zltigo
Цитата(Andy Mozzhevilov @ Dec 5 2007, 11:26) *
Я не понимаю, как можно пользоваться...

Абсолютно аналогично - перестал понимать "как" через несколько часов пользования sad.gif.
Пользоваться надо нормальными IDE. Переход к этому может облегчить имеющаяся в комплекте поставки IAR утилита iarbuild.
sergik_vrn
Цитата(Andy Mozzhevilov @ Dec 5 2007, 12:26) *
Потратьте немного времени на освоение запуска компилятора через make или с использованием подобных технологий сборки проекта, возьмите нормальный редактор, типа слика или подобного другого. Пара недель, которые вы инвестируете в эти технологии, потом окупятся сторицей. Я не понимаю, как можно пользоваться достаточно убогим встроенным редактором оболочки IAR.
Сам пользую оболочку IAR только для запуска дебагера.

именно так, как Вы описали, я и работаю. к сожалению, если править ошибки компиляции в слике еще можно, то для отладки-правки все равно приходится запускать среду, а это значит создавать проект, вести его и проч. при этом и наблюдаются вышеописанные проблемы
Andy Mozzhevilov
Цитата(sergik_vrn @ Dec 5 2007, 14:47) *
именно так, как Вы описали, я и работаю. к сожалению, если править ошибки компиляции в слике еще можно, то для отладки-правки все равно приходится запускать среду, а это значит создавать проект, вести его и проч. при этом и наблюдаются вышеописанные проблемы

Нет, вы усложнили себе жизнь. Достаточно сказать линкеру, чтобы он создал файл d79
(возможно еще дополнительно потребуется sim, у меня создается во всяком случае, не помню подробностей, зачем). Потом вы в IAR в проект добавляете единственный файл - с расширением d79, для отладки в нем целиком и полностью содержится вся информация. В IAR настраиваете только опции дебагера. Вуаля.

вот из makefile опции по выходным форматам файлов:
Код
-o $(PROJ_NAME).d79 -Fubrof                                      
-Osimple-code=$(PROJ_NAME).sim                              
-Ointel-extended,1=$(PROJ_NAME).hex
sergik_vrn
Цитата(Andy Mozzhevilov @ Dec 5 2007, 13:02) *
Нет, вы усложнили себе жизнь. Достаточно сказать линкеру, чтобы он создал файл d79
(возможно еще дополнительно потребуется sim, у меня создается во всяком случае, не помню подробностей, зачем). Потом вы в IAR в проект добавляете единственный файл - с расширением d79, для отладки в нем целиком и полностью содержится вся информация. В IAR настраиваете только опции дебагера. Вуаля.

вот из makefile опции по выходным форматам файлов:
Код
-o $(PROJ_NAME).d79 -Fubrof                                      
-Osimple-code=$(PROJ_NAME).sim                              
-Ointel-extended,1=$(PROJ_NAME).hex

любопытно. сейчас попробоую. спасибо за совет
IgorKossak
Цитата(sergik_vrn @ Dec 5 2007, 09:54) *
У меня IAR EWARM 4.41a, до этого был 4.20с - на обоих серьезные проблемы при работе с большими проектами (из большого числа файлов). Среда начинает сильно тормозить, при переключении контекста нередки зависания на 1-2 минуты и более, загрузка проца 99%, немереное потребление виртуальной памяти, особенно в режиме отладки... Замечено было даже, что при превышении определенного к-ва исходных файлов в каталоге проекта среда при запуске трапается, приходится разносить исходники по подкаталогам. Сперва грешил на "грязную" систему NT 2000, на днях установил с 0 XP, попробовал на совсем "голой" - картина аналогичная, даже хуже.
Скажите мне, я такой один, или у кого-то наблюдались похожие симптомы?

Среда 4.42 и 5.10, комп средней мощности, проекты как маленькие так и большие.
Загрузка процессора полная только при сборке, но это от среды не зависит, компилятор и линкер так написаны. При отладке загрузка подскакивает до максимума на время отработки шага, т. е. очень ненадолго. Другие особенности не проверял.
Dog Pawlowa
Не знаю, у меня зависания наблюдались после переустановки системы, которые вылечились тем же клином. И это на стареньком ноутбуке.
На PC проект перекомпилируется за 40 с, работаю в среде. Много, но терпимо.
При редактировании одного сишного файла проект собирается за 10 с. Как раз время подумать.
Хотелось бы понять, что можно вместо 40 с получить 10с, отказавшись от среды? Не верю как-то.
msalov
Цитата(Dog Pawlowa @ Dec 5 2007, 15:12) *
При редактировании одного сишного файла проект собирается за 10 с. Как раз время подумать.
Хотелось бы понять, что можно вместо 40 с получить 10с, отказавшись от среды? Не верю как-то.

Не совсем так. При редактировании всего одного файла, компилируется только редактированный файл, далее вновь скомпилированный файл линкуется с ранне скомпилированными файлами и библиотеками. Отсюда и получается разница во времени.
DASM
Собрать то можно и в другое IDE.. а вот отлаживать (если надо) sad.gif Тормоза тоже замечал недетские sad.gif
sergik_vrn
Цитата(sergik_vrn @ Dec 5 2007, 13:09) *
любопытно. сейчас попробоую. спасибо за совет

попробовал. после некоторых танцев в слике все закомпилялось, отладка из IAR работает по указанной схеме, весьма доволен, тормоза пропали. всем большое спасибо и рекомендую. если кому-то надо, могу поделиться готовыми настройками для gmake
zltigo
Цитата(sergik_vrn @ Dec 7 2007, 10:40) *
...могу поделиться готовыми настройками для gmake

А в чем их соль?
sergik_vrn
Цитата(zltigo @ Dec 7 2007, 11:59) *
А в чем их соль?

никакой особой соли, просто готовые настройки для запуска компилера. для тех, кто раньше работал в среде, по себе знаю, может оказаться весьма полезно - написать make-файл с нуля ох как непросто
zltigo
Цитата(sergik_vrn @ Dec 7 2007, 11:37) *
...просто готовые настройки для запуска компилера.

Думаю, что и это не помешает для наставления на "путь истинный" smile.gif
sergik_vrn
Цитата(zltigo @ Dec 7 2007, 12:59) *
Думаю, что и это не помешает для наставления на "путь истинный" smile.gif

тогда посоветуйте, как это лучше сделать - повесить архив или процитировать файлы в сообщении? их всего три, в общем небольшого размера
IgorKossak
Цитата(sergik_vrn @ Dec 7 2007, 12:52) *
тогда посоветуйте, как это лучше сделать - повесить архив или процитировать файлы в сообщении? их всего три, в общем небольшого размера

Лучше присоединить к сообщению архив.
forever failure
Ну вот, к примеру учебно-тренировочный мэйкфайл для иаровского проекта: (сорри, аттач прицепить не получилось)
Код
ENVROOT = "C:/Program Files/IAR Systems/Embedded Workbench  Evaluation version"
COMROOT = $(ENVROOT)/common
AVRROOT = $(ENVROOT)/avr
LIBROOT = $(AVRROOT)/lib
SRCROOT = ../..

INC = -I$(AVRROOT)/inc -I$(AVRROOT)/inc/clib
MMCU = --cpu=m128

CC = $(AVRROOT)/bin/iccavr
CCFLAGS = $(MMCU) -ms -o ./ -y --initializers_in_flash -s9 --cross_call_passes=4 -DENABLE_BIT_DEFINITIONS\
    -e --do_cross_call --require_prototypes $(INC) --eeprom_size 4096 --lock_regs=4

AS = $(AVRROOT)/bin/aavr
ASFLAGS = -v3 -O./ -s+ -w+ "-M<>" -u_enhancedCore -DIAR -D__ASSEMBLER__ -D__HAS_ENHANCED_CORE__=1 -D__HAS_MUL__=1\
    $(INC) -D__MEMORY_MODEL__=2 -D__ATMEGA128__=1 -D__HAS_ELPM__=1  

LD = $(COMROOT)/bin/xlink.exe
LDFLAGS = -Fintel-standard -I$(AVRROOT)/lib -f $(AVRROOT)/src/template/cfgcan128.xcl\
    -D_..X_HEAP_SIZE=80 -D_..X_CSTACK_SIZE=80 -D_..X_RSTACK_SIZE=80 -e_small_write=_formatted_write\
    -e_medium_read=_formatted_read -f $(AVRROOT)/src/template/cfg3s.xcl -D_..X_FLASH_BASE=_..X_INTVEC_SIZE\
    -H1895 "-h(CODE)0-(_..X_INTVEC_SIZE-1)" -D_..X_EXT_SRAM_BASE=_..X_SRAM_BASE\
    -D_..X_EXT_SRAM_END=_..X_SRAM_BASE -D_..X_EXT_ROM_BASE=_..X_SRAM_BASE -D_..X_EXT_ROM_END=_..X_SRAM_BASE\
    -D_..X_EXT_NV_BASE=_..X_SRAM_BASE -D_..X_EXT_NV_END=_..X_SRAM_END -D_..X_EXT_CSTACK_BASE=_..X_SRAM_BASE\
    -D_..X_EXT_CSTACK_END=_..X_SRAM_BASE -D_..X_EXT_RSTACK_BASE=_..X_SRAM_BASE -D_..X_EXT_RSTACK_END=_..X_SRAM_BASE\
    -C $(AVRROOT)/lib/clib/cl3s-ec.r90

PROGRAMMER = avrdude
PROGFLAGS = -p m128 -c usbasp

OBJLIST = main.r90 interrupt.r90 cstartup.r90

all: $(OBJLIST)
    $(LD) $(OBJLIST) $(LDFLAGS) -o image.hex

main.r90: $(SRCROOT)/main.c
    $(CC) $(CCFLAGS) $(SRCROOT)/main.c

cstartup.r90:
    $(AS) $(ASFLAGS) $(AVRROOT)/src/lib/cstartup.s90

interrupt.r90: $(SRCROOT)/interrupt.S
    $(AS) $(ASFLAGS) $(SRCROOT)/interrupt.S

.phony: program fuse lock clean

program: image.hex
    $(PROGRAMMER) $(PROGFLAGS) -U flash:w:image.hex:i

# atmega128 fuses: crystal 4 MHz, no m103 compat, BOD enabled, BODLEVEL = 2.7v, JTAG disabled
fuse:
    $(PROGRAMMER) $(PROGFLAGS) -U lfuse:w:0xAF:m -U hfuse:w:0xD9:m -U efuse:w:0xFF:m

lock:
    $(PROGRAMMER) $(PROGFLAGS) -U lock:w:0x3C:m

clean:
    del *.r90 *.hex

# EOF
ivainc1789
Тормоза сборки на больших проектах.... Так какой камень прошиваете, какого размера код получаете? Нужно ведь как-то оценить размер проекта, а то у меня Мега16 забита полностью в макс оптимизации, сборка длится 7 сек. Ни зависонов, ни тормозов... Вполне устраивает...
sergik_vrn
Цитата(ivainc1789 @ Dec 7 2007, 14:27) *
Тормоза сборки на больших проектах.... Так какой камень прошиваете, какого размера код получаете? Нужно ведь как-то оценить размер проекта, а то у меня Мега16 забита полностью в макс оптимизации, сборка длится 7 сек. Ни зависонов, ни тормозов... Вполне устраивает...

уточню - дело не в сборке больших проектов, сборка сама как раз не тормозит (просто занимает определенное время, пропорциональное количеству файлов проекта). Речь шла изначально о глюках самой среды, когда она зависает на длительное время без особых причин (например, после переключения контекста). длительность и частота зависаний сильно зависит от размера проекта, кроме того, повторюсь, при добавлении в один каталог диска большого к-ва файлов, наблюдал трапы.

Цитата(forever failure @ Dec 7 2007, 14:01) *
Код
LDFLAGS = -Fintel-standard -I$(AVRROOT)/lib -f $(AVRROOT)/src/template/cfgcan128.xcl\
    -D_..X_HEAP_SIZE=80 -D_..X_CSTACK_SIZE=80 -D_..X_RSTACK_SIZE=80 -e_small_write=_formatted_write\
    -e_medium_read=_formatted_read -f $(AVRROOT)/src/template/cfg3s.xcl -D_..X_FLASH_BASE=_..X_INTVEC_SIZE\
    -H1895 "-h(CODE)0-(_..X_INTVEC_SIZE-1)" -D_..X_EXT_SRAM_BASE=_..X_SRAM_BASE\
    -D_..X_EXT_SRAM_END=_..X_SRAM_BASE -D_..X_EXT_ROM_BASE=_..X_SRAM_BASE -D_..X_EXT_ROM_END=_..X_SRAM_BASE\
    -D_..X_EXT_NV_BASE=_..X_SRAM_BASE -D_..X_EXT_NV_END=_..X_SRAM_END -D_..X_EXT_CSTACK_BASE=_..X_SRAM_BASE\
    -D_..X_EXT_CSTACK_END=_..X_SRAM_BASE -D_..X_EXT_RSTACK_BASE=_..X_SRAM_BASE -D_..X_EXT_RSTACK_END=_..X_SRAM_BASE\
    -C $(AVRROOT)/lib/clib/cl3s-ec.r90

на мой вкус подобные вещи лучше задавать в xcl-файле, гораздо более совместимо и адаптируемо

Цитата(IgorKossak @ Dec 7 2007, 13:54) *
Лучше присоединить к сообщению архив.

рабочий make-файл для моего проекта под IAR EWARM 4.41 присоединен. основано на исходниках для AVR, любезно предоставленных в свое время Harry Zhurov'ым. сборка выполняется при помощи vsbuild вызовом из слика echo src_list = %{*.*} > slist.mak | gmake all
forever failure
Кстати, два вопроса в связи с этим:
Есть ли в ИАРовском тулчейне своя make? Чо-то я там не нашёл, и использую гнутую.
Где можно найти полное описание языка make, а не только хелловорлды, по возможности с описаниями всячеких расширений ? А то ведь их (мэйков) тоже есть не один вариант, и иной раз мэйкфайл для одной среды не подходит к другой.
Николай Z
Цитата(sergik_vrn @ Dec 5 2007, 10:54) *
У меня IAR EWARM 4.41a, до этого был 4.20с - на обоих серьезные проблемы при работе с большими проектами (из большого числа файлов). Среда начинает сильно тормозить, при переключении контекста нередки зависания на 1-2 минуты и более, загрузка проца 99%, немереное потребление виртуальной памяти, особенно в режиме отладки... Замечено было даже, что при превышении определенного к-ва исходных файлов в каталоге проекта среда при запуске трапается, приходится разносить исходники по подкаталогам. Сперва грешил на "грязную" систему NT 2000, на днях установил с 0 XP, попробовал на совсем "голой" - картина аналогичная, даже хуже.
Скажите мне, я такой один, или у кого-то наблюдались похожие симптомы?


Пользуюсь IAR 4.42...
Проект состоит примерно из 50 *.c файлов, ну и куча *.h-файлов - не меньше 50-ти однозначно...
Система - XP, RAM - 1024, двухголовый пень - частота 2.2 Ггц 2 Duo CPU E4500... Целевой процессор - STR912F на нашей собственной плате....

Даже при работе со встроенным редактором IDE - проблем не возникает.
И зависания если и возникают - то не чаще 1-2 раз за неделю... При том, что я машину обычно не выключаю и проект висит открытым - иногда неделями...
sergik_vrn
Цитата(Николай Z @ Dec 7 2007, 17:06) *
Пользуюсь IAR 4.42...
Проект состоит примерно из 50 *.c файлов, ну и куча *.h-файлов - не меньше 50-ти однозначно...
Система - XP, RAM - 1024, двухголовый пень - частота 2.2 Ггц 2 Duo CPU E4500... Целевой процессор - STR912F на нашей собственной плате....

Даже при работе со встроенным редактором IDE - проблем не возникает.
И зависания если и возникают - то не чаще 1-2 раз за неделю... При том, что я машину обычно не выключаю и проект висит открытым - иногда неделями...

Вам повезло smile.gif хотя у меня файлов *.cpp под 80... попробовать штоли новую версию...

Цитата(forever failure @ Dec 7 2007, 16:57) *
Кстати, два вопроса в связи с этим:
Есть ли в ИАРовском тулчейне своя make? Чо-то я там не нашёл, и использую гнутую.
Где можно найти полное описание языка make, а не только хелловорлды, по возможности с описаниями всячеких расширений ? А то ведь их (мэйков) тоже есть не один вариант, и иной раз мэйкфайл для одной среды не подходит к другой.

1. нет, я тоже гнутую использую
2. погуглить не пробовали? уж что-что, но мейк... в свое время я без проблем нашел подробное описание, правда, с ходу его понять проблематично
IgorKossak
Цитата(sergik_vrn @ Dec 7 2007, 16:12) *
2. погуглить не пробовали? уж что-что, но мейк... в свое время я без проблем нашел подробное описание, правда, с ходу его понять проблематично

Здесь надо быть осторожным. Мейк мейку рознь. И многие из них не совместимы.
Ищите gnu make.
forever failure
я обо што и говорю.
Есь, по крайней мере GNU, BSD, Borland make, Microsoft nmake, Sun dmake. В большинстве своём - одно и тоже, но несовместимости и расширения совершенно точно есть.
Непомнящий Евгений
Цитата(forever failure @ Dec 7 2007, 16:57) *
Есть ли в ИАРовском тулчейне своя make? Чо-то я там не нашёл, и использую гнутую.


Что вы имеете в виду под "своей make"?
Есть iarbuild, который на вход получает проект *.ewp и название конфигурации и его собирает....
Удобно для быстрого перехода под другую IDE. На будущее по-моему, лучше все равно использовать какие-нибудь сторонние тулзы для билда. Я использую SCons.
msalov
Цитата(forever failure @ Dec 7 2007, 15:57) *
Кстати, два вопроса в связи с этим:
Есть ли в ИАРовском тулчейне своя make? Чо-то я там не нашёл, и использую гнутую.
Где можно найти полное описание языка make, а не только хелловорлды, по возможности с описаниями всячеких расширений ? А то ведь их (мэйков) тоже есть не один вариант, и иной раз мэйкфайл для одной среды не подходит к другой.

Как бы это странно не выглядело, но наиболее полную информацию о GNU версии make можно получить на офф сайте http://www.gnu.org/software/make/
gladov
Цитата(Andy Mozzhevilov @ Dec 5 2007, 13:02) *
Нет, вы усложнили себе жизнь. Достаточно сказать линкеру, чтобы он создал файл d79
(возможно еще дополнительно потребуется sim, у меня создается во всяком случае, не помню подробностей, зачем). Потом вы в IAR в проект добавляете единственный файл - с расширением d79, для отладки в нем целиком и полностью содержится вся информация. В IAR настраиваете только опции дебагера. Вуаля.

вот из makefile опции по выходным форматам файлов:
Код
-o $(PROJ_NAME).d79 -Fubrof                                      
-Osimple-code=$(PROJ_NAME).sim                              
-Ointel-extended,1=$(PROJ_NAME).hex


А возможно при этом заставить ИАР зацепить для отладки исходники на С?
Andy Mozzhevilov
Цитата(gladov @ Dec 20 2007, 18:23) *
А возможно при этом заставить ИАР зацепить для отладки исходники на С?

Да, в этом и суть, чтобы отлаживаться полноценно на уровне исходников, и при этом не мутить в ИАР параллельный проект.
gladov
Цитата(Andy Mozzhevilov @ Dec 20 2007, 16:27) *
Да, в этом и суть, чтобы отлаживаться полноценно на уровне исходников, и при этом не мутить в ИАР параллельный проект.


Спасибо, обязательно попробую такой способ отладки.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.