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

 
 
> Неверная компиляция при высокой оптимизации под ARM
veteq
сообщение May 27 2014, 07:30
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 5-12-06
Пользователь №: 23 160



Здравствуйте

Есть такая проблема с компиляцией проекта под cortex-m3 (stm32l). Если компилировать с уровнем оптимизации medium все компилируется верно.
Но если выставить оптимизацию на high balanced или speed даже если выключить все доступные оптимизации которые доступны при уровне high проект компилируется неверно.
Пробовал на IAR ARM 7.1.3 и 7.2.1
Пример функции которая идет в комплекте драйверов ST

Код
void PWR_EnterSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry)
{
....  
  /* Select STOP mode entry --------------------------------------------------*/
  if(PWR_STOPEntry == PWR_SLEEPEntry_WFI)
  {  
    /* Request Wait For Interrupt */
    __WFI();
  }
  else
  {
    /* Request Wait For Event */
    __WFE();
  }
}

PWR_SLEEPEntry_WFI = 1;
PWR_STOPEntry передается 1;

И условие IF ELSE которые по логике должны быть взаимоисключающими выполняются последовательно, т.е. сначала __WFI(); и потом сразу __WFE();
Это видно в отладчике и дизассемблере эти функции идут подряд.

Сообщение отредактировал IgorKossak - May 27 2014, 15:02
Причина редактирования: пользуйтесь тэгами
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 18:22
Рейтинг@Mail.ru


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