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

 
 
 
Reply to this topicStart new topic
> Не идет оптимизация ARM IAR 440A
misyachniy
сообщение Jan 25 2008, 11:47
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454



Проект отладил без оптимизации.
Включил оптимизацию по скорости LOW - работает.
Включил MEDIUM - зацикливается в функции.

Нашел эту функцию, поставил перед ней
Код
#pragma optimize=s 2


Вылетает в прерывание
Код
dabtvec:
    B         dabtvec            ; 0x10 Data Abort


Какая методика поиска "узких" мест существует?
Go to the top of the page
 
+Quote Post
KRS
сообщение Jan 25 2008, 12:21
Сообщение #2


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

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Очень часто проблема бывает в остуствии volatile для тех переменных которые используются в прерывании или железом (например DMA)
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jan 25 2008, 13:29
Сообщение #3


Шаман
******

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



1. Иногда помогает чтение Known problems в прилагаемой документации.
2. Просмотр листинга позволяет выяснить проблемы в коде (чаще всего).
3. Обновиться до последней версии продукта если это был баг компилятора.
Если функция не велика, выложите её сюда, посмотрим.
Go to the top of the page
 
+Quote Post
misyachniy
сообщение Jan 25 2008, 14:42
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454



Цитата(IgorKossak @ Jan 25 2008, 15:29) *
1. Иногда помогает чтение Known problems в прилагаемой документации.
2. Просмотр листинга позволяет выяснить проблемы в коде (чаще всего).
3. Обновиться до последней версии продукта если это был баг компилятора.
Если функция не велика, выложите её сюда, посмотрим.


Функцию которая работает с переменной я могу пошагово отладить и посмотреть почему она не оптимизируется.
Я оптимизвцию убрал, но в программе в другом месте "вылезает боком" оптимизация.

Посмотреть в каком месте сбой я могу. Но проект большой (MP3 плеер с MMC на основе MiniMAD/ libmad).
Вылавливание ошибок DATA ABORT затруднительно, так как стек вызова функций ничего не показывает. Я запустил поиск по листингу адреса в R12, ничего не нашел.
Наверное адрес линкер пересчитывает.

Нужно советы бывалыхю
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 25 2008, 16:11
Сообщение #5


Гуру
******

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



Цитата(misyachniy @ Jan 25 2008, 14:47) *
Какая методика поиска "узких" мест существует?

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

Ну а конкретных советов, когда уже "большое" и "не работает" - конкретных советов нет sad.gif


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

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

 


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


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