Stm32 с чего начать изучение...

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18767
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

JackSmith писал(а): Пт июл 03, 2026 14:07:39
ARV писал(а): Пт июл 03, 2026 12:54:56 если я не намеревался использовать библиотеки,
ну так не линкийте стандартную библиотеку
ну так вы и попали на этот момент, верно? компилятору подай calloc, а стандартная либа отсутствует.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Опытный кот
Аватара пользователя
Сообщения: 710
Зарегистрирован: Пн сен 15, 2025 08:43:23
Откуда: Маленький СССР посреди террористов

Сообщение linux_rulezz »

Если компилятор требует calloc, значит, какая-то дрянь эту функцию пытается вызвать.
Поэтому я и говорю: не надо на МК использовать чужой код, где непонятно, что "под капотом" происходит! Уж не знаю, что за рукожоп эту lwip писал, но за использование аллокаторов на МК, не имеющих виртуальных непрерывных адресных пространств, надо сильно бить по рукам!
Windows must die!
Контактная информация:
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 355
Зарегистрирован: Ср мар 09, 2016 08:07:41

Сообщение JackSmith »

ARV писал(а): Пт июл 03, 2026 15:48:29 ну так вы и попали на этот момент, верно? компилятору подай calloc, а стандартная либа отсутствует.
да, ключ компоновщика "-nostdlib" заставляет его собирать прошивку без стандартной библиотеки.

PS добавление в Makefile строки

Код: Выделить всё

CFLAGS += -fno-builtin -ffreestanding
решает проблему с вставкой "calloc". и в итоге, вес прошивки увеличивается на треть, 85 КБ против 56 КБ с "-Os"
Вымогатель припоя
Сообщения: 596
Зарегистрирован: Пн фев 16, 2026 17:30:02

Сообщение Rapra »

Логично, ибо -Os - оптимизация по размеру. А -O3 - агрессивная оптимизация, способная увеличить размер прошивки в угоду скорости. Злее только -Ofast.
Рекомендуемый многими уровень -O2 является сбалансированным и наиболее употребительным. Оптимизация -Os отталкивается именно от -O2.
Реклама
Эиком - электронные компоненты и радиодетали
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 355
Зарегистрирован: Ср мар 09, 2016 08:07:41

Сообщение JackSmith »

Rapra писал(а): Пт июл 03, 2026 20:40:44 -O2 является сбалансированным и наиболее употребительным.
на "-O2" тоже вызов "calloc" вставлялся. со времен AVR по инерции использовал "-Os", но ИИшки меня убедили использовать "O2" для stm32. Особой разницы не заметил.
На esp как ни парадоксально "-Os". Флеша там много, но процессор непосредственно с флешкой не работает, он берет код из кеша, размер которого ограничен.
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 107
Зарегистрирован: Вт фев 28, 2017 08:13:31
Откуда: Свердловская обл.

Сообщение Zikon »

Насколько я вычислил по тестам для GCC ( Coremark гоняю )

ключи -Ofast и -O3 - эквивалентны ( как и в Keil )
ключи -Os и -Oz - тоже эквивалентны,
но в Keil имеют разницу
и код при -Oz действительно меньше

в Keil ещё есть -Omax - это тот ещё отморозк по скорости
как и опция IAR -no-size-constraint

и -O2 - неплохо себя показывает

https://docs.google.com/spreadsheets/d/ ... sp=sharing
закладка Tests - компиляторы с разными ключами
Реклама
Ответить

Вернуться в «ARM»