Pull to refresh

Comments 57

Круто, а давно Stm32Cube стал IDE? Я даже соскучился как-то по эмбедд разработке…
UFO just landed and posted this here
В свое время пользовался связкой Stm32Cube + IAR, все полностью устраивало
UFO just landed and posted this here
Да, подсмотреть инициализацию в кубе милое дело. Насчет крашится, у меня пока не было, а вот создать совсем пустой Си проект и накидать туда все остальное так и не смог, т.к. на этапе настроек проекта, вылазит какая-то ошибка с внутренним кодом и дальше ничего не работает.
Спасибо, тоже пропустил…
Cube cам-то примелькался, MX или IDE там в конце и не разобрать)
Значит надо подождать ещё полгода пока вся «сырость пропечётся».
UFO just landed and posted this here
У кейла ограничение в 32кб. С которым рано или поздно сталкиваешься.
UFO just landed and posted this here
Добавил в простой проект USB+FATFS на STM32F4 и уже вылетел за порог в 32кб. По началу отключал то, что не использую, изменял уровни оптимизации. В конечном итоге плюнул и перешел на Atolic.
Это вы ещё FreeRtos не использовали до кучи к вышеперечисленному с парой десятков задач.

Первый раз пробовал что-то написать под STM32 из под Keil. Очень быстро перелез на CLion (gcc + OpenOCD), т.к. Keil, как IDE, по ощущениям, отстает где-то на 10-15 лет. Удобный редактор с возможностью vim режима, быстрая и точная навигация по определениям, подстветка, продвинутое автоформатирование, подсказки вроде clang-tidy, рефакторинги, интеграция с git, даже темная тема и другие мелочи — всего этого в keil не хватает.


Предполагаю, что в нем есть какие-то свои фичи, которых нет в более универсальных IDE вроде CLion или VS Code, но пока не сталкивался (может они нужны на более сложных задачах, где CLion + gcc + OpenOCD + gdb не хватит, не знаю).

А есть где дока, как использовать такую связку?

https://www.jetbrains.com/help/clion/embedded-development.html
Есть более старая, но чуть более подробная статья из трех частей:
https://blog.jetbrains.com/clion/2016/06/clion-for-embedded-development/


От себя могу добавить, что, используя эту связку, можно без проблем писать на C++ 2a под STM32 (gcc последний 2019-q4).
Для этого мне понадобилось только сделать пару однострочников, которые переименовывают все .c файлы в .cpp и обратно (на время перегенерации проекта в Cube, если что-то меняю или просто мигрирую на новую версию).


Понадобилось только добавить немного static_cast'ов в нескольких местах (и не забывать откатывать изменения генератора cube на этих строчках через git), игнорировать несколько видов предупреждений (у меня получилось -Wall -Wno-register -Wno-write-strings -Wno-sign-compare -Wno-unknown-pragmas -fno-exceptions -Wno-psabi в CMAKE_CXX_FLAGS) и исключить код FreeRTOS из переименования в cpp (иначе планировщик перестает работать когда код FreeRTOS скомпилирован как C++).

CLion платный жеж ( или я что-то пропустил?).

Есть бесплатные студенческие лицензии, а так платный. Но аналогов по удобству нет, сомневаюсь, что Qt Creator или VS Code смогут добраться до такого же уровня в обозримом будущем (впрочем, они всё еще далеко впереди Keil).

Автор, в чем заключаются плюсы проприетарности?
в надежде, что когда-нибудь уберут косяки

Одни уберут но новых добавят. У них чипы (и доки) зато традиционно хороши. А со средами разработки традиционно не очень. :)

Как у него с отладчиком? Если есть, что и как нужно подключать ;)
Отладчик на месте, Run -> Debug, там же настройки, если подключен какой-нибудь ST-Link, оно само все настраивает
Само то оно настраивает конечно, но если хочется использовать трассировку через 3-х проводный SWD (semihosting), то многое в настройках приходится подправлять руками.

В дебиане уже пару версий как gdb-multiarch, так и так править.

Интересует китайский j-link. Просто решил попробовать stm, подыскиваю среду. Кто что советует. И ещё вопрос, как либы скомпилированные подключать? Есть библиотека STM32CRYPTOLIB, а как подключить не нашёл

Библиотеки подключаются так же, как и к любому C/C++ проекту на Eclipse. Открываем свойства проекта, в панеле диалога слева выбираем C/C++ Build -> Settings. Открываем вкладку Tool Settings. Открываем в дереве MCU GCC Linker -> Libraries и добавляем в панель Libraries нужные библиотеки. Так же в MCU GCC Compiler -> Include paths в панеле Include paths добавляем пути к заголовочным файлам библиотек.
Идет из коробки и сразу работает. Вообще настраивать не пришлось.
При установке еще предлагает дрова stlink, jlink поставить.
Windows/Linux — полёт успешный
Немного жестоко гонять толстый эклипс с большим количеством java на гигабайте оперативной памяти. Мне будет интересно посмотреть на скорость Вашей работы, даже если заработает без проблем.
А чем этот CubeIDE удобнее чем PlatformIo IDE?

У меня слегка эгоистичный подход — использую "чистый" Eclipse для всего. Проще довесить требуемые целевой архитектурой плагины чем перепревыкать. Да, STM32CubeMX есть плагином под эклипс. И работает, единственный минус — под linux надо указывать gtk=2.

Когда-то я тоже был фанатом Эклипса. Недавно переполз на Вижуал Студио Коде — просто небо и земля. Рекомендую.

Не, не фанатизм. Лень :). Но попробую.

Спорно. VS — просто монстр и не очень гибкий. eclipse гибче, и во многом удобнее.
Лично я бы предпочел гибрид eclipse и beans.

VS и VS Code — это два разных продукта ;)
Извиняюсь, Ваша правда. Спутал VS Code и community.
Обязуюсь поработать с VS Code.
Советую попробовать qt creator. Очень удобная штука. Переполз на него с geany через sublime. Самая лучшая навигация по коду + в реальном времени подсвечиваются различные проблемы, диагностированным статическим анализатором clang.
В общем, свободная IDE гораздо лучше всякой проприетарщины!

Тут ведь дело не только в работе с кодом — нормальный дебаг, отображение состояния переферии, трассировка значений переменных — вот это все можно добавить в qt creator?

Там инструкция про подключение отладчика и ни слова про всё остальное

qtcreator из коробки работает с gdb, так что, если кому-то нужна внутрисхемная отладка, с этим проблем нет.
Лично я отлаживаю более привычным для меня способом: посредством диагностических сообщений (UART, USB), а также с помощью логанализатора и осциллографа. Пока еще ни разу не испытывал потребности во внутрисхемной отладке.
В принципе, есть еще вариант — сеггер предлагает посредством jlink в реальном времени сообщения отсылать с меньшей нагрузкой, нежели уарт (как я понял, выделяется область памяти с флажками и собственно сообщениями, а jlink периодически это мониторит). Но я — не сторонник уж такой лохматой проприетарщины, чтобы вместо stlink'а jlink использовать.
Через stlink тоже можно гнать трассировочные сообщения, причем даже двумя разными способами: синхронным (через обычное трехпроводное подключение) и асинхронным (требует одной дополнительной линии связи).
Понятно, что в принципе это возможно, но пока свободных (да и даже проприетарных) реализаций не встречал.
Честно говоря, st-link я использую в основном лишь для STM8, а STM32 прошиваю встроенным бутлоадером либо через UART, либо через DFU.
Та же STM32CubeIDE поддерживает при переключении Debug probe с выбираемого по умолчанию «ST-LINK (ST-LINK GDB server)» на «ST-LINK (OpenOCD)» и небольших манипуляций с конфигурацией проекта. Если не хочется STMCubeIDE, то трассировочные сообщения поддерживает тот же консольный st-util с ключем --semihosting
Ребята, создавать проект типа под SPL на CubeIDE никто не научился?
SPL только руками, устарел же официально, в качестве приемника есть LL, куб его генерирует без заморочек
SPL под кубIDE никак не получается, хоть руками, хоть еще чем! Примеры есть, такие, чтобы реально подтверждали возможность создания SPL проектов под CubeIDE???
Учитывая то, какие портянки после кубового кодогенератора получаются, лучше использовать куб только по прямому назначению: для выбора наиболее подходящего под задачу МК и для уточнения, что всей необходимой периферии вам хватит.
Для инициализации периферии те же ST давным-давно написали набор очень хороших сниппетов (жаль только, что они лишь под STM32F0, но и на другие семейства их несложно перенести). Ну, а остальная логика все равно пишется руками, так что все эти SPL, HAL, opencm3 — излишества. По сути, если пользоваться дополнительно внешними библиотеками, придется не только RM+даташит на МК читать, но и документацию на библиотеку (да и частенько в ее код заглядывать, когда наткнешься на баг или тормоза).

Портянки легко читаются и подправляются, а вот сниппетами можно знатно наколхозить, и если ресурсы не жмут, лучше кубом.
Если ресурсы жмут, а плата разведена, например, под 20 ног (и 32к флэша — потолок), можно подсмотреть сниппеты

Быдлокод посредством калокуба годится лишь если «поматросил — и бросил» (то бишь «тяп-ляп — и в продакшн, а о поддержке забудьте»).
Если же поддерживать надо, то только полоумный будет в каловских портянках пытаться разобраться вместо того, чтобы целиком полноценный свой код написать.
И да, свои сниппеты — это вещи, проверенные временем. Уж всяко надежней, чем кал (в котором, кстати, до сих пор косяки находят).
По опыту, ноги раскидать — оно годно.
И с недавних пор даже научились делать однонаправленный UART не только в GUI, но и на деле (раньше «говоришь» «мне uart только на выход», а в портянке все равно 2 ноги).
i2c — ужасный.
spi — с пивом норм, хоть и есть нюансы.
usb — вполне.
dma — ужас подающий надежды
таймеры — так же

Еще из минусов, в библиотеках меняют названия функций и бибы одного куба даже по названиям функций не совместимы с другим, для поддержки нужен будет зоопарк кубов, за это бы ноги надо вырвать. И прототипы кидают не в .h файлы, а в текущий .c файл. Экплипс такое недолюбливает.
Но, в принципе, все терпимо, если опыт есть. Может, допилят до чего годного.

Сниппеты все на CMSIS и были узкие места, которые в сочетании с другими задачами работать не будут (опять, таки, если нет опыта). А ремапнуть ноги какого-нибудь интерфейса для человека неподготовленного может занять целую вечность. Кто умеет, тот и без сниппетов накидает, просто глядя в RM.

Итого, если опыт есть, то наверное пофиг в чем сидеть. Если мало, или передавать дела, то куб наглядней. Если ресурсоемкий проект, то нужен человек с опытом.

Когда Atollic стал бесплатным, я очень обрадовался, потому что это цельная специализированная IDE с множеством полезных инструментов для отладки. Плюс, она отлично работала с дополнением Eclipse для поддержки CMake проектов. Единственное, она использовала старую версию CDT и не поддерживала всех современных фич языка C++. Но была надежда на то, что в будущем это пофиксят.


А потом вышла Stm32CubeIDE и сломала совместимость с CMake плагинами. Хочется работать — генерируюй проект в CubeMX. А когда у тебя CI и всё проекты на CMake + в основном ты пользуешься libopencm3… Пришлось оставить надежду и уйти на VS Code. Очень жаль, что так вышло.

По мне так переименовали бы они атолик в куб и не городили абсолютно новую IDE.
Что-то я запутался во всем этом разнообразии библиотек.
Итак для STM32, есть HAL, LL, opencm3, SPL и CMSIS, что-то еще я забыл?

при этом
SPL — только для STM32. Устарел.
LL — только для STM32. Генерится с помощью Stm3CubeMX. Устарел.
HAL — только для STM32. Генерится с помощью Stm3CubeMX.
opecm3 — для разных производителей, но поддержка моделей МК страдает. Есть github и можно вносить правки.

CMSIS — для всех Cortex. То что на сайте ARM не то чтобы библиотека, а в основном заголовочные файлы с названиями и описаниями функций. Тела предлагается реализовать самостоятельно.
Итак вопрос, есть ли CMSIS для Stm32?
Есть ли производители, которые реализовали CMSIS для своих МК?

LL появился позже HAL и уже устарел? Откуда инфа?
Sign up to leave a comment.

Articles