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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Загадочное поведение SAM7S64 & IAR 4.40a
sgrig
сообщение Jul 20 2006, 10:34
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 4-11-05
Из: Tomsk
Пользователь №: 10 464



Имеется проект с несколькими прерываниями: UARTы, ADC, PIO, таймеры и TWI.
Поскольку TWI у SAMa не имеет PDC, а на на нем висят графический индикатор, FRAM и RTC, то есть обмен достаточно интенсивный, я сделал "подкачку байтов" в прерывании. Прерывание короткое, с максимальным приоритетом, так как TWI у SAMa не любит пауз на шине.
Вызов прерываний сделан с использованием Сstartup.s79.

Теперь самое интересное:
- компилю проект с уровнем оптимизации Medium (здесь и далее по тексту: code или size - один хрен). Устройство устойчиво работает сутками, то есть все пучком.
- повышаю уровень оптимизации до High. Короткий всплеск активности на шине TWI и все погибает. Даже индикатор мертв, программа циклит в совершенно левом месте. Думаю, хрен с ним, у IAR-а всегда были такие проблемы при макс. оптимизации. Но:
- снижаю уровень оптимизации до Low. Индикатор работает, а при обмене с FRAM и RTC идут периодические сбои. Но в целом изделие работает.
- отключаю оптимизацию, поведение как в предыдущем случае + через некотое время (час-два) TWI переходит в режим самоудовлетворения - по шине хреначит беспорядочная передача, не прекращающаяся даже при остановке процессора.

Вопрос: как к этому относиться и, главное, кто виноват? Сижу не первый день, свои варианты закончились.
Может кто-нибудь выскажет соображения? Буду рад любой идее.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 20 2006, 10:42
Сообщение #2


Гуру
******

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



Цитата(sgrig @ Jul 20 2006, 13:34) *
Вопрос: как к этому относиться и, главное, кто виноват?

1.Относится к этому следует плохо.
2.Виноват в этом обычно программист неясно выразивший свою мысль компилятору, который тоже, увы,
не совершенен, особенно в предугадании последствий.
3.Локализуйте поблемный кусок включая/отключая оптимизацию на части проекта и локализовав, думайте над более однозначным написанием куска программы.
4. Ну и в качестве надежды на чудо - используйте свежий компилятор:
IAR ARM ANSI C/C++ Compiler V4.40A-P060613/W32
__________________________________^^^^^^^^^

Сообщение отредактировал zltigo - Jul 20 2006, 10:57


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sgrig
сообщение Jul 20 2006, 10:52
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 4-11-05
Из: Tomsk
Пользователь №: 10 464



1 и 2 - полностью согласен, хотя не могу понять вариант с правильным "угадыванием" именно в среднем положении.
А 3-им путем я уже иду, но проект большой, файлов много, а сбои редки. Экстенсивный путь, боюсь, до отпуска не управлюсь.
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jul 20 2006, 11:04
Сообщение #4


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

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



1.Вы все возможное пообъявляли как volatile?
У меня были случаи когда код выделывал кренделя, даже если переменная в прерывании не менялась. Просто инитилась в самом начале.
2.Написать обработчик аварийных ситуаций, в случае проблем, вылететать и инитить TWI заново.

PS Откуда они этот макроселл взяли? Я пока не столкнулся, думал что там наследник АВРовского, еще и продвинутый(как USART с SPI). А как посмотрел, за голову схватился.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 20 2006, 11:09
Сообщение #5


Гуру
******

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



Цитата(sgrig @ Jul 20 2006, 13:52) *
хотя не могу понять вариант с правильным "угадыванием" именно в среднем положении.

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



Цитата(beer_warrior @ Jul 20 2006, 14:04) *
1.Вы все возможное пообъявляли как volatile?

Фу, какой моветон :-( Зачем-же "все возможное" - нужно только "нужное" :-)


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jul 20 2006, 11:35
Сообщение #6


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

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Цитата
Фу, какой моветон :-( Зачем-же "все возможное" - нужно только "нужное" :-)

А вы точно знаете, что точно "нужное", а что "ненужное"?
Тай отож smile.gif
Тем более собака порылась в оптимизаторе smile.gif


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 20 2006, 11:43
Сообщение #7


Гуру
******

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



Цитата(beer_warrior @ Jul 20 2006, 14:35) *
А вы точно знаете, что точно "нужное", а что "ненужное"?

Ну так я :-) а если серьезно, то нужно думать, после чего, естественно, буду и знать нужное.
Если думать о нюансах взаимопонимания с компилятором прямо в процессе написания, оно как-то
легко и непринужденно получается.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sgrig
сообщение Jul 20 2006, 11:47
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 4-11-05
Из: Tomsk
Пользователь №: 10 464



Цитата(zltigo @ Jul 20 2006, 18:09) *
Просто проблема не одна а несколько, хоть и приводят к универсальному результату варианту "не работает". При отключеной оптимизации, если не используется какая-либо система позволяющая делить недостающие ресурсы, у Вас просто все "захлебывается" и какой-то кусок начинает жить исключительно своими проблемами.

Да, возможно Вы правы. Скорее всего, какая-нибудь глупая ошибка, причем, совсем не там, где ищешь.


Цитата(beer_warrior @ Jul 20 2006, 14:04) *
1.Вы все возможное пообъявляли как volatile?

Нет, я так объявляю только те переменные, которые модифицируются в исключениях (прерываниях) и используются в основной программе или же в других исключениях (прерываниях).
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 21 2006, 09:46
Сообщение #9


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(zltigo @ Jul 20 2006, 13:42) *
4. Ну и в качестве надежды на чудо - используйте свежий компилятор:
IAR ARM ANSI C/C++ Compiler V4.40A-P060613/W32
__________________________________^^^^^^^^^

Это именно компилятор или очередной патч для full версии?
На сайле IAR пишется, что он не становится на eval.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 21 2006, 13:26
Сообщение #10


Гуру
******

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



Цитата(IgorKossak @ Jul 21 2006, 12:46) *
Это именно компилятор или очередной патч для full версии?
На сайле IAR пишется, что он не становится на eval.

Патч в виде совершенно автономного компилятора :-). Работает при наличии лицензии на full компилятор ЛЮБОЙ версии. Ну очень любезно со стороны IAR :-)


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
d__
сообщение Jul 22 2006, 09:52
Сообщение #11


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

Группа: Свой
Сообщений: 197
Регистрация: 26-08-04
Пользователь №: 548



Гы-гы-гы! Еще одна жертва ИАРа...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 22 2006, 10:12
Сообщение #12


Гуру
******

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



Цитата(d__ @ Jul 22 2006, 12:52) *
Гы-гы-гы!

Всегда приятно смотреть на смеющегося человека, даже если это "смех без причины..."


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
ig_z
сообщение Jul 24 2006, 13:18
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 27-08-04
Пользователь №: 551



Цитата(zltigo @ Jul 21 2006, 16:26) *
Патч в виде совершенно автономного компилятора :-). Работает при наличии лицензии на full компилятор ЛЮБОЙ версии. Ну очень любезно со стороны IAR :-)


Вы можете сбросить на фтп вашу лицензию? У себя нашел только
EWARM Version: 2.1_WIN standalone license (dongled) (no:1000-005-880-9779)
но с ней не работает, т.к. это dongled лицензия. А генераторы делают лицензии для евалюшн версий
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 24 2006, 15:51
Сообщение #14


Гуру
******

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



Цитата(ig_z @ Jul 24 2006, 16:18) *
А генераторы делают лицензии для евалюшн версий

Я пользую:
2.1_WIN\0EWARM\0\0....

Готовый выложил в первоначальную ветку:
http://electronix.ru/forum/index.php?showt...mp;#entry137296


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
d__
сообщение Jul 25 2006, 09:00
Сообщение #15


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

Группа: Свой
Сообщений: 197
Регистрация: 26-08-04
Пользователь №: 548



Да бросьте этот ИАР аб землю и плюньте на него слюной! Поставьте нормальный ARM Ltd. компилер и он никогда не ударит вам ножом в спину!
Go to the top of the page
 
+Quote Post

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

 


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


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