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

 
 
> Влияние уровня оптимизации на работоспособность..., EWARM 6.30.4
Andy_F
сообщение Jan 21 2012, 16:33
Сообщение #1


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

Группа: Свой
Сообщений: 109
Регистрация: 27-07-06
Из: С.-Петербург
Пользователь №: 19 148



Имеется проект под STM32F205, компилятор EWARM 6.30.4, используется библиотека периферии от ST 3.5.0 .

Программа пока не делает ничего полезного, инициализируется несколько периферийных устройств (SPI по прерыванию от таймера выдаёт некие числа, DAC по таймеру выдаёт табличные данные с помощью DMA). Сконфигурирован системный таймер для формирования задержек, мигаем светодиодиком...

Обнаружилось, что уровень оптимизации влияет на работу периферии:

Low - всё работает
Medium и High - перестают работать SPI и DAC (SPI "молчит", а DAC выдаёт какой-нибудь постоянный уровень).

При выключении опции "Code motion" c уровнем Medium всё перечисленное работает, с уровнем High - SPI работает, DAC - нет.

Дело, похоже, не в уровнях оптимизации, они лишь указывают на наличие проблемы. Не подскажите ли, в какую сторону смотреть ?

Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
scifi
сообщение Jan 21 2012, 17:17
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Оптимизация часто влияет на переменные, используемые для передачи данных между обработчиком прерывания и основным потоком (отсутствие volatile). Также может влиять на задержки типа for (i=0; i<1000; i++){}.
Go to the top of the page
 
+Quote Post
Andy_F
сообщение Jan 23 2012, 06:36
Сообщение #3


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

Группа: Свой
Сообщений: 109
Регистрация: 27-07-06
Из: С.-Петербург
Пользователь №: 19 148



Спасибо за отклик.

Проблема выявлена, к IAR, как таковому, не имеет отношения. В библиотеке от ST используется инициализация структурами. Их желательно полностью инициализировать значениями по умолчанию. В сопроводительных примерах этого не сделано, что и сбило с пути истинного...
Go to the top of the page
 
+Quote Post
scifi
сообщение Jan 23 2012, 07:20
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Andy_F @ Jan 23 2012, 10:36) *
Их желательно полностью инициализировать значениями по умолчанию.

Если структура - локальная переменная, то до инициализации её поля содержат мусор. А если глобальная - то нули. Так что тут всё естественно.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 1st August 2025 - 19:57
Рейтинг@Mail.ru


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