Skip to content

Commit bd0620a

Browse files
MarinaKalashinakartben
authored andcommitted
doc: develop: tools: CLion tutorial
This commit adds a tutorial on how to set up, build, and debug a sample Zephyr application in CLion. Signed-off-by: Marina Kalashina <marina.kalashina@jetbrains.com> Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
1 parent 4809491 commit bd0620a

File tree

7 files changed

+208
-0
lines changed

7 files changed

+208
-0
lines changed

doc/develop/tools/clion.rst

Lines changed: 207 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,207 @@
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
72.8 KB
Loading
80.3 KB
Loading
38.8 KB
Loading
25.4 KB
Loading
43.5 KB
Loading

doc/develop/tools/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ Tools and IDEs
66
.. toctree::
77
:maxdepth: 1
88

9+
clion.rst
910
coccinelle.rst

0 commit comments

Comments
 (0)