Перейти к содержанию
    

Влияние уровня оптимизации на работоспособность...

Имеется проект под 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 - нет.

 

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

 

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Оптимизация часто влияет на переменные, используемые для передачи данных между обработчиком прерывания и основным потоком (отсутствие volatile). Также может влиять на задержки типа for (i=0; i<1000; i++){}.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Проблема выявлена, к IAR, как таковому, не имеет отношения. В библиотеке от ST используется инициализация структурами. Их желательно полностью инициализировать значениями по умолчанию. В сопроводительных примерах этого не сделано, что и сбило с пути истинного...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Их желательно полностью инициализировать значениями по умолчанию.

Если структура - локальная переменная, то до инициализации её поля содержат мусор. А если глобальная - то нули. Так что тут всё естественно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...