|
| 1 | +.. _clion_ide: |
| 2 | + |
| 3 | +CLion |
| 4 | +##### |
| 5 | + |
| 6 | +CLion_ is a cross-platform C/C++ IDE that supports multi-threaded RTOS debugging. |
| 7 | + |
| 8 | +This guide describes the process of setting up, building, and debugging Zephyr's |
| 9 | +:zephyr:code-sample:`multi-thread-blinky` sample in CLion. |
| 10 | + |
| 11 | +The instructions have been tested on Windows. In terms of the CLion workflow, the steps would be the |
| 12 | +same for macOS and Linux, but make sure to select the correct environment file and to adjust the |
| 13 | +paths. |
| 14 | + |
| 15 | +Get CLion |
| 16 | +********* |
| 17 | + |
| 18 | +`Download CLion`_ and install it. |
| 19 | + |
| 20 | +Initialize a new workspace |
| 21 | +************************** |
| 22 | + |
| 23 | +This guide gives details on how to build and debug the :zephyr:code-sample:`multi-thread-blinky` |
| 24 | +sample application, but the instructions would be similar for any Zephyr project and :ref:`workspace |
| 25 | +layout <west-workspaces>`. |
| 26 | + |
| 27 | +Before you start, make sure you have a working Zephyr development environment, as per the |
| 28 | +instructions in the :ref:`getting_started`. |
| 29 | + |
| 30 | +Open the project in CLion |
| 31 | +************************** |
| 32 | + |
| 33 | +#. In CLion, click :guilabel:`Open` on the Welcome screen or select :menuselection:`File --> Open` |
| 34 | + from the main menu. |
| 35 | + |
| 36 | +#. Navigate to your Zephyr workspace (i.e.the :file:`zephyrproject` folder in your HOME directory if |
| 37 | + you have followed the Getting Started instructions), then select |
| 38 | + :file:`zephyr/samples/basic/threads` or another sample project folder. |
| 39 | + |
| 40 | + Click :guilabel:`OK`. |
| 41 | + |
| 42 | +#. If prompted, click :guilabel:`Trust Project`. |
| 43 | + |
| 44 | + See the `Project security`_ section in CLion web help for more information on project security. |
| 45 | + |
| 46 | +Configure the toolchain and CMake profile |
| 47 | +***************************************** |
| 48 | + |
| 49 | +CLion will open the :guilabel:`Open Project Wizard` with the CMake profile settings. If that does |
| 50 | +not happen, go to :menuselection:`Settings --> Build, Execution, Deployment --> CMake`. |
| 51 | + |
| 52 | +#. Click :guilabel:`Manage Toolchains` next to the :guilabel:`Toolchain` field. This will open the |
| 53 | + :guilabel:`Toolchain` settings dialog. |
| 54 | + |
| 55 | +#. We recommend that you use the :guilabel:`Bundled MinGW` toolchain with default settings on |
| 56 | + Windows, or the :guilabel:`System` (default) toolchain on Unix machines. |
| 57 | + |
| 58 | +#. Click :menuselection:`Add environment --> From file` and select |
| 59 | + ``..\.venv\Scripts\activate.bat``. |
| 60 | + |
| 61 | + .. figure:: img/clion_toolchain_mingw.webp |
| 62 | + :width: 600px |
| 63 | + :align: center |
| 64 | + :alt: MinGW toolchain with environment script |
| 65 | + |
| 66 | + Click :guilabel:`Apply` to save the changes. |
| 67 | + |
| 68 | +#. Back in the CMake profile settings dialog, specify your board in the :guilabel:`CMake options` |
| 69 | + field. For example: |
| 70 | + |
| 71 | + .. code-block:: |
| 72 | +
|
| 73 | + -DBOARD=nrf52840dk/nrf52840 |
| 74 | +
|
| 75 | + .. figure:: img/clion_cmakeprofile.webp |
| 76 | + :width: 600px |
| 77 | + :align: center |
| 78 | + :alt: CMake profile |
| 79 | + |
| 80 | +#. Click :guilabel:`Apply` to save the changes. |
| 81 | + |
| 82 | + CMake load should finish successfully. |
| 83 | + |
| 84 | +Configure Zephyr parameters for debug |
| 85 | +************************************* |
| 86 | + |
| 87 | +#. In the configuration switcher on the top right, select :guilabel:`guiconfig` and click the hammer |
| 88 | + icon. |
| 89 | + |
| 90 | +#. Use the GUI application to set the following flags: |
| 91 | + |
| 92 | + .. code-block:: |
| 93 | +
|
| 94 | + DEBUG_THREAD_INFO |
| 95 | + THREAD_RUNTIME_STATS |
| 96 | + DEBUG_OPTIMIZATIONS |
| 97 | +
|
| 98 | +Build the project |
| 99 | +***************** |
| 100 | + |
| 101 | +In the configuration switcher, select **zephyr_final** and click the hammer icon. |
| 102 | + |
| 103 | +Note that other CMake targets like ``puncover`` or ``hardenconfig`` can also be called at this |
| 104 | +point. |
| 105 | + |
| 106 | + |
| 107 | +Enable RTOS integration |
| 108 | +*********************** |
| 109 | + |
| 110 | +#. Go to :menuselection:`Settings --> Build, Execution, Deployment --> Embedded Development --> RTOS |
| 111 | + Integration`. |
| 112 | + |
| 113 | +#. Set the :guilabel:`Enable RTOS Integration` checkbox. |
| 114 | + |
| 115 | + This option enables Zephyr tasks view during debugging. See `Multi-threaded RTOS debug`_ in CLion |
| 116 | + web help for more information. |
| 117 | + |
| 118 | + You can leave the option set to :guilabel:`Auto`. CLion will detect Zephyr automatically. |
| 119 | + |
| 120 | +Create an Embedded GDB Server configuration |
| 121 | +******************************************* |
| 122 | + |
| 123 | +In order to debug a Zephyr application in CLion, you need to create a run/debug configuration out of |
| 124 | +the Embedded GDB Server template. |
| 125 | + |
| 126 | +Instructions below show the case of a Nordic Semiconductor board and a Segger J-Link debug probe. If |
| 127 | +your setup is different, make sure to adjust the configuration settings accordingly. |
| 128 | + |
| 129 | +#. Select :menuselection:`Run --> New Embedded Configuration` from the main menu. |
| 130 | + |
| 131 | +#. Configure the settings: |
| 132 | + |
| 133 | + .. list-table:: |
| 134 | + :header-rows: 1 |
| 135 | + |
| 136 | + * - Option |
| 137 | + - Value |
| 138 | + |
| 139 | + * - :guilabel:`Name` (optional) |
| 140 | + - Zephyr-threads |
| 141 | + |
| 142 | + * - :guilabel:`GDB Server Type` |
| 143 | + - Segger JLink |
| 144 | + |
| 145 | + * - :guilabel:`Location` |
| 146 | + - The path to ``JLinkGDBServerCL.exe`` on Windows or the ``JLinkGDBServer`` binary on |
| 147 | + macOS/Linux. |
| 148 | + |
| 149 | + * - :guilabel:`Debugger` |
| 150 | + - Bundled GDB |
| 151 | + |
| 152 | + .. note:: For non-ARM and non-x86 architectures, use a GDB executable |
| 153 | + from Zephyr SDK. Make sure to pick a version with Python support |
| 154 | + (for example, **riscv64-zephyr-elf-gdb-py**) and check that Python |
| 155 | + is present in the system ``PATH``. |
| 156 | + |
| 157 | + * - :guilabel:`Target` |
| 158 | + - zephyr-final |
| 159 | + |
| 160 | + * - :guilabel:`Executable binary` |
| 161 | + - zephyr-final |
| 162 | + |
| 163 | + * - :guilabel:`Download binary` |
| 164 | + - Always |
| 165 | + |
| 166 | + * - :guilabel:`TCP/IP port` |
| 167 | + - Auto |
| 168 | + |
| 169 | + .. figure:: img/clion_gdbserverconfig.webp |
| 170 | + :width: 500px |
| 171 | + :align: center |
| 172 | + :alt: Embedded GDB server configuration |
| 173 | + |
| 174 | +#. Click :guilabel:`Next` to set the Segger J-Link parameters. |
| 175 | + |
| 176 | + .. figure:: img/clion_segger_settings.webp |
| 177 | + :width: 500px |
| 178 | + :align: center |
| 179 | + :alt: Segger J-Link parameters |
| 180 | + |
| 181 | +#. Click :guilabel:`Create` when ready. |
| 182 | + |
| 183 | +Start debugging |
| 184 | +*************** |
| 185 | + |
| 186 | +#. Place breakpoints by clicking in the left gutter next to the code lines. |
| 187 | + |
| 188 | +#. Make sure that **Zephyr-threads** is selected in the configuration switcher and click the bug |
| 189 | + icon or press :kbd:`Ctrl+D`. |
| 190 | + |
| 191 | +#. When a breakpoint is hit, CLion opens the Debug tool window. |
| 192 | + |
| 193 | + Zephyr tasks are listed in the :guilabel:`Threads & Variables` pane. You can switch between them |
| 194 | + and inspect the variables for each task. |
| 195 | + |
| 196 | + .. figure:: img/clion_debug_threads.webp |
| 197 | + :width: 800px |
| 198 | + :align: center |
| 199 | + :alt: Viewing Zephyr tasks during a debug session |
| 200 | + |
| 201 | + Refer to `CLion web help`_ for detailed description of the IDE debug capabilities. |
| 202 | + |
| 203 | +.. _CLion: https://www.jetbrains.com/clion/ |
| 204 | +.. _Download CLion: https://www.jetbrains.com/clion/download |
| 205 | +.. _Project security: https://www.jetbrains.com/help/clion/project-security.html#projects_security |
| 206 | +.. _Multi-threaded RTOS debug: https://www.jetbrains.com/help/clion/rtos-debug.html |
| 207 | +.. _CLion web help: https://www.jetbrains.com/help/clion/debugging-code.html |
0 commit comments