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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Новая версия IAR EW430 4.10A, появилась новая версия
rezident
сообщение Nov 20 2007, 00:07
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Dog Pawlowa @ Oct 22 2007, 14:29) *
А прибор то работает? smile.gif

Сегодня удалось-таки проверить в приборе прошивку, скомпилированную новой версией 4.10A. Работает! 08.gif
Оптимизация High-Balanсed, опция Code motion по традиции выключена. Reduce stack usage включена.
Цитата
5 466 bytes of CODE memory
405 bytes of DATA memory (+ 60 absolute )
132 bytes of CONST memory (+ 176 absolute )

В 3.42a с такими же установками (только оптимизация High-Speed) было
Цитата
5 730 bytes of CODE memory
405 bytes of DATA memory (+ 60 absolute )
164 bytes of CONST memory (+ 176 absolute )

Куда в 4.10a деваются константы, не пойму до сих пор cranky.gif
Go to the top of the page
 
+Quote Post
VAI
сообщение Nov 20 2007, 04:56
Сообщение #17


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

Группа: Модераторы
Сообщений: 1 120
Регистрация: 17-06-04
Пользователь №: 37



Цитата
Куда в 4.10a деваются константы, не пойму до сих пор

Кстати, я ручками посчитал по всем файлам *.lst сколько констант используется, и сравнил сколько пишет в конце и 3.30а и 4.10а.
В *.lst - количество const одинаковое в обоих версиях, и оно больше, чем то, которое написано в конце, после линковки. В обоих версиях "результат" меньше "суммы", в 4.10а просто он меньше, чем в 3.30а.
У меня, кстати, надурняка с 3.30а на 4.10а перекомпилировалось без ошибок, не заработало, но сейчас "переправа" сразу нескольких проектов, притормозил переход... хотя попробовать охота...


--------------------
Если зайца бить, его можно и спички научить зажигать
Сколько дурака не бей - умнее не будет. Зато опытнее
Go to the top of the page
 
+Quote Post
diper
сообщение Nov 20 2007, 07:54
Сообщение #18


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

Группа: Свой
Сообщений: 94
Регистрация: 12-11-05
Из: Росиия, Нижний Новгород
Пользователь №: 10 750



Цитата(rezident @ Nov 20 2007, 04:07) *
Оптимизация High-Balanсed, опция Code motion по традиции выключена. Reduce stack usage включена.

Чем вызвана такая такая нелюбовь к Code motion ?

По поводу констант сложидось впечатление что он их начал активнее инлайнить. Сравнить уже не с чем моcты сожжены smile.gif
Go to the top of the page
 
+Quote Post
VAI
сообщение Nov 20 2007, 08:48
Сообщение #19


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

Группа: Модераторы
Сообщений: 1 120
Регистрация: 17-06-04
Пользователь №: 37



Цитата
Чем вызвана такая такая нелюбовь к Code motion ?

Глючит. У меня переменную, которая менялась в цикле, выводила за цикл...
Где-то здесь писалось.


--------------------
Если зайца бить, его можно и спички научить зажигать
Сколько дурака не бей - умнее не будет. Зато опытнее
Go to the top of the page
 
+Quote Post
rezident
сообщение Nov 20 2007, 10:33
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(diper @ Nov 20 2007, 12:54) *
Чем вызвана такая такая нелюбовь к Code motion ?

Исторически так сложилось. Глючит эта опция у IAR. IAR даже с volatile не всегда корректно обходится sad.gif
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Nov 20 2007, 16:00
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



1 ) В одном проекте только часовой кварц, контроль которого встроенными средствами MSP не поддерживается. Поэтому было сделано грубое сравнение таймера от кварца с программным циклом от DCO. Цикл изменился, константу пришлось менять.

2 ) Ага, я его сломал! Поставил оптимизацию high, balanced, снял галку Code motion.

Код
Error[e46]: Undefined external "This_Function" referred in work ( D:....r43 )
Internal Error: In function: unknown
Diagnostic: unexpected exception
P0: 1    P1: 0
Error while running Linker

Total number of errors: 2
Total number of warnings: 0


3) Поигрался с галками. Ошибка исчезает, если снять галку Function inlining. То есть функция "проинлайнена", а линковщик ищет указатель на нее и естественно не находит.

Вывод: реальный глюк, однако...


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
rezident
сообщение Nov 20 2007, 16:43
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Dog Pawlowa @ Nov 20 2007, 21:00) *
2) Поигрался с галками. Ошибка исчезает, если снять галку Function inlining. То есть функция "проинлайнена", а линковщик ищет указатель на нее и естественно не находит.

Вывод: реальный глюк, однако...

Угу. Function inlining чаще всего тоже убираю. Особенно когда в программе много работы с указателями.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Nov 20 2007, 17:08
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(rezident @ Nov 20 2007, 20:43) *
Угу. Function inlining чаще всего тоже убираю. ...

Оказывается, у меня принудительно стояла "pragma inline" для этой функции.
Видимо, отследить человеческим разумом сочетания возможностей среды и компилятора просто нереально.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
diper
сообщение Nov 20 2007, 17:32
Сообщение #24


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

Группа: Свой
Сообщений: 94
Регистрация: 12-11-05
Из: Росиия, Нижний Новгород
Пользователь №: 10 750



Цитата(Dog Pawlowa @ Nov 20 2007, 21:08) *
Видимо, отследить человеческим разумом сочетания возможностей среды и компилятора просто нереально.

Если придерживаться правила "буть проще", видимо многих косяков можно избежать. smile.gif
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Nov 21 2007, 15:55
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



А еще в новой версии происходит контроль заполнения стека. Если на момент останова стек занят более чем на 90%, в окне сообщений выводится предупреждение.
Правда, над выбором точки останова нужно подумать самому. А при наличии вложенных прерываний вряд ли вообще можно поймать такую ситуацию.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
diper
сообщение Nov 21 2007, 16:13
Сообщение #26


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

Группа: Свой
Сообщений: 94
Регистрация: 12-11-05
Из: Росиия, Нижний Новгород
Пользователь №: 10 750



Цитата(Dog Pawlowa @ Nov 21 2007, 19:55) *
А еще в новой версии происходит контроль заполнения стека. Если на момент останова стек занят более чем на 90%, в окне сообщений выводится предупреждение.
В 3.42А это уже было и настраивается в опциях отладчика. При отладке в операционке вообще вещь бесполезная, т.к. стек там всегда не "там". А у меня и в main пишет что стек кончилсяsmile.gif Так как в качестве стека main используются буфферы таск, которые до старта таск не нужны.
Go to the top of the page
 
+Quote Post
akostin
сообщение Nov 24 2007, 14:19
Сообщение #27


Участник
*

Группа: Свой
Сообщений: 72
Регистрация: 4-12-04
Пользователь №: 1 322



Такая проблема.
У меня в Симуляторе IAR for MSP 4.10 подпрограмма длительностью примерно 1 млн. циклов выполняется порядка 1 минуты. Это при условии, что активно окно IDE, иначе еще дольше.
Вопрос: Что симулирует Pentium целую минуту в процедуре, котрую MSP должен исполнить за 125мс?
Как уменьшить это время? Может в настройках что-то не то?

Проверить на старых версиях IAR for MSP сейчас нет возможности, но я запихнул ту же процедуру в IAR for AVR - там симуляция занимает несколько секунд, что вполне приемлимо.
Go to the top of the page
 
+Quote Post
akostin
сообщение Nov 25 2007, 17:08
Сообщение #28


Участник
*

Группа: Свой
Сообщений: 72
Регистрация: 4-12-04
Пользователь №: 1 322



Цитата(akostin @ Nov 24 2007, 17:19) *
Проверить на старых версиях IAR for MSP сейчас нет возможности, но я запихнул ту же процедуру в IAR for AVR - там симуляция занимает несколько секунд, что вполне приемлимо.

Вот проверил скорость выполнения процедуры БПФ в разных версиях симулятора IAR EW430:
3.21 31 сек
3.40 55 сек
3.42 52 сек
4.10 60 сек
IAR AVR 4.20 3 сек !!!!!
Особенно удивила старая 3.21 - работает быстрее новых.
Напоминаю - число циклов процессора MSP430 в данной процедуре порядка 1млн.
Кто-нибудь сталкивался с такой ситуацией?
Go to the top of the page
 
+Quote Post
rezident
сообщение Nov 26 2007, 03:17
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(akostin @ Nov 25 2007, 22:08) *
Вот проверил скорость выполнения процедуры БПФ в разных версиях симулятора IAR EW430:
3.21 31 сек
3.40 55 сек
3.42 52 сек
4.10 60 сек
IAR AVR 4.20 3 сек !!!!!
Особенно удивила старая 3.21 - работает быстрее новых.
Напоминаю - число циклов процессора MSP430 в данной процедуре порядка 1млн.
Кто-нибудь сталкивался с такой ситуацией?

ИМХО это особенности симуляции Фон-Неймановской архитектуры у MSP430, в отличие от Гарвардской у AVR.
Go to the top of the page
 
+Quote Post
Bovolk
сообщение Nov 30 2007, 21:45
Сообщение #30


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 6-09-06
Из: Украина/Киев
Пользователь №: 20 145



Наступил на грабли при вызове ассемблерных процедур!

Соответствие параметров и регистров изменилось!!!

См. стр.93 "EW430_CompilerReference.pdf", правьте свои исходники на ассемблере, во всяком случае те, у кого в вызываемых функциях более одной переменной.
Go to the top of the page
 
+Quote Post

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

 


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


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