Embedded development

Learn how to configure CLion for various hardware types and toolchains, and how to debug on chip.

GDB Server

On-Chip debugging with GDB Server

If it’s possible to debug on the microcontroller of your choice with a GDB Server, you can do it from CLion using a special Embedded GDB Server Run/Debug configuration. It covers OpenOCD, ST-Link GDB Servers, Segger J-Link GDB Server, QEMU, and many other specific GDB Servers.

A wizard helps with creating Embedded GDB Server run configurations with the predefined GDB server arguments corresponding to the GDB server type selected in the wizard settings.

OpenOCD

Open On-Chip Debugger

Debugging with the Open On-Chip Debugger is supported by CLion. Use the new Run/Debug configuration template, ‘OpenOCD Download and Run’ to debug on your microcontroller.

If you work with a STM32CubeMX project in CLion, an OpenOCD Run/Debug configuration will be created for you automatically.

Learn more about STM32CubeMX & OpenOCD integration

FreeRTOS thread view

RTOS integration

If you debug applications with RTOS in CLion, a view with the task lists is available. You can switch to the task you are interested in to explore task variables and more. FreeRTOS, Zephyr, and Azure RTOS are supported.

Peripherals

Peripheral View for ARM Devices

When debugging on-chip, it’s crucial to have the ability to view the peripherals. In CLion, this view is available for two types of Run/Debug configurations: Embedded GDB Server and OpenOCD Download & Run. In both cases, a Peripherals tab appears in the debug tool window when you start debugging. Load the appropriate .svd file for your board and select the active peripherals you need to see.

Learn more

PlatformIO

PlatformIO

PlatformIO is an open-source platform that helps embedded developers with their projects. To benefit from it in your embedded projects, take advantage of a PlatformIO for CLion plugin, which:

  • Adds the PlatformIO project type to the New Project wizard.
  • Works directly with the platformio.ini file, tracking changes in it and updating the project information accordingly.
  • Automatically creates configurations for debug and upload.
  • Allows for debugging with the PIO Unified Debugger from CLion right on chip.
  • Gives quick access to the most used commands and project actions in the PlatformIO tool window.
IAR

IAR Toolchain

If you use the IAR compiler/toolchain in your embedded projects, you can do so in CLion. Projects using the IAR toolchain load successfully and work in CLion.

A few things to note here:

  • MinGW is required.
  • Ninja is recommended as a CMake generator.
  • A few tips on using CMake with IAR Embedded Workbench.
Custom Compiler

Custom Compiler

Suppose you are using a custom compiler or a compiler not yet known to CLion natively, which is often the case in embedded development. There is a way to describe all the necessary information about the compiler to CLion and work with it as if it were natively supported.

Use Settings | Build, Execution, Deployment | Toolchains | Custom Defined Compiler to enable it and provide the *.yaml file that contains your custom compiler definition. Check out the sample configs prepared by the CLion team for you.

MISRA

MISRA C and C++

CLion partially supports MISRA C:2012, MISRA C++:2008, and MISRA C++:2023. These guidelines are widely used in embedded development, especially in the automotive industry. The MISRA checks in CLion speed up coding by detecting inconsistencies earlier in the development cycle. The list of currently supported checks is available in CLion’s knowledge base .

STM32CubeMX

STM32CubeMX integration

If you develop for STMicroelectronics boards, you’ll be happy to know that CLion integrates with STM32CubeMX:

  • CLion can create a new .ioc project or open an existing one, and generate a CMake file to correctly work with it.
  • You can start STM32CubeMX any time directly from CLion to update board settings and generate code.
  • CLion reminds you to select a board config and suggests a list of options in the UI.