[Из песочницы] Настройка IDE Clion и Cmake для работы с STM32 и C++

Комментарии 14

  • 24cce74224ce623eb894dfbc519999dd_small.g

    23.08.17 в 18:10

    0

    На сайте нашел только триальную на 30 дней.
    Плохо искал или нет в природе?
    • 6d0bafa9e9afb2bfaade4dc476b25940_small.p

      23.08.17 в 18:52

      0

      Практически все IDE от JetBrains платные. Но они того стоят :)
      • 23.08.17 в 19:05

        +1

        Оно того стоит, если постоянно зарабатываешь этим. А если программинг — хобби, то не стоит.
        • 23.08.17 в 22:46

          0

          CLion хорош. Я когда делал свой мини-проект для STM32 почти было его купил.

          Но потом я попробовал Rust и переписал всё на него. Рекомендую попробовать.

          Есть плагин для IntellJ, но он довольно сыроват. В частности, вывод типов работает не идеально, из-за чего местами затруднительно использовать сгенерированную под контроллер библиотеку (генерируется много весьма специфичных типов, под конкретную периферию).

      • 24cce74224ce623eb894dfbc519999dd_small.g

        23.08.17 в 19:22

        0

        Может они и стоят того для java-guru.
        А мне и Keil и SES и IAR и Ride7 и Visual Studio/Code.
        Ну, а когда совсем делать нечего можно и Eclipsом/CCS/SimplicityStudio/Kinets время убить (и производными от него).
        Для супер профи еще ArduinoIde есть.
        Рюшки в той же VS необыкновенные, но gcc и рядом не лежал с armcc.
        Про отладчик я и говорить не буду. Ozon конечно не плох, но еще поработать надо.

        Но каждый вибирает сам — спорить бессмысленно.

  • 23.08.17 в 19:11

    0

    Попробовал хваленый Keil — конечно получше блокнота

    А вот щас, обидно было ©
    Я уже попробовал CLion для STM32 и у меня ровно обратные притензии:
     — У меня вот (как и у 80% людей) ST-Link, че мне делать то с вашим Segger Debuger. Ответ — не дебажить.
     — В отличии от Clion, Keil обладает хорошими сис. мониторами, которые позволяют контролировать процесс инициализации/пуска, эвенты/обработчики — что может Clion?
     — В Keil есть отличный эмулятор, который позволяет не парится с дев бордой, или юзать функции МК которых нет на твоей борде (какой нить USB или FSMC и т.п.)
     — Я использую продукты JetBrains, в частности PyCharm и меня задолбало, что за 4 часа работы IDE выжирает 2Гб ОЗУ (400 начальный это минимум), при всей своей «ненависти» к Keil его потребление неделями остается 40–50Мб, что позволяет мне его использовать ГДЕ угодно и КОГДА угодно.
     — Keil имеет собственный репозиторий либ, которые добавляются простой галочкой в настройках.
    Не срача ради, но все таки: Вам шашечки (подсветка, цветастость то да се) или таки ехать? (писать/дебагать под МК)
    ЗЫ. Взял цв. тему с PyCharm, перегнал в Keil, получил 2 в 1, и Вам того советую. Кстати так и не понял что Вы называете «пакетами»?
    • 23.08.17 в 20:25

      0

      Мне кажется, что если ограничится работой с железом — то, может, Keil и хорош. Мне лично в том проекте, над которым тружусь что-то все эти возможности не очень пригодились. Да и польза от него, только если крепко сидеть под виндой.
      А вот если с кучей «бизнес-кода», оставшегося от свинтивших с проекта «железячников» разбираться, то тут уже CLion, Eclipse и т.д. Инструменты для работы с кодом в Keil’е вызывают недоумение.
      А по-поводу потребления памяти — то это как Запорожец сравнивать с многоцелевыми истребителем. И по этому показателю, и по работе с кодом, кстати, Keil далеко позади и Atom’а, и VSCode, и Sublime’а, и Emax с Vim’ом…
      • 23.08.17 в 21:25

        0

        Мне кажется, что если ограничится работой с железом

        А с чем Вы простите работаете, не с железом?
        Мне кажется, не надо «редакторы» (atom/sublime), сравнивать с полноценной средой разработки для встраиваемых систем c присущим ей функционалом, ибо то что вы перечисляете есть ничто иное как фишки редактора, не более.
        А я сравнил две IDE, и утверждал, что профита от Clion, кроме редактора — никакого.

        Кажется мы стали забыть что такое IDE…

        • 23.08.17 в 21:57

          0

          Я думаю, что Ryppka имел в виду работу с кодом в плане intellisense, навигацию, семантический анализ, рефакторинг и тому подобное. Иметь всё это — большое подспорье в разработке.

          • 23.08.17 в 22:34

            0

            intellisense

            Поэтому я и спросил. Вы пишите просто С/С++ оперируя чистым кодом, или вам часто приходится таки работать с железкой?
            С железкой, не в плане, «накодогенераторить», а потом сидеть принтами дебагать, че из этого вышло.
            В целом для чистого С, мне достаточно что Keil подстветит мне структуры, остальное вырабатывается по ходу работы, но все равно, я считаю что иметь для программирования встраиваемых систем монитор периферии, это огроменный плюс, который перекрывает «квадратность» редактора кода.
            Эксперименты с IDE для embedd, я перестал делать после попытки завязаться с CooCooX, понял что проще попытатсья раскрыть потенциал знакомого инструмента, чем сидеть страдать в поисках.
            Более того, мне компилятор кейл, как то более по душе, учитывая что он является официальным АРМ компиллером, а 30 кб триального кода, на данный момент хватает за глаза.
            В целом, я не хотел преподнести свои слова как агрессию, просто автор статьи, как новичек, непонятно за что боролся, настраивая Clion для редактирования кода, в ущерб скажем так «прозрачности» программирования и понимания. Я сам на первых парах лихорадочно трейсил даже функции в библиотеках (stl), сравнивая значения в регистрах с тем что нужно было мне, искал различные нюансы в написании кода, активно использовал эмулятор (например для исследования работы аналогового компаратора, и разных режимов ADC).
            • 23.08.17 в 23:04

              0

              Приходится. Хм, может быть, я не совсем понимаю, что вы имеете в виду под мониторами периферии? Потому что Ozone вполне себе показывает состояние периферии, и не приходится разменивать «квадратность» на качество работы с железом. У автора есть удобные неинвазивные логи (через RTT), есть осциллограф (J-Scope), есть инструмент для профилирования в динамике (SystemView), так что я не думаю, что он что-то потерял в плане удобства работы с железом. Может быть, я просто что-то не знаю о кейле (признаюсь, давно было, да и Linux везде) и там есть что-то гораздо удобнее.


              Я бы не хотел спорить о том, что лучше, тем более всё сильно завязано на персональное удобство и особенности проектов. Кому-то достаточно триальных ограничений — для меня 30 Кб практически делает компилятор бесполезным, у меня довольно увесистые проекты. Я активно использую C++14 (не спешите кривиться, C++ вполне годен для embedded — если знать подводные камни, много платить не приходится) и не знаю, что у armcc с поддержкой, а кто-то работает с чистым C и для него это не фактор. Кому-то нужна только подсветка кода, а мне некомфортно без маленьких радостей жизни — посмотреть сигнатуру функции под курсором и комментарий к ней, вывести список методов после. или → (и да, с fuzzy search) и тому подобного. Кому-то хочется подключать библиотеки кликом мыши, а я, признаюсь, немного control freak, мне нужно, чтобы проект был самодостаточной вещью в себе, без управления с помощью GUI-магии (поэтому связка CMake / CLion мне импонирует — обычная система сборки одновременно служит форматом проекта IDE). Так много фломастеров, и так много вкусов. :)

    • 23.08.17 в 21:52

      0

      Не вступая в полемику и не делая рекламы (хотя я использую CLion и, для встраиваемого, инструменты от Segger), вроде бы у сеггера есть утилита, которая из ST-Link делает J-Link OB. Но я не пробовал, она просто там в загрузках висит.

    • ff94edd6aafa2c1da33da0f618c0076e_small.j

      23.08.17 в 22:17

      0

      Использовал CoIDE. Для труЪ профессионала, конечно, не то, но довольно приятно. Подключение либ из коробки. Нормальный дебаг Ну и все редакторские плюшки Eclipse. Пока эта IDE мне больше всего нравится.


      Сейчас использую Keil, так сложилось. Удобнее IAR блокнота, но замечания есть. Иногда не работает автодополнение и навигация по коду. А так же при отладке часто не показывает значения переменных. И в проекте нельзя делать вложенные… гм… назовем их «папки».


      P.S.


      У меня вот (как и у 80% людей) ST-Link, че мне делать то с вашим Segger Debuger. Ответ — не дебажить.

      Я настоятельно призываю не пользоваться нелицензионным ПО и железом, но в ознакомительных целях перепрошивка ST-Link в Segger J-Link


      Делал так для RTL-8710, потому что на копеечный радимодуль деньги есть, а на Segger — нет

  • 9ff1da0f6bc9d279369e4edada1fc41d_small.p

    24.08.17 в 02:03

    0

    *.specs не генерирует, а скорее линкует с соответствующей реализацией libc / libgolss вашего тулчейна.
    Например lib/thumb/v7-ar/fpv3/hard/nano.specs:


    ...
    *nano_libc:
    -lc_nano
    
    *nano_libgloss:
    %{specs=rdimon.specs:-lrdimon_nano} %{specs=nosys.specs:-lnosys}
    ...
    *link:
    %(nano_link) %:replace-outfile(-lc -lc_nano) ...
    ...

    с, в зависимости от реализации, застабленными вызовами типа такого: https://github.com/32bitmicro/newlib-nano-1.0/blob/c010b5911834ed9a412bd0a865abdf3eed00a4ee/libgloss/arm/syscalls.c#L585

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

© Habrahabr.ru