|
Оптимизация, IAR 4.30A for AVR |
|
|
|
 |
Ответов
|
Apr 18 2008, 19:14
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(Visor @ Apr 18 2008, 21:19)  Странная ситуация. Программа откомпилированная с оптимизацией "Speed Medium" работает замечательно. Если откомпилировать с "Speed High" работает не правильно. Такое чувство что переменные портятся из-за прерываний. Гледел ассемблерный код, вроде нет криминала. Что это может быть, может сталкивался кто? Я сталкивался с таким явлением. Поначалу забил, установил средний или низкий уровень и не стал напрягаться. А потом пришёл к выводу, что при высокой оптимизации ИАР активно использует анроллинг, то есть выкидывает ненужные (с его точки зрения) циклы. Таким образом, например, вылетают все паузы на нопах, может ещё что-нибудь. Надо в руководстве на компилятор почитать про все грани оптимизации. IAR Compiler Reference называется, там много интересных вещей написано, как надо делать и как не надо PS: это я всё про иар для МСП, но суть думаю не меняется
Сообщение отредактировал MrYuran - Apr 18 2008, 19:15
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Apr 18 2008, 20:09
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(Visor @ Apr 18 2008, 22:33)  Но в той функции из-за которой проблемы нет ничего подобного, всё гладко, одна арифметика. Посмотрите вчерашнюю ветку. Возможно и у вас что-то подобное.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Apr 18 2008, 21:40
|

Местный
  
Группа: Свой
Сообщений: 240
Регистрация: 23-03-07
Пользователь №: 26 428

|
Цитата(Сергей Борщ @ Apr 19 2008, 04:09)  Посмотрите вчерашнюю ветку. Возможно и у вас что-то подобное. Да кстати, пробывал запрещать прерывания на всё время выполнения функции, глюки пропадали, с чего и сделал вывод о влиянии прерываний. НО! В данной функции не используются переменные модифицируемые в прерываниях.
|
|
|
|
|
Apr 20 2008, 09:39
|

Местный
  
Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530

|
Цитата(Visor @ Apr 19 2008, 00:40)  Да кстати, пробывал запрещать прерывания на всё время выполнения функции, глюки пропадали, с чего и сделал вывод о влиянии прерываний. НО! В данной функции не используются переменные модифицируемые в прерываниях. Может глупость но как у Вас написан мэйн? Код _C_task main ?
--------------------
нельзя недооценивать предсказуемость глупости
|
|
|
|
|
Apr 21 2008, 17:51
|

Местный
  
Группа: Свой
Сообщений: 240
Регистрация: 23-03-07
Пользователь №: 26 428

|
Цитата(sKWO @ Apr 20 2008, 17:39)  Может глупость но как у Вас написан мэйн? Код _C_task main ? Нет не так, но это ничего не меняет. И ещё, в симуляции всё работает замечательно. Но без аппаратных прерываний.
|
|
|
|
Сообщений в этой теме
Visor Оптимизация Apr 18 2008, 18:19    Сергей Борщ Цитата(Visor @ Apr 19 2008, 00:40) В данн... Apr 19 2008, 07:27     Visor Цитата(Сергей Борщ @ Apr 19 2008, 15:27) ... Apr 19 2008, 12:47      singlskv Цитата(Visor @ Apr 19 2008, 16:47) Может ... Apr 19 2008, 16:49      singlskv Цитата(Visor @ Apr 21 2008, 21:51) И ещё,... Apr 21 2008, 20:04       Visor Цитата(singlskv @ Apr 22 2008, 04:04) Вот... Apr 24 2008, 17:39 vet Нельзя исключать и вариант ошибки компилятора. Пои... Apr 19 2008, 16:32
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|