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

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 25498
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

ARV писал(а): Чт июл 02, 2026 07:54:35
JackSmith писал(а): Чт июл 02, 2026 06:44:03 у вас есть объемная либа вроде LwIP
либы использовать нельзя
Не надо выдумывать, Роман. Библиотека библиотеке рознь. Одно дело заменять простейшие команды управления периферией бестолковыми функциями, а другое - брать готовый библиотечный стек достаточно объемного протокола, который применяется либо as is, либо с каким то допиливанием. Это касается любой математики проекта.
Первичное освоение всегда связано с компиляцией чужих наработок. В дальнейшем оно приведет к созданию собственных библиотек.
Реклама
Опытный кот
Аватара пользователя
Сообщения: 710
Зарегистрирован: Пн сен 15, 2025 08:43:23
Откуда: Маленький СССР посреди террористов

Сообщение linux_rulezz »

lwIP жутко кривая, лучше свое написать или выбрать из множества существующих более правильную.
А вообще, сеть - сложная штука, нечего вообще пытаться ее поднять на одноядерном МК без MMU.
Windows must die!
Контактная информация:
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18767
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

КРАМ, вам бы задуматься хоть раз: человек, который минимум 30 лет программирует (хоть и на любительском уровне бОльшую часть времени), нуждается в подобных вашим "откровениях"?
собственные библиотеки... со временем приходит понимание... я за свою практическую деятельность своих библиотек написал под 5 десятков. и с нуля, и путем переделки/исправления багов чужих.

вам бы задуматься о том, почему программист с очень приличным бэкграундом вдруг начал задавать такие вопросы и использовать такие методики кодописания... но нет, вам тогда не на чем будет тешить своё эго... а жаль, ведь диалог мог бы быть конструктивным. и для меня полезным - увы, вас мне нечему учить, а поучиться мог бы. но не глупостям про "понимание важности периферии".
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 25498
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Rapra писал(а): Чт июл 02, 2026 06:52:42 Оптимизация компилятора - совершенно нормальная практика.
С этим никто и не спорит. Но иногда поиск причины неработающего кода при включенной оптимизации уровней o3 и LTO занимает слишком много времени и трудно поддается отладке для этого поиска — разве только включение оптимизации на отдельные файлы и даже фрагменты кода.
И, что самое неприятное, такая оптимизация приводит к неявным багам, которые еще нужно обнаружить при тестировании. Верхние уровни оптимизации порой больше напоминают шаманство и потому плохо предсказуемы.
Реклама
Эиком - электронные компоненты и радиодетали
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18767
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

linux_rulezz писал(а): Чт июл 02, 2026 08:19:16 А вообще, сеть - сложная штука, нечего вообще пытаться ее поднять на одноядерном МК без MMU
а если не вообще, а в частности, то в невероятно большом количестве применений на МК сеть понимается примерно как UART неограниченной дальности связи. и в этом случае достаточно купить и поставить на плату "умный Ethernet-разъем", и прекрасно работать с ним хоть на AVR.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 25498
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

ARV писал(а): Чт июл 02, 2026 08:25:07 вам бы задуматься о том, почему программист с очень приличным бэкграундом вдруг начал задавать такие вопросы
Назовите хоть одну причину по которой я должен об этом думать?
Бэкграунд — это не медаль или орден. Человек с любым опытом может действовать не оптимально и совершать ошибки. Важно как он на это реагирует.
Подумайте об этом.
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18767
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

КРАМ писал(а): Чт июл 02, 2026 08:33:05 Назовите хоть одну причину по которой я должен об этом думать?
я сейчас назову, но заранее знаю вашу реакцию. для того, чтобы слушать ответы, надо быть готовым к этому. а вы не из тех людей, кто нуждается в ответах даже на заданные самим собой вопросы.

вы должны об этом задумываться хотя бы затем, чтобы не быть смешным. даже пятикласснику смешно слушать о пользе таблицы умножения.

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

и если человек действует неоптимально, вы не мессия, чтобы обязательно спасать его. достаточно иной раз помочь ему идти выбранным путем, чтобы он понял ошибочность этого пути САМ, без того, чтобы быть прежде осмеянным, обруганным и униженным.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

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

Сообщение linux_rulezz »

КРАМ писал(а): Чт июл 02, 2026 08:29:26Верхние уровни оптимизации порой больше напоминают шаманство и потому плохо предсказуемы.
Я выше писал про "-flto". Попробуйте как-нибудь для МК включить эту опцию. Ну, а в интернетах вердикт ставят однозначный: "если у человека код не работает с «-O3 -flto», то программист он, мягко говоря, хреновый".
Естественно, для отладки используется -O0 + прочие нужные флаги (т.к. элементарно при оптимизации будет проведен strip, и невозможно будет при помощи gdb узнать, где сейчас происходит выполнение). Когда все отлажено, собираешь в release-сборке. Если не работает, внимательно просматриваешь код — где мог накосячить и, например, volatile забыть или еще какую-нибудь дичь написать.
Кстати, поговаривают, что в свежем стандарте C++ не станет volatile. Не представляю, как "плюсовики" в дальнейшем смогут разрабатывать.
А вот свежий стандарт С - супер. Теперь есть встроенные bool. Жаль только, не завезли constexpr в понимании С++ — приходится С сочетать с С++ для лексического разбора текстового протокола.
Кому интересно - мой Makefile. Я разбил на уровни. Верхний уровень - общий для всех STM32, далее следует уровень "семейства" с соответствующими флагами, а на уровне конкретной реализации Makefile совсем маленький, например:

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

BINARY      := blink
# MCU code
MCU         := G431xx
# change this linking script depending on particular MCU model,
LDSCRIPT    := stm32g431xb.ld

include ../makefile.g4
include ../../makefile.stm32
Windows must die!
Контактная информация:
Вымогатель припоя
Сообщения: 581
Зарегистрирован: Вт окт 01, 2024 15:22:33

Сообщение Adrift »

linux_rulezz писал(а): Чт июл 02, 2026 08:57:01Кстати, поговаривают, что в свежем стандарте C++ не станет volatile.
Первый раз слышу. Задеприкейтили ряд применений где volatile не имеет смысла, вводит в заблуждение или приводит к UB, типа операции ++, не более того.
Опытный кот
Аватара пользователя
Сообщения: 710
Зарегистрирован: Пн сен 15, 2025 08:43:23
Откуда: Маленький СССР посреди террористов

Сообщение linux_rulezz »

Adrift писал(а): Чт июл 02, 2026 09:20:41типа операции ++
И как, интересно, то же время считать? Я, например, завожу волатильную переменную Tms и каждую миллисекунду в прерывании SysTick она инкрементируется…
Windows must die!
Контактная информация:
Вымогатель припоя
Сообщения: 581
Зарегистрирован: Вт окт 01, 2024 15:22:33

Сообщение Adrift »

linux_rulezz писал(а): Чт июл 02, 2026 09:45:40И как, интересно, то же время считать?
+= по-прежнему работает. Да и ++ работает, но с предупреждением.
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

linux_rulezz писал(а): Чт июл 02, 2026 09:45:40 И как, интересно, то же время считать? Я, например, завожу волатильную переменную Tms и каждую миллисекунду в прерывании SysTick она инкрементируется…
Дарю. Не благодари.

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

volatile auto Tms=0ul;
extern "C" void SysTick_Handler()
{
  Tms=Tms+1;
}
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

linux_rulezz писал(а): Чт июл 02, 2026 08:57:01 Кстати, поговаривают, что в свежем стандарте C++ не станет volatile. Не представляю, как "плюсовики" в дальнейшем смогут разрабатывать.
Этого в принципе не может быть. Без volatile сущностей абстрактная машина С/C++ не может существовать. Такой код любой оптимизатор просто под нож пустит.
Потрогал лапой паяльник
Сообщения: 366
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

Почему не инкремент или хотя бы Tms += 1 ?
---
А, понял. Не увидел выше.
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 355
Зарегистрирован: Ср мар 09, 2016 08:07:41

Сообщение JackSmith »

Rapra писал(а): Чт июл 02, 2026 06:52:42 Оптимизация компилятора - совершенно нормальная практика.
я конкретно про O3. проект микропитон для примера, порт bare-arm. c "Os" проект нормально собирается, но если поменять в Makefile оптимизацию на "O3", это строка 25, то

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

LINK build/firmware.elf
arm-none-eabi-ld: build/py/malloc.o: in function `m_malloc0':
malloc.c:(.text.m_malloc0+0x6): undefined reference to `calloc'
make: *** [Makefile:44: build/firmware.elf] Ошибка 1
Спойлер

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

$ arm-none-eabi-gcc --version |head -n1
arm-none-eabi-gcc (GNU Arm Embedded Toolchain 10.3-2021.10) 10.3.1 20210824 (release)
Опытный кот
Аватара пользователя
Сообщения: 710
Зарегистрирован: Пн сен 15, 2025 08:43:23
Откуда: Маленький СССР посреди террористов

Сообщение linux_rulezz »

А нечего malloc на МК использовать!
Если нет виртуального непрерывного адресного пространства, динамическое выделение памяти противопоказано!
Windows must die!
Контактная информация:
Вымогатель припоя
Сообщения: 588
Зарегистрирован: Пн фев 16, 2026 17:30:02

Сообщение Rapra »

Так то баги в конкретном портировании, а не в чистом сишном проекте. Там же написано в тексте ошибки - нет реализации функции calloc.
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 355
Зарегистрирован: Ср мар 09, 2016 08:07:41

Сообщение JackSmith »

Там же написано в тексте ошибки - нет реализации функции calloc.
а почему при "Os" есть?
Вымогатель припоя
Сообщения: 588
Зарегистрирован: Пн фев 16, 2026 17:30:02

Сообщение Rapra »

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

Сообщение ARV »

JackSmith писал(а): Чт июл 02, 2026 13:07:59
Там же написано в тексте ошибки - нет реализации функции calloc.
а почему при "Os" есть?
я ранее писал о похожей беде: то, что я считал функцией, было на самом деле макросом, и, естественно, чтобы этот макрос разворачивался, нужен был правильный заголовочный файл. если этого заголовка не было - компилятор считал, что это функция и, само собой, не находил ее. может быть, в вашем случае тоже что-то подобное происходит: при оптимизации что-то из компиляции исключается, а то, что осталось уже не то, что понятно... может и у вас calloc по факту макрос.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Ответить

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