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

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

Сообщение ARV »

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

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

Сообщение linux_rulezz »

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

Сообщение JackSmith »

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

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

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

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

Сообщение Rapra »

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

Сообщение JackSmith »

Rapra писал(а): Пт июл 03, 2026 20:40:44 -O2 является сбалансированным и наиболее употребительным.
на "-O2" тоже вызов "calloc" вставлялся. со времен AVR по инерции использовал "-Os", но ИИшки меня убедили использовать "O2" для stm32. Особой разницы не заметил.
На esp как ни парадоксально "-Os". Флеша там много, но процессор непосредственно с флешкой не работает, он берет код из кеша, размер которого ограничен.
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 110
Зарегистрирован: Вт фев 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 - компиляторы с разными ключами
Реклама
Родился
Сообщения: 1
Зарегистрирован: Пн май 25, 2009 08:36:29

Сообщение texnik04 »

Добрый день. Раньше было облако на mail где были все ресурсы для IDE CUBE,вчера решил зайти а страницы не существует. Может кто в курсе куда переехало. У меня есть почти полный бэкап этого ресурса на 2025 год. Но я хотел скачать репозиторий за 2026 и тут такая печаль :(
Нашел транзистор. Понюхал.
Сообщения: 152
Зарегистрирован: Пт май 20, 2022 22:19:02
Откуда: Ижевск

Сообщение Ифторик »

Я просто поменял название переменной, это блятство какое то, ошибка всегда есть вне зависимости от названия переменной или ее наличия, примагничивается к ближайшему объекту, даже к функции майн, удалить проект и загрузить не помогает, тут я всё
калокуп переустанавливать?
Вложения
проблема.jpg
(36.47 КБ) 18 скачиваний
u37
Это не хвост, это антенна
Сообщения: 1386
Зарегистрирован: Пн май 01, 2017 20:01:45

Сообщение u37 »

Проверьте на парность } и наличие ; ранее по коду.
Опытный кот
Сообщения: 700
Зарегистрирован: Пн фев 16, 2026 17:30:02

Сообщение Rapra »

На непарность скобок или отсутствие ; будет указывать еще и "горчичник" - желтое предупреждение где-то в тексте и еще одна (или не одна) красная ошибка. Причем, вероятно даже где-то в другом файле, подключенном к этому файлу. Смотрите на верхнюю разворачивающуюся панель ошибок
Ифторик писал(а): Вс авг 23, 2026 11:54:41 Я просто поменял название переменной
Ну да, название переменно нужно менять там, где она объявлена в первый раз была. А так же все её объявления через extern и все вхождения в тексте. Лучше всего изменения имён делать с помощью инструментария рефакторинга. Быстрый вызов - установить курсор на изменяемое имя и нажать Shift+Alt+R.

Программирование вообще любит внимательность, наблюдательность и точность. Больше половины ошибок вызывается банальной невнимательностью. По себе знаю - иной раз кучу времени возишься с какой-то ошибкой, а оказывается что где-то попросту что-то недосмотрел
Нашел транзистор. Понюхал.
Сообщения: 152
Зарегистрирован: Пт май 20, 2022 22:19:02
Откуда: Ижевск

Сообщение Ифторик »

Я исправил, причесал проект, у меня во всех библитечных файлах было #include "main.h", теперь наоборот сделал, чтоб всё красиво было и понятно, всю грязь из main.h раскидал по библиотекам, все норм заработало, ни одного вопросительного знака нет, даже не привычно, всегда куча висела.
Мучитель микросхем
Сообщения: 434
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

Мерфи говорил, что если всё хорошо, то значит, что-то не заметили. :)
Вымогатель припоя
Аватара пользователя
Сообщения: 555
Зарегистрирован: Ср июн 29, 2022 16:25:45

Сообщение Just_Fluffy »

Угу :) Число ошибок никогда не равно нулю. Просто в данном случае число ошибок четное и они друг друга компенсируют.))
Белая и Пушистая
Я не ИИ, поэтому могу ошибаться.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18785
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Just_Fluffy писал(а): Вс авг 23, 2026 20:15:34 Угу :) Число ошибок никогда не равно нулю.
следствие: программа из одной команды NOP уже ошибочная.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Мучитель микросхем
Сообщения: 457
Зарегистрирован: Ср сен 02, 2015 07:47:20

Сообщение HardWareMan »

ARV писал(а): Вт авг 25, 2026 06:55:09 программа из одной команды NOP уже ошибочная.
NOP предписывает ничего не делать. А что если у программы изначально было такое предназначение - ничего не делать?
Мучитель микросхем
Сообщения: 434
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

HardWareMan писал(а): Вт авг 25, 2026 08:48:52 А что если у программы изначально было такое предназначение - ничего не делать?
Тогда после nop должен быть безусловный переход. Если только nop - то уже не будет "ничего не делать", будет обработка мусора после nop.
А с переходом программа уже что-то всё-таки делает.
И даже если только hlt - это тоже делает - не даёт выполнение мусора.
Вывод: ничего не делающей программы не существует.
Мучитель микросхем
Сообщения: 457
Зарегистрирован: Ср сен 02, 2015 07:47:20

Сообщение HardWareMan »

Zapolyarny писал(а): Вт авг 25, 2026 11:04:26 Вывод: ничего не делающей программы не существует.
Это всего-лишь вопрос перспективы.
Опытный кот
Сообщения: 700
Зарегистрирован: Пн фев 16, 2026 17:30:02

Сообщение Rapra »

Тут надо уточнить - "ничего полезного не делающей". NOP - это пропуск (отсутствие) операции, то есть отстуствие какой-либо полезной работы. То же самое делает при запуске чистый (с незаписанной памятью) микроконтроллер. 0xFF воспринимается как неверная инструкция
Ответить

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