Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Не идет оптимизация ARM IAR 440A
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
misyachniy
Проект отладил без оптимизации.
Включил оптимизацию по скорости LOW - работает.
Включил MEDIUM - зацикливается в функции.

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


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


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


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

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

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

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

Ну а конкретных советов, когда уже "большое" и "не работает" - конкретных советов нет sad.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.