Например TDA7294

Форум РадиоКот • Просмотр темы - Stm32 с чего начать изучение...
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб ноя 15, 2025 04:26:22

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


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 1032 ]     ... , , , 51,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Stm32 с чего начать изучение...
СообщениеДобавлено: Пн авг 11, 2025 12:50:32 
Потрогал лапой паяльник
Аватар пользователя

Карма: 1
Рейтинг сообщений: 54
Зарегистрирован: Ср ноя 20, 2013 11:29:26
Сообщений: 308
Откуда: Манчестер
Рейтинг сообщения: 0
JackSmith писал(а):
с "-O3", и он даже работал, но прошивка весила 8 КБ вместо 7 КБ

Так и должно быть, вызовы заменяются инлайном, что в некоторых случаях, позволяет повысить быстродействие. Никакого криминала тут нет.
JackSmith писал(а):
на сайте arm рекомендуют использовать "-O2", вместо "прогрессивного -O3", да?

Да вроде нет? Только для Отладки, рекомендуется более низкий уровень оптимизации (то что я выше писал), для работы можно использовать любой, подходящий под задачу. Не надо демонизировать -O3. Реальных причин для этого нет. Особенно на МК, особенно в real-time приложениях.
Цитата:
-O3

Maximum optimization. When debugging is enabled, this option typically gives a poor debug view. Arm recommends debugging at lower optimization levels.

_________________
При решение наиболее сложных задач, большинство, как правило, ошибается...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Stm32 с чего начать изучение...
СообщениеДобавлено: Пн авг 11, 2025 14:18:27 
Открыл глаза

Карма: -2
Рейтинг сообщений: -4
Зарегистрирован: Чт июл 31, 2025 20:41:39
Сообщений: 76
Рейтинг сообщения: 0
Отладка на всем, что отлично от None - работает, но специфисиссськи, и нужно переключить режим "шагания" на Instrucrion Stepping Mode, хотя это не всегда помогает в отладке.
И вообще, я не говорил об отладке при включенной оптимизации. Я говорил о том, что без оптимизации получается весьма медленный код из-за того, что генерируется он "топорно" - что написано, то и делается, без всяких там сокращений.
Отсюда и родился миф, что якобы написание на ассемблере дает лучший код, нежели на С/С++.
Поэтому, рабочий код очень желательно включать на оптимизацию, иначе он будет тормознутым. Конечно, для этого надо знать, как правильно писать, чтобы оптимизация не повыбрасывала всю ту писанину, которую вы так гордо писали :)

PS. Кстати, мало кто знает, но разным файлам и разным функциям можно назначать разные уровни отладки. Это прописывается через флаги компилятора и атрибуты ф-ций.


Последний раз редактировалось КотПротон Пн авг 11, 2025 14:39:48, всего редактировалось 2 раз(а).

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Stm32 с чего начать изучение...
СообщениеДобавлено: Пн авг 11, 2025 14:26:27 
Вымогатель припоя
Аватар пользователя

Карма: 10
Рейтинг сообщений: 171
Зарегистрирован: Ср июн 29, 2022 16:25:45
Сообщений: 523
Рейтинг сообщения: 0
JackSmith писал(а):
Чем "-Os" не угодил?

Ну говорю ж, блондинко со склерозом... -Os, не -О3... Вы правы. Давно не писала ничего уже, работа на работе полностью удовлетворяет...

_________________
Белая и Пушистая


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Stm32 с чего начать изучение...
СообщениеДобавлено: Пн авг 11, 2025 14:59:35 
Грызет канифоль
Аватар пользователя

Карма: 1
Рейтинг сообщений: 26
Зарегистрирован: Ср мар 09, 2016 08:07:41
Сообщений: 295
Рейтинг сообщения: 0
Отладка возможна на всех уровнях оптимизации, другое дело, что можно, например, удивиться невозможности поставить breakpoint - это место может исчезнуть в результате оптимизации. Да и вообще, мне кажется странным отлаживание в одном уровне, а затем его изменить и получить иную версию кода.

breakpoint ставится, но в локальных переменных при трассировке пишет "optimized out"


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Stm32 с чего начать изучение...
СообщениеДобавлено: Пн авг 11, 2025 15:19:56 
Открыл глаза

Карма: -2
Рейтинг сообщений: -4
Зарегистрирован: Чт июл 31, 2025 20:41:39
Сообщений: 76
Рейтинг сообщения: 0
Правильно. Эти переменные могут не сохраняться в ОЗУ и находиться в регистрах ядра. Исключаются лишние операции записи в ОЗУ и обратного их считывания оттудава.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Stm32 с чего начать изучение...
СообщениеДобавлено: Пн авг 11, 2025 15:51:41 
Грызет канифоль
Аватар пользователя

Карма: 1
Рейтинг сообщений: 26
Зарегистрирован: Ср мар 09, 2016 08:07:41
Сообщений: 295
Рейтинг сообщения: 0
отладчик без проблем из регистров читает, тут что-то другое
Изображение
с флагом "-Og" все нормально.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Stm32 с чего начать изучение...
СообщениеДобавлено: Пн авг 11, 2025 15:57:46 
Открыл глаза

Карма: -2
Рейтинг сообщений: -4
Зарегистрирован: Чт июл 31, 2025 20:41:39
Сообщений: 76
Рейтинг сообщения: 0
uint32_t interval = WAIT;
Причем, WAIT - это, судя по виду, константа. А константы - они оптимизируются и помещаются внутрь параметров инструкций.
А вон она - строчка 29 справа, с movw r6, #3000 - компилятор посчитал константные выражения и поместил их сразу в параметр инструкции.

Напишите перед объявлением переменной (обоих переменных) volatile и еще раз посмотрите.

:) самая частая проблема - "Памагите, я включил оптимизацию и на выходе получил 0 кБ кода, хотя там было написано 300 строк!"
Так что нечего на зеркало то пенять :) А то крик то подняли, ай-ой, фуфло, константные выражения в функции оптимизатор выкинул, ой-ой, что такое Всё норм, посоны, не истерите. Всё нормальдос. Если продолжает работать, значит, всё норм. Хуже было бы, если бы из тыщщи строк он оставил 0 строк. Это говорило бы о том, что погромисътъ был пьян:)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Stm32 с чего начать изучение...
СообщениеДобавлено: Пн авг 11, 2025 16:13:50 
Грызет канифоль
Аватар пользователя

Карма: 1
Рейтинг сообщений: 26
Зарегистрирован: Ср мар 09, 2016 08:07:41
Сообщений: 295
Рейтинг сообщения: 0
константа ни при чем.
до строки
Цитата:
int remainder=smart_delay(interval);

отладчик показывает значение переменной interval, а после "optimized out".


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Stm32 с чего начать изучение...
СообщениеДобавлено: Пн авг 11, 2025 16:15:49 
Открыл глаза

Карма: -2
Рейтинг сообщений: -4
Зарегистрирован: Чт июл 31, 2025 20:41:39
Сообщений: 76
Рейтинг сообщения: 0
Так я и говорю - перед объявлением обеих переменных напишите volatile.
С другой стороны, если после оптимизации всё работает как надо без сбоев, то значит, всё в порядке, не кричите. Переменная была оптимизирована и помещена в параметры инструкции movw.
Можете проийтись по отладке в режиме Instruction Step Mode (по ассемблерному листингу) и посмотреть, что происходит с переменной.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Stm32 с чего начать изучение...
СообщениеДобавлено: Пн авг 11, 2025 16:25:09 
Грызет канифоль
Аватар пользователя

Карма: 1
Рейтинг сообщений: 26
Зарегистрирован: Ср мар 09, 2016 08:07:41
Сообщений: 295
Рейтинг сообщения: 0
Так я и говорю - перед объявлением обеих переменных напишите volatile.

Зачем менять код, если можно поставить флаг компиляции "-Og" и все будет норм?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Stm32 с чего начать изучение...
СообщениеДобавлено: Пн авг 11, 2025 16:37:25 
Открыл глаза

Карма: -2
Рейтинг сообщений: -4
Зарегистрирован: Чт июл 31, 2025 20:41:39
Сообщений: 76
Рейтинг сообщения: 0
А вам шашечки или ехать? В смысле - смотреть на ваши любимые переменные, или чтобы код работал эффективно?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Stm32 с чего начать изучение...
СообщениеДобавлено: Пн авг 11, 2025 16:40:23 
Грызет канифоль
Аватар пользователя

Карма: 1
Рейтинг сообщений: 26
Зарегистрирован: Ср мар 09, 2016 08:07:41
Сообщений: 295
Рейтинг сообщения: 0
КотПротон, это "volatile" что ли делает код эффективным?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Stm32 с чего начать изучение...
СообщениеДобавлено: Пн авг 11, 2025 16:43:24 
Открыл глаза

Карма: -2
Рейтинг сообщений: -4
Зарегистрирован: Чт июл 31, 2025 20:41:39
Сообщений: 76
Рейтинг сообщения: 0
Нет, volatile показывает вашу любимую переменную, чтобы вы могли наслаждаться созерцанием её.
А еще, volatile - способ вернуть неожиданно исчезнувшие из бинарника 500 строк важного кода, которые вы так старательно писали, а негодяй-оптимизатор посчитал ваши труды никчемной тратой пространства на флеше :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Stm32 с чего начать изучение...
СообщениеДобавлено: Пн авг 11, 2025 16:46:53 
Грызет канифоль
Аватар пользователя

Карма: 1
Рейтинг сообщений: 26
Зарегистрирован: Ср мар 09, 2016 08:07:41
Сообщений: 295
Рейтинг сообщения: 0
А еще, volatile - способ вернуть неожиданно исчезнувшие из бинарника 500 строк важного кода, которые вы так старательно писали

нафига такой оптимизатор?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Stm32 с чего начать изучение...
СообщениеДобавлено: Пн авг 11, 2025 16:55:21 
Открыл глаза

Карма: -2
Рейтинг сообщений: -4
Зарегистрирован: Чт июл 31, 2025 20:41:39
Сообщений: 76
Рейтинг сообщения: 0
А нафига такой погромист, который забыл (не знает) про volatile? :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Stm32 с чего начать изучение...
СообщениеДобавлено: Пн авг 11, 2025 17:04:56 
Грызет канифоль
Аватар пользователя

Карма: 1
Рейтинг сообщений: 26
Зарегистрирован: Ср мар 09, 2016 08:07:41
Сообщений: 295
Рейтинг сообщения: 0
А у вас инит I2C зависит от дисплея. Нелогично. Либо писать один и тот же инит I2C и в дисплее, и во всех остальных устройствах, либо обращаться к иниту дисплея, чтобы настроить I2C, либо просто вынести инит I2C за пределы модуля дисплея..

на самом деле ничего страшного не будет, если инициализация дисплея будет включать инициализацию I2C модуля и связанные GPIO. даже если на шине более чем одно устройство.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Stm32 с чего начать изучение...
СообщениеДобавлено: Пн авг 11, 2025 17:20:09 
Вымогатель припоя
Аватар пользователя

Карма: 10
Рейтинг сообщений: 171
Зарегистрирован: Ср июн 29, 2022 16:25:45
Сообщений: 523
Рейтинг сообщения: 0
JackSmith писал(а):
отладчик показывает значение переменной interval, а после "optimized out".
Значит далее в данном программном блоке данная переменная не используется, программный код обходится и без нее без потери функционала

_________________
Белая и Пушистая


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Stm32 с чего начать изучение...
СообщениеДобавлено: Пн авг 11, 2025 17:24:45 
Открыл глаза

Карма: -2
Рейтинг сообщений: -4
Зарегистрирован: Чт июл 31, 2025 20:41:39
Сообщений: 76
Рейтинг сообщения: 0
Цитата:
ичего страшного не будет, если инициализация дисплея будет включать инициализацию I2C модуля и связанные GPIO

Ничего страшного для тех, кто пишет как бох на душу положит :)
Но для тех, кто думает разумом, это сигнал к исправлению неверной структуры программы.

Показываю на гипотетическом примере: на одной шине I2C висит дисплей и датчик температуры. Инит I2C и инит его пинов написан только в функции инита дисплея:
Код:
void InitDisplay()
{
   InitI2CPins();
   InitI2C();
   
   WriteI2C(0xAA);
}

void InitSensor()
{
   WriteI2C(0xBB);
}

Хорошо. А теперь запускаем:
Код:
int main(void)
{
   InitSensor();
   InitDisplay();

Ога?
Ога. Обычный кодописатель впихнет InitI2CPins(); InitI2C(); и в функцию InitSensor(). На всякий случай.
Думающий программист прикинет возможные последствия - дублирование кода, лишние логические связи, и просто вынесет фукнции инита за пределы функций инита дисплея и сенсора. Всё просто, если мыслить думать!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Stm32 с чего начать изучение...
СообщениеДобавлено: Пн авг 11, 2025 17:41:49 
Грызет канифоль
Аватар пользователя

Карма: 1
Рейтинг сообщений: 26
Зарегистрирован: Ср мар 09, 2016 08:07:41
Сообщений: 295
Рейтинг сообщения: 0
Обычный кодописатель впихнет InitI2CPins(); InitI2C(); и в функцию InitSensor(). На всякий случай.

грязные инсинуации.
Думающий программист прикинет возможные последствия - дублирование кода, лишние логические связи, и просто вынесет фукнции инита за пределы функций инита дисплея и сенсора.

поздравляю, вы открыли распределительный закон из второго класса
Just_Fluffy писал(а):
JackSmith писал(а):
Значит далее в данном программном блоке данная переменная не используется, программный код обходится и без нее без потери функционала

:)

КотПротон, девчонка шарит лучше тебя. надеюсь тебе стыдно?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Stm32 с чего начать изучение...
СообщениеДобавлено: Пн авг 11, 2025 17:45:27 
Открыл глаза

Карма: -2
Рейтинг сообщений: -4
Зарегистрирован: Чт июл 31, 2025 20:41:39
Сообщений: 76
Рейтинг сообщения: 0
я написал, что переменная была оптимизирована и перенесена в параметр инструкции movw r6, #3000, и даже показал, где она находится. Если вы не шарите в ассемблерном тексте и слабо понимаете написанное, то это исключительно ваша личная беда.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 1032 ]     ... , , , 51,  

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


Кто сейчас на форуме

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


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

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


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y