LINUX.ORG.RU

CMake скрипт для простой компилляции stm32 проектов, сгенерированных STM32CubeMX

 , ,


0

2

Долгое время для разработки под stm32 я использую HAL и cubeMX. Эти инструменты позволяют проводить разработку наиболее эффективно, абстрагируясь от железа не нужно сидеть целый день, читая даташиты и думая, почему не работает интерфейс, когда проблема заключается в одном неправильно настроенном регистре из тысячи. Можно больше времени потратить на логику самой программы.

Долгое время я пользовался генератором мейкфайлов https://github.com/baoshi/CubeMX2Makefile , но немного изменённым, для более простого использования с собственным аддоном для emacs. Но этот процесс меня немножко достал - хотелось одного интерфейса для работы с обычными проектами и с stm. Поэтому было решено написать cmake скрипт.

Итого результат: https://github.com/SL-RU/STM32CubeMX_cmake

Главной задачей стояло упрощение работы и старта нового проекта. Щитаю что цель достигнута!

Инструкция по использованию.

  • Создать и сгенерировать в кубе проект с таргетом SW4STM32.
  • Скопировать CMakeLists.txt и CubeMX2_cmake.py в папку с проектом.
  • mkdir build; cd build
  • cmake ../; make
  • Готово!

В итоге в emacs я теперь использую semantic + ede-compdb для автодополнения, подсветки и ошибок для stm32 и просто сишных проектов.

Предложения и замечания принимаются.

★★★★

Последнее исправление: SL_RU (всего исправлений: 1)

О, интересно. А в чём плюсы cmake по сравнению с просто make в применении к stm32 (безотносительно куба)?

L0 - это не -mcpu=cortex-m0, это -mcpu=cortex-m0plus

Beewek ★★
()

После StdPeriph Library свалил на OpenCM3 с обычными мейкфайлами, но я не часто использую STM32. Куб с халом хороши для студентов, разве что, ящитаю. Как раз для студентов ищу (не сильно искал) бесплатную, а лучше свободную IDE для STM32 с поддержкой куба под оффтопик, если не найду - можно будет состряпать из вашего проекта. До сих пор не могу понять, откуда у производителей железа такая тяга к выпуску софта под операционную систему для домохозяек и запуска игр?

Rupricht ★★
()
Ответ на: комментарий от Rupricht

Как раз для студентов ищу (не сильно искал) бесплатную, а лучше свободную IDE для STM32

System Workbench for stm32. На эклипсе сделано. Правда глючит по-страшному.

anonymous
()
Ответ на: комментарий от SL_RU

Ну плюсы те же, что между cmake и make при обычном проганье на компах.

При обычном проганье на компах, насколько я понимаю, cmake удобен тем, что он умеет сам искать зависимости и пути к либам. В embedded это обычно не требуется (по крайней мере в bare-metal). Так что здесь паритет. Посмотрел ваш CMakeLists.txt - там, по сути не используется внутренняя магия cmake, всё вручную. Ищутся исходные файлы по маске, строится список объектных файлов, за cmake остаётся только вызов компилятора и линкера. По сути, это тот же makefile, только написанный на языке cmake.

...Одно время я раздумывал над переходом на scons, но точно так же не увидел преимуществ. Так и сижу на make:)

Beewek ★★
()
Ответ на: комментарий от Rupricht

Куб с халом хороши для студентов, разве что, ящитаю.

Наоборот, только у студентов есть время пердолиться с ручной конфигурацией регистров, остальным надо решить задачу за минимальное время и без багов.

До сих пор не могу понять, откуда у производителей железа такая тяга к выпуску софта под операционную систему для домохозяек и запуска игр?

Куб же на жабке, работает везде.

anonymous
()
Ответ на: комментарий от Beewek

Ну так то да, видимых преимуществ особо и нет - только субъективные. Мне лично совсем не нравиться синтаксис make - кажется, будто юзаешь костыль. Да он и есть костыль: https://habrahabr.ru/post/321652/

В самом начале make был программой, которую один человек написал для себя и нескольких своих знакомых. Тогда он, недолго думая, сделал так, что командами воспринимаются строки, которые начинаются с Tab. Т. е. Tab воспринимался отлично от пробела, что крайне некрасиво и нетипично ни для UNIX, ни за его пределами. Он так сделал, потому что не думал, что make будет ещё кто-то использовать кроме этой небольшой группы. Потом появилась мысль, что make — хорошая вещь и неплохо бы включить его в стандартный комплект UNIX. И тогда чтобы не сломать уже написанные мейкфайлы, т. е. написанные вот этими вот десятью людьми, он не стал ничего менять. Ну вот так и живём… Из-за тех десятерых страдаем мы все.

А помимо субъективного удобства он ещё генерирует compile_commands.json, которые emacs может использовать для создания базы для автодополнения и подсветки ошибок. Теперь мне не нужен дополнительный самописный костыль.

SL_RU ★★★★
() автор топика
Ответ на: комментарий от anonymous

Да и то не у всех студентов, а только у тех, кто кроме этих регистров больше ничего и не делает.

SL_RU ★★★★
() автор топика
Ответ на: комментарий от SL_RU

Мне лично совсем не нравиться синтаксис make - кажется, будто юзаешь костыль.

Против собственных тараканов убеждений, особенно подкрепленных историческими байками, никакие аргументы не действуют.

yyk ★★★★★
()
Ответ на: комментарий от SL_RU

Да нет никаких плюсов у cmake под мелкоконтроллеры! Написал один раз Makefile — и забыл!

Это ж не десктоп, где 100500 зависимостей искать надо!

anonymous
()
Ответ на: комментарий от anonymous

Так cmake тоже самое - написал и забыл!

В комповой разработке уже отказался от make, захотелось и здесь для унификации.

SL_RU ★★★★
() автор топика

Я свой генератор мейкфайлов написал bash. Еще патчу сгенеренный код

vromanov ★★★
()
21 апреля 2017 г.
Ответ на: комментарий от anonymous

Куб полезен как минимум для того чтобы собрать базовую инициализацию ног. Мне её писать обычно впадлу.

От необходимости понимать что и как работает и в какие регистры пишет он не спасёт

Dark_SavanT ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.