Easyelectronics.ru • Просмотр темы - <optimized out>

Easyelectronics.ru

Электроника для всех
Текущее время: 16 авг 2018, 10:51

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



    • JLCPCB - Прототипы 10 PCBs всего за 2$ (100*100mm, 2-layer)
    • Как мы делаем платы, смотрите на YouTube
    • Крупнейшая китайская фабрика прототипов. 300000+ заказчиков и 10000+ заказов в день!
    • 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
Сообщения: 2103
Это означает, что включен режим оптимизации -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
Сообщения: 601
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
Сообщения: 601
Supergun777 писал(а):
В Optimization Level выставил None(-O0), в Other optimization flags добавил -fno-inline
Пока все работает.

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


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

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 305
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
Сообщения: 49
Позволю себе небольшую ремарку:
Если Вы действительно интересуетесь программированием на языке С, отчего же Вы упорно не хотите читать его (С) стандарт?
Хинт на будущее: observable behaviour


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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

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