blob: 0546f724b33e80ae6fa2ca5678212d9dc78552bb [file] [log] [blame]
.. _target-raspberry-pi-pico:
Raspberry Pi Pico
.. warning::
This target is in an early state and is under active development. Usability
is not very polished, and many features/configuration options that work in
upstream Pi Pico CMake build have not yet been ported to the GN build.
To use this target, Pigweed must be set up to build against the Raspberry Pi
Pico SDK. This can be downloaded via ``pw package``, and then the build must be
manually configured to point to the location of the downloaded SDK.
.. code:: sh
pw package install pico_sdk
gn args out
# Add these lines, replacing ${PW_ROOT} with the path to the location that
# Pigweed is checked out at.
PICO_SRC_DIR = "${PW_ROOT}/.environment/packages/pico_sdk"
The Pi Pico is currently configured to output logs and test results over UART
via GPIO 1 and 2 (TX and RX, respectively) at a baud rate of 115200. Because
of this, you'll need a USB TTL adapter to communicate with the Pi Pico.
Once the pico SDK is configured, the Pi Pico will build as part of the default
GN build:
.. code:: sh
ninja -C out
Pigweed's build will produce ELF files for each unit test built for the Pi Pico.
While ELF files can be flashed to a Pi Pico via SWD, it's slightly easier to
use the Pi Pico's bootloader to flash the firmware as a UF2 file.
Pigweed currently does not yet build/provide the elf2uf2 utility used to convert
ELF files to UF2 files. This tool can be built from within the Pi Pico SDK with
the following command:
.. code:: sh
mkdir build && cd build && cmake -G Ninja ../ && ninja
# Copy the tool so it's visible in your PATH.
cp elf2uf2/elf2uf2 $HOME/bin/elf2uf2
Flashing the Pi Pico is as easy as 1-2-3:
#. Create a UF2 file from an ELF file using ``elf2uf2``.
#. While holding the button on the Pi Pico, connect the Pico to your computer
via the micro USB port.
#. Copy the UF2 to the RPI-RP2 volume that enumerated when you connected the