Например TDA7294

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





Текущее время: Вт июн 24, 2025 04:47:31

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


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



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: STM32 Keil расчет размера программы
СообщениеДобавлено: Пт июл 19, 2024 20:41:56 
Прорезались зубы

Зарегистрирован: Чт апр 08, 2021 09:46:48
Сообщений: 225
Рейтинг сообщения: 0
Доброго дня!
Решил проверить следующие поянение:
«RO Data - константы, размещенные в Flash
RW Data - переменные в RAM, для них генерировался код инициализации, соотв. есть массив в Flаsh с их начальными значениями.
ZI Data - "Zero Initialized" - переменные в RAM, которым не присваивались начальные значения, те для них не нет массива с нач. значениями, и
их при старте обнулили и все.»


Для этого создал пустой проект! Далее в пустом написал небольшой код инициализации GPIO, далее в этом проекте создавал переменные, компилировал, и смотрел как увеличивается значения памяти(Code, RO-data, RW-data, ZI-data).

1)Сначала создал переменную «VerTest1=0», после чего у меня значения памяти были равны как указаны на сриншоте №1:

Вложение:
1.png [58.54 KiB]
Скачиваний: 92


2)Далее я создал 3 переменные, которым не присваивались начальные значения(a, b, c), типа int, и судя по определениям выше, у меня значения памяти должны быть следующие –
Code =756,
RO-data =424,
RW-data = 4,
ZI-data = 1636+12 = 1648.
Но по факту у меня получается следующие значения памяти(см. скриншот №2):

Вложение:
2.png [46.18 KiB]
Скачиваний: 83


Вопрос почему у меня прибавилось RW-data на 12, если RW-data – это переменные, инициализированные каким-то значением, а я создал переменные, которым не присваивались начальные значения, должно же было прибавиться ZI-data на 12?
И почему ZI-data у меня уменьшилось на 4?

Может компилятор своей жизнью живет и не стоит ему доверять? Смотрел в мап файле, там такие же значения!

Так же я попробовал использовать переменные a,b,c в функции main, в итоге значения памяти остались такими же.

Файл main.c и файл .MAP приложил во вложениях!


Вложения:
MAP.txt [142.1 KiB]
Скачиваний: 145
main.c [2.8 KiB]
Скачиваний: 130
Вернуться наверх
 
В сети
 Заголовок сообщения: Re: STM32 Keil расчет размера программы
СообщениеДобавлено: Пт июл 19, 2024 21:39:00 
Говорящий с текстолитом

Карма: 25
Рейтинг сообщений: 450
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1622
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
... плюс добавляйте, меняйте оптимизацию. Там увеличение одного - это потеря для другого (напр. -O0, -Oz, -Ofast). И анализ еще больше запутывается. Зачем этот анализ? Какую пользу дает? Используйте ресурс МК, пока он есть. Если нет, переходите к следующему МК по списку. (От AVR, PIC к STM32 так было и для меня. Но дело пошло очень быстро).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 Keil расчет размера программы
СообщениеДобавлено: Пт июл 19, 2024 21:52:23 
Друг Кота
Аватар пользователя

Карма: 61
Рейтинг сообщений: 1533
Зарегистрирован: Вт окт 22, 2013 04:37:23
Сообщений: 3306
Откуда: Казань
Рейтинг сообщения: 0
Так посмотрите в asm-файле что там компилятор делает. Вы переменные не инициализировали, но кто сказал, что компилятор не решил сделать это за Вас? По крайней мере это первое что приходит в голову. И как правильно уже сказали, для начала нужно отключить все оптимизации.

_________________
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезисты Ordyl Alpha 350 и AM 140.
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльная маска XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 Keil расчет размера программы
СообщениеДобавлено: Сб июл 20, 2024 20:17:01 
Прорезались зубы

Зарегистрирован: Чт апр 08, 2021 09:46:48
Сообщений: 225
Рейтинг сообщения: 0
Оптимизация отключена!

veso74 писал(а):
Зачем этот анализ? Какую пользу дает?

Хотел убедиться на практике, интересно стало, но более менее понятно, что факторов много, и скорее всего не стоит этим заниматься.
Благодарю за ответы)


Вернуться наверх
 
В продаже новые LED-драйверы XLC компании MEAN WELL с диммингом нового поколения

Компания MEAN WELL пополнила ассортимент своей широкой линейки светодиодных драйверов новым семейством XLC для внутреннего освещения. Главное отличие – поддержка широкого спектра проводных и беспроводных технологий диммирования. Новинки представлены в MEANWELL.market моделями с мощностями 25 Вт, 40 Вт и 60 Вт. В линейке есть модели, работающие как в режиме стабилизации тока (СС), так и в режиме стабилизации напряжения (CV) значением 12, 24 и 48 В.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32 Keil расчет размера программы
СообщениеДобавлено: Сб авг 24, 2024 11:57:52 
Это не хвост, это антенна

Карма: -10
Рейтинг сообщений: 171
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1488
Рейтинг сообщения: 0
2)Далее я создал 3 переменные, которым не присваивались начальные значения(a, b, c), типа int, и судя по определениям выше, у меня значения памяти должны быть следующие –
Не должны быть. Так как переменные не использованы, то компилятор или компоновщик имеют полное право их выкинуть.
И переменные объявлены неправильно.
Так же я попробовал использовать переменные a,b,c в функции main, в итоге значения памяти остались такими же.
Покажите как "пытались". Возможно (по мнению компилятора/компоновщика) вы и не пытались их использовать. 8)

Добавлено after 3 minutes 23 seconds:
Оптимизация отключена!
Оптимизация не имеет никакого отношения к удалению неиспользуемых секций из выходного образа. Если компилятор оформил ваши переменные в отдельные секции, а компоновщик не увидел их использования нигде, то он просто не будет их включать в выходной образ.
Это штатное поведение компоновщика. Не имеет никакого отношения к оптимизации. Иначе была бы невозможна работа с большинством серьёзных библиотек. Просто посмотрите на их размер.


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

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


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

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


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

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


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