You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Update board generation, use renamed function
* Update documentation with new platform integration state
* Remove accidentally pushed file
* Use correct update command
* Use correct highlighting
* Use correct language
* Add section on debugging
* Add docs on filesystem, minor corrections
* Use -iprefix in compilation, but still expose all include paths to IDE
* Add exception and RTTI support, document them
* Fix typo
Refer to the general documentation at https://docs.platformio.org/.
21
21
22
-
Especially useful is the `Getting started with VSCode + PlatformIO <https://docs.platformio.org/en/latest/integration/ide/vscode.html#installation), [CLI reference](https://docs.platformio.org/en/latest/core/index.html) and [platformio.ini options](https://docs.platformio.org/en/latest/projectconf/index.html)>`__ page.
22
+
Especially useful is the `Getting started with VSCode + PlatformIO <https://docs.platformio.org/en/latest/integration/ide/vscode.html#installation>`_, `CLI reference<https://docs.platformio.org/en/latest/core/index.html>`_ and the `platformio.ini options<https://docs.platformio.org/en/latest/projectconf/index.html>`_ page.
23
23
24
24
Hereafter it is assumed that you have a basic understanding of PlatformIO in regards to project creation, project file structure and building and uploading PlatformIO projects, through reading the above pages.
25
25
26
26
Current state of development
27
27
----------------------------
28
28
29
-
At the time of writing, PlatformIO integration for this core is a work-in-progress and not yet merged into mainline PlatformIO. This is subject to change soon.
29
+
At the time of writing, PlatformIO integration for this core is a work-in-progress and not yet merged into mainline PlatformIO. This is subject to change once `this pull request <https://github.com/platformio/platform-raspberrypi/pull/36>`_ is merged.
30
30
31
31
If you want to use the PlatformIO integration right now, make sure you first create a standard Raspberry Pi Pico + Arduino project within PlatformIO.
32
32
This will give you a project with the ``platformio.ini``
@@ -38,21 +38,42 @@ This will give you a project with the ``platformio.ini``
38
38
board = pico
39
39
framework = arduino
40
40
41
-
Here, you need to change the `platform` to take advantage of the features described hereunder.
42
-
You *also* need to inject two PlatformIO packages, one for the compiler toolchain and one for the Arduino core package.
41
+
Here, you need to change the `platform` to take advantage of the features described hereunder and switch to the new core.
When the support for this core has been merged into mainline PlatformIO, this notice will be removed and a standard `platformio.ini` as shown above will work as a base.
52
+
53
+
Deprecation warnings
54
+
---------------------
55
+
56
+
Previous versions of this documentation told users to inject the framework and toolchain package into the project by using
57
+
58
+
.. code:: ini
59
+
50
60
; note that download link for toolchain is specific for OS. see https://github.com/earlephilhower/pico-quick-toolchain/releases.
When the support for this core has been merged into mainline PlatformIO, this notice will be removed and a standard `platformio.ini` as shown above will work as a base.
64
+
65
+
This is now **deprecated** and should not be done anymore. Users should delete these ``platform_packages`` lines and update the platform integration by issuing the command
66
+
67
+
.. code:: bash
68
+
69
+
pio pkg update -g -p https://github.com/maxgerhardt/platform-raspberrypi.git
70
+
71
+
in the `PlatformIO CLI <https://docs.platformio.org/en/latest/integration/ide/vscode.html#platformio-core-cli>`_. The same can be achieved by using the VSCode PIO Home -> Platforms -> Updates GUI.
72
+
73
+
The toolchain, which was also renamed to ``toolchain-rp2040-earlephilhower`` is downloaded automatically from the registry. The same goes for the ``framework-arduinopico`` toolchain package, which points directly to the Arduino-Pico Github repository.
74
+
However, users can still select a custom fork or branch of the core if desired so, as detailed in a chapter below.
75
+
76
+
As the pull req
56
77
57
78
Selecting the new core
58
79
----------------------
@@ -61,8 +82,8 @@ Prerequisite for using this core is to tell PlatformIO to switch to it.
61
82
There will be board definition files where the Earle-Philhower core will
62
83
be the default since it's a board that only exists in this core (and not
63
84
the other https://github.com/arduino/ArduinoCore-mbed). To switch boards
64
-
for which this is not the default core (e.g. the standard
65
-
``board = pico``), the directive
85
+
for which this is not the default core (which are only
86
+
``board = pico`` and ``board = nanorp2040connect``), the directive
66
87
67
88
.. code:: ini
68
89
@@ -72,6 +93,8 @@ must be added to the ``platformio.ini``. This controls the `core
RTTI (run-time type information) is disabled by default. To enable it, use
205
+
206
+
.. code:: ini
207
+
208
+
; Enable RTTI
209
+
build_flags = -DPIO_FRAMEWORK_ARDUINO_ENABLE_RTTI
210
+
157
211
USB Stack
158
212
---------
159
213
@@ -188,8 +242,8 @@ directive to do so. Simply specify that the framework package
188
242
Whereas the ``#master`` can also be replaced by a ``#branchname`` or a
189
243
``#commithash``. If left out, it will pull the default branch, which is ``master``.
190
244
191
-
The ``file://`` pseudo-protocol can also be used instead of ``https://`` to point to a
192
-
local copy of the core (with e.g. some modifications) on disk.
245
+
The ``file://`` and ``symlink://`` pseudo-protocols can also be used instead of ``https://`` to point to a
246
+
local copy of the core (with e.g. some modifications) on disk (`see documentation <https://docs.platformio.org/en/latest/core/userguide/pkg/cmd_install.html?#local-folder>_`).
193
247
194
248
Note that this can only be done for versions that have the PlatformIO
195
249
builder script it in, so versions before 1.9.2 are not supported.
The initial project structure should be generated just creating a new
218
269
project for the Pico and the Arduino framework, after which the
219
270
auto-generated ``platformio.ini`` can be adapted per above.
271
+
272
+
Debugging
273
+
---------
274
+
275
+
With recent updates to the toolchain and OpenOCD, debugging firmwares is also possible.
276
+
277
+
To specify the debugging adapter, use ``debug_tool`` (`documentation <https://docs.platformio.org/en/latest/projectconf/section_env_debug.html#debug-tool>`_). Supported values are:
278
+
279
+
* ``picoprobe``
280
+
* ``cmsis-dap``
281
+
* ``jlink``
282
+
* ``raspberrypi-swd``
283
+
284
+
These values can also be used in ``upload_protocol`` if you want PlatformIO to upload the regular firmware through this method, which you likely want.
285
+
286
+
Especially the PicoProbe method is convenient when you have two Raspberry Pi Pico boards. One of them can be flashed with the PicoProbe firmware (`documentation <https://www.raspberrypi.com/documentation/microcontrollers/raspberry-pi-pico.html#debugging-using-another-raspberry-pi-pico>`_) and is then connected to the target Raspberry Pi Pico board (see `documentation <https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf>`_ chapter "Picoprobe Wiring"). Remember that on Windows, you have to use `Zadig <https://zadig.akeo.ie/>`_ to also load "WinUSB" drivers for the "Picoprobe (Interface 2)" device so that OpenOCD can speak to it.
287
+
288
+
With that set up, debugging can be started via the left debugging sidebar and works nicely: Setup breakpoints, inspect the value of variables in the code, step through the code line by line. When a breakpoint is hit or execution is halted, you can even see the execution state both Cortex-M0+ cores of the RP2040.
289
+
290
+
.. image:: images/pio_debugging.png
291
+
292
+
For further information on customizing debug options, like the initial breakpoint or debugging / SWD speed, consult `the documentation <https://docs.platformio.org/en/latest/projectconf/section_env_debug.html>`_.
293
+
294
+
Filesystem Uploading
295
+
--------------------
296
+
297
+
For the Arduino IDE, `a plugin <https://github.com/earlephilhower/arduino-pico#uploading-filesystem-images>`_ is available that enables a data folder to be packed as a LittleFS filesystem binary and uploaded to the Pico.
298
+
299
+
This functionality is also built-in in the PlatformIO integration. Open the `project tasks <https://docs.platformio.org/en/latest/integration/ide/vscode.html#project-tasks>`_ and expand the "Platform" tasks:
300
+
301
+
.. image:: images/pio_fs_upload.png
302
+
303
+
The files you want to upload should be placed in a folder called ``data`` inside the project. This can be customized `if needed <https://docs.platformio.org/en/latest/projectconf/section_platformio.html#data-dir>`_.
304
+
305
+
The task "Build Filesystem Image" will take all files in the data directory and create a ``littlefs.bin`` file from it using the ``mklittlefs`` tool.
306
+
307
+
The task "Upload Filesystem Image" will upload the filesystem image to the Pico via the specified ``upload_protocol``.
308
+
309
+
**Note:** Currently only the default ``picotool`` (regular direct USB upload) and the OpenOCD-based debug methods (meaning all but ``jlink``) can transport the filesystem to the Pico.
0 commit comments