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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Internal Error: [Post Optimize]: Any exception, почему появляется ошибка? (IAR 4.20)
zltigo
сообщение Oct 24 2009, 12:02
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(GetSmart @ Oct 24 2009, 14:57) *
Уже не один и не два нашёл для ARMов.

Возьмите IAR ну какой-нибудь 2.0 вместо 5.xx и оттягивайтесь.
Лично я наступал ровно на один IAR-овский баг лет пять назад, да и тот в следующем релизе пофиксили. Наверное я чего-то делаю неправильно sad.gif, в частности всегда перехожу на текущую версию компилятора, причем неизменно без проблем. Не все проекты переведены на V5, но все V4 безусловно на последней версии V4, и все развиваемые на V5.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Oct 24 2009, 12:29
Сообщение #17


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Приехали. Взял первый попавшийся большой проджект, который в 4.20 компилится и работает в железе. Скомпилил в 4.30.1.237 и ... не работает в железе! biggrin.gif


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 24 2009, 12:36
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(GetSmart @ Oct 24 2009, 15:29) *
Приехали.

Отличный повод начать искать СВОИ ошибки. Начните, наконец, с простого включения и чтения Warnings. Только, естественно, на 4.42.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Oct 24 2009, 12:49
Сообщение #19


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Провёл эксперимент. В чистом 4.20 всё работает (сразу скажу для непонятливых - в 4.20 я не менял ничто и никогда). В чистом 4.30 не работает. Если в 4.30 заменить iccarm.exe на файл из 4.20, то прошивка работает. Но. По размеру и некоторым признакам эта прошивка очень похожа на ту, которую генерит чистый 4.30, чем на ту, которую генерит чистый 4.20. Значет ещё линкер поменялся.

Цитата(zltigo)
Начните, наконец, с простого включения и чтения Warnings. Только, естественно, на 4.42.

Варнинги у меня всегда влючены. Там всё как надо. 4.42 ещё не установил. Поставлю не раньше завтра.

Сообщение отредактировал GetSmart - Oct 24 2009, 12:51


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 24 2009, 12:57
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(GetSmart @ Oct 24 2009, 15:49) *
Варнинги у меня всегда влючены.

Не верю, иначе бы Вы никогда не писали подобные вещи:
Код
   while (1)
    {    tmp = T0TC - LightStamp1;
......

По крайней мере в IAR...


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Oct 24 2009, 12:59
Сообщение #21


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(zltigo @ Oct 24 2009, 18:57) *
Не верю, иначе бы Вы никогда не писали подобные вещи:
Код
   while (1)
    {    tmp = T0TC - LightStamp1;
......

По крайней мере в IAR...

Не понимаю где тут варнинг? Дайте что ли листинг, в котором будет этот варнинг.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 24 2009, 13:05
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(GetSmart @ Oct 24 2009, 15:59) *
Не понимаю где тут варнинг? Дайте что ли листинг, в котором будет этот варнинг.

Вот я и говорю, что надо их все включать sad.gif
Код
      7          void main()
      8          {
      9              u32 LightStamp1 = T0TC;
   \                     main:
   \   00000000   8E02A0E3           MOV      R0,#-536870904
   \   00000004   400C80E3           ORR      R0,R0,#0x4000
   \   00000008   000090E5           LDR      R0,[R0, #+0]
   \   0000000C   2C109FE5           LDR      R1,??main_0     ;; LightNew
   \   00000010   002091E5           LDR      R2,[R1, #+0]
   \   00000014   041091E5           LDR      R1,[R1, #+4]
     10              u32 tmp;
     11              while (1)
                            ^
Remark[Pe236]: controlling expression is constant
     12              {    tmp = T0TC - LightStamp1;
   \                     ??main_1:
   \   00000018   8E32A0E3           MOV      R3,#-536870904
   \   0000001C   403C83E3           ORR      R3,R3,#0x4000
   \   00000020   003093E5           LDR      R3,[R3, #+0]
   \   00000024   003043E0           SUB      R3,R3,R0
     13                  if ((LightCur != LightNew) && (tmp >= 1000))


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Oct 24 2009, 13:10
Сообщение #23


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



А, ремарки! Это вообще бесполезная вещь, которая не влияет на генерируемый файл. Видел я эту ремарку. Она довольно глупая. Именно из-за неё я догадался почему параноидальные сишники считают что правильнее использовать for (;;) для бесконечных циклов. Я ещё могу понять, когда в дефайне ставят do {} while(0), но проблемы с while (1) выше моего понимания smile.gif

Бьюсь об заклад, что скорректировав код так, чтобы исчезли все ремарки, прошивка останется 100% идентичной.

Следуя такой логике следует запретить конструкции #if 0 ... #endif и им подобные, т.к. аналогично while-у используется константное условие. Хотя и в препроцессоре.

Сообщение отредактировал GetSmart - Oct 24 2009, 13:16


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 24 2009, 13:20
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(GetSmart @ Oct 24 2009, 16:10) *
Именно из-за неё я догадался почему параноидальные сишники...

Странно, по-русски Вы пишете достаточно грамотно, и наверное, не считаете это извращением. По чему-бы не писать грамотно и на 'C', даже если компилятору кажется, что он Вас понимает и в результате оптимизации выдает хороший код.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Oct 24 2009, 13:26
Сообщение #25


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(zltigo @ Oct 24 2009, 19:20) *
Странно, по-русски Вы пишете достаточно грамотно, и наверное, не считаете это извращением. По чему-бы не писать грамотно и на 'C', даже если компилятору кажется, что он Вас понимает и в результате оптимизации выдает хороший код.

Ткните меня в стандарт, пожалуйста, где указано, что нельзя использовать константное условие. А иначе - всё, что не запрещено, то - разрешено. А то ведь получится, что и в дефайне ставить while(0) нельзя, и тогда получится "рыба" - без вайла будет ремарка на лишнюю точку с запятой, а с вайлом ремарка на константное условие.

Сообщение отредактировал GetSmart - Oct 24 2009, 13:29


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 24 2009, 13:33
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(GetSmart @ Oct 24 2009, 16:26) *
Ткните меня в стандарт, пожалуйста....

Ткните меня в учебник русского языка в котором прямо сказано, что нельзя писать "моя твоя не понимай".
Нормальная и абсолютно однозначная запись этого
for( ; ; )
без всяких начальных условий, без всяких условий, и без всяких дополнительных действий повторять кусок кода.
Цитата
А то ведь получится, что и в дефайне ставить while(0) нельзя, и тогда получится "рыба"

Неграмотно, но поскольку в данном случае речь идет о трюке, то на то он и трюк, дабы пользоваться им в крайних случаях и со знанием дела.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Oct 24 2009, 14:58
Сообщение #27


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(zltigo @ Oct 24 2009, 19:20) *
Странно, по-русски Вы пишете достаточно грамотно, и наверное, не считаете это извращением. По чему-бы не писать грамотно и на 'C', даже если компилятору кажется, что он Вас понимает и в результате оптимизации выдает хороший код.

"По чему" - пишется вместе. "Почему бы" без дефиса. Перед "наверное" пропущена запятая.

zltigo, нравится Вам такое отношение (компилятора smile.gif) ??? - Мне тоже не нравится. Но мы с Вами прекрасно друг друга понимаем без параноидального соблюдения орфографии и пунктуации.
Только не говорите, что русский не родной smile.gif

Не удержался. Установил таки 4.42. Мой мега-проджект в нём... работает! smile.gif В 4.20 работает, в 4.42 работает, а в 4.30 НЕ РАБОТАЕТ!!! Щас попробую угадать - виноват конечно же я smile.gif
Хотя 4.42 делает самый жирный HEX, на долю процента больше чем 4.30. А 4.20 самый компактный. Это при одинаковой оптимизации High Size.

Сообщение отредактировал GetSmart - Oct 24 2009, 15:44


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 24 2009, 15:52
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(GetSmart @ Oct 24 2009, 17:58) *
zltigo, нравится Вам такое отношение (компилятора smile.gif)

Нравится!
Цитата
Только не говорите, что русский не родной smile.gif

Просто с середины 6 класса русская школа в Будапеште сказывается, ну и жена украинка.
Цитата
Щас попробую угадать - виноват конечно же я smile.gif

Тем не менее, на 99% да sad.gif. Список исправленных-внесенных ошибок IAR ведет и выкладывает в комплекте с компилятором - можете поискать ту, которая присутствует в Вашем исходнике не идущем на 4.30.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Oct 26 2009, 11:13
Сообщение #29


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(zltigo @ Oct 24 2009, 21:52) *
Тем не менее, на 99% да sad.gif. Список исправленных-внесенных ошибок IAR ведет и выкладывает в комплекте с компилятором - можете поискать ту, которая присутствует в Вашем исходнике не идущем на 4.30.

Вы опять неправы smile.gif
http://electronix.ru/forum/index.php?showtopic=68803
Я редко ошибаюсь cool.gif


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 26 2009, 11:25
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата
Список исправленных-внесенных ошибок IAR ведет и выкладывает в комплекте с компилятором - можете поискать ту, которая присутствует в Вашем исходнике не идущем на 4.30.


Цитата(GetSmart @ Oct 26 2009, 14:13) *
Вы опять неправы smile.gif

В чем? Вот описание этой ошибки от IAR исправленной в 4.31
Код
V4.31A 2006-02-03

Program corrections
.....
Nested irq functions did not return properly.
[EW17032, EW17033, EW17038]
....

Так в чем я виноват? В том, что Вы не читаете документацию, пользуетесь в конце 2009 года компиляторами января 2005 и после этого радостно наступаете на грабли описанные и исправленные в феврале 2006 года?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 16:16
Рейтинг@Mail.ru


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