Easyelectronics.ru

Электроника для всех
Текущее время: 20 июн 2018, 20:03

Часовой пояс: UTC + 5 часов



    • JLCPCB - Платы прототипов всего за 2$ c бесплатной доставкой (при первом заказе)
    • 10 PCBs за $2 для 2 слоев, $15 для 4 слойной, $74 для 6 слойной платы.
    • Крупнейший китайский производитель прототипных плат. 290000+ клиентов & 8000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин радиодеталей.

Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: <optimized out>
СообщениеДобавлено: 02 июн 2018, 12:39 
Только пришел

Зарегистрирован: 30 апр 2018, 11:13
Сообщения: 11
Всем привет. Программирую в sw4stm32. При отладке такого кода он мне пишет в значениях <optimized out>
Код:
uint8_t star = 0x2A;
     uint8_t starline[10];

     for (uint8_t x=0; x<10;x++)
     {
        starline[x]= star;

     }

Что я делаю не так?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: <optimized out>
СообщениеДобавлено: 02 июн 2018, 12:40 
Только пришел

Зарегистрирован: 30 апр 2018, 11:13
Сообщения: 11
Использовать volatile ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: <optimized out>
СообщениеДобавлено: 02 июн 2018, 12:47 
Только пришел

Зарегистрирован: 30 апр 2018, 11:13
Сообщения: 11
При использовании volatile на starline проблема решается и после удаления эти изменения остаются, заполение массива показывает при отладке. Странно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: <optimized out>
СообщениеДобавлено: 02 июн 2018, 13:05 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 1825
Это означает, что включен режим оптимизации -Og. Отключите опиимизацию (none, -O0), вам она все равно не нужна на первых порах.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: <optimized out>
СообщениеДобавлено: 02 июн 2018, 13:15 
Только пришел

Зарегистрирован: 30 апр 2018, 11:13
Сообщения: 11
BusMaster. Спасибо.Отключил оптимизацию.
Но тогда все равно остается вопрос, если оптимизатору не нравится что я что то делаю не так, то что именно?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: <optimized out>
СообщениеДобавлено: 02 июн 2018, 13:22 
Только пришел

Зарегистрирован: 30 апр 2018, 11:13
Сообщения: 11
Пришлось вернуть оптимизацию т.к. перестал попадать в функцию при отладке.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: <optimized out>
СообщениеДобавлено: 02 июн 2018, 13:32 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 539
Supergun777 писал(а):
Пришлось вернуть оптимизацию т.к. перестал попадать в функцию при отладке.

Если было -Og, то этот ключ разрешает инлайнинг, ставить брейкпоинты на вызовы функций в таком случае бесполезно. Можно добавить -fno-inline, тогда станет легче отлаживать, при этом размер заметно меньше, чем для -O0.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: <optimized out>
СообщениеДобавлено: 02 июн 2018, 13:39 
Только пришел

Зарегистрирован: 30 апр 2018, 11:13
Сообщения: 11
Reflector. Спасибо за команду.
В Optimization Level выставил None(-O0), в Other optimization flags добавил -fno-inline
Пока все работает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: <optimized out>
СообщениеДобавлено: 02 июн 2018, 13:46 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 539
Supergun777 писал(а):
В Optimization Level выставил None(-O0), в Other optimization flags добавил -fno-inline
Пока все работает.

Для -O0 ничего добавлять не нужно, он и так инлайнинг запрещает, я говорил про -Og.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: <optimized out>
СообщениеДобавлено: 02 июн 2018, 13:50 
Заглядывает иногда

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 146
Supergun777 писал(а):
Но тогда все равно остается вопрос, если оптимизатору не нравится что я что то делаю не так, то что именно?

Вы программируете микроконтроллер. Задумайтесь, какие полезные действия делает ваша программа? Это в основном запись регистров аппаратных блоков микроконтроллера. Если вы просто создали в памяти переменную/массив, но не использовали их для изменения состояние периферии, то такой код можно выкинуть, что компилятор и делает.

Единственное исключение, если переменные меняются где-то в прерываниях или посредством DMA, то компилятор может этого не увидеть. Вот тут ему надо подсказать ключевым словом volatile.

Во всех остальных случаях, если оптимизация меняет логику работы программы - ищите ошибки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: <optimized out>
СообщениеДобавлено: 02 июн 2018, 13:56 
Только пришел

Зарегистрирован: 30 апр 2018, 11:13
Сообщения: 11
Начинаю догадываться что можно было массив заполнить указателями на star.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: <optimized out>
СообщениеДобавлено: 02 июн 2018, 14:07 
Только пришел

Зарегистрирован: 30 апр 2018, 11:13
Сообщения: 11
Ну вроде решил проблему пока работает. буду использовать без отключения отладки в стандартном режиме.
Код:

uint8_t star = 0x2A;
     uint8_t starline[20];
     uint8_t sizex = 0;
     uint8_t *ystar = &star;
     if (sizex!=20)
     {
        for(uint8_t sizey=0;sizey<20;sizey++)
        {
           starline[sizey] = *ystar;
        }
        sizex++;
     }
     uint16_t razmer= sizeof(starline);


   HAL_UART_Transmit(&huart3,starline,razmer,0xFFFF);
     HAL_Delay(200);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: <optimized out>
СообщениеДобавлено: 03 июн 2018, 03:03 
Заглядывает иногда

Зарегистрирован: 11 дек 2013, 17:52
Сообщения: 44
Позволю себе небольшую ремарку:
Если Вы действительно интересуетесь программированием на языке С, отчего же Вы упорно не хотите читать его (С) стандарт?
Хинт на будущее: observable behaviour


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: Eddy_Em, forker


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB