Reorganize for easy reference from other boards.
- Reorganized PIO documentation, creating a dedicated
"PIO Based Features" section
- Updated "Debug Probe and Host Tools" to list supported
debug interfaces.
- Simplified and standardized flashing and debugging instructions.
- Removed redundant J-Link debugging commands in favor of `west debug`
usage.
- Ensured consistent use of OpenOCD and UF2 flashing descriptions.
- Added `:ref:` links for key components such as RP2040 SoC and
Infineon CYW43439.
Signed-off-by: TOKITA Hiroshi <tokita.hiroshi@gmail.com>
The RP2040 SoC comes with two PIO periherals. These are two simple
The RP2040 SoC comes with two PIO peripherals. These are two simple
co-processors that are designed for I/O operations. The PIOs run
a custom instruction set, generated from a custom assembly language.
PIO programs are assembled using :command:`pioasm`, a tool provided by Raspberry Pi.
@ -152,9 +151,36 @@ combination of GPIO pins for an SPI bus, as well as allowing up to
@@ -152,9 +151,36 @@ combination of GPIO pins for an SPI bus, as well as allowing up to
four independent SPI buses on a single board (using the two SPI
devices as well as both PIO devices).
.._rpi_pico_pio_based_features:
PIO Based Features
==================
Raspberry Pi Pico's PIO is a programmable chip that can implement a variety of peripherals.
..list-table::
:header-rows:1
* - Peripheral
- Kconfig option
- Devicetree compatible
* - UART (PIO)
- :kconfig:option:`CONFIG_SERIAL`
- :dtcompatible:`raspberrypi,pico-uart-pio`
* - SPI (PIO)
- :kconfig:option:`CONFIG_SPI`
- :dtcompatible:`raspberrypi,pico-spi-pio`
* - WS2812 (PIO)
- :kconfig:option:`CONFIG_LED_STRIP`
- :dtcompatible:`worldsemi,ws2812-rpi_pico-pio`
Programming and Debugging
*************************
Applications for the ``rpi_pico`` board configuration can be built and
flashed in the usual way (see :ref:`build_an_application` and
:ref:`application_run` for more details).
System requirements
===================
@ -172,14 +198,32 @@ provided by Infineon. Run the command below to retrieve those files:
@@ -172,14 +198,32 @@ provided by Infineon. Run the command below to retrieve those files:
It is recommended running the command above after :file:`west update`.
Debug Probe and Host Tools
--------------------------
Several debugging tools support the Raspberry Pi Pico.
The `Raspberry Pi Debug Probe`_ is an easy-to-obtain CMSIS-DAP adapter
officially provided by the Raspberry Pi Foundation,
making it a convenient choice for debugging ``rpi_pico``.
It can be used with
- :ref:`openocd-debug-host-tools`
- :ref:`pyocd-debug-host-tools`
OpenOCD is the default for ``rpi_pico``.
- `SEGGER J-Link`_
- `Black Magic Debug Probe <Black Magic Debug>`_
can also be used.
These are used with dedicated probes.
Flashing
========
Using SEGGER JLink
------------------
You can Flash the rpi_pico with a SEGGER JLink debug probe as described in
:ref:`Building, Flashing and Debugging <west-flashing>`.
The ``rpi_pico`` can flash with Zephyr's standard method.
See also :ref:`Building, Flashing and Debugging<west-flashing>`.
Here is an example of building and flashing the :zephyr:code-sample:`blinky` application.
@ -188,51 +232,42 @@ Here is an example of building and flashing the :zephyr:code-sample:`blinky` app
@@ -188,51 +232,42 @@ Here is an example of building and flashing the :zephyr:code-sample:`blinky` app
:board:rpi_pico
:goals:build
..code-block::bash
..code-block::console
west flash --runner jlink
Using OpenOCD
-------------
To use CMSIS-DAP, You must configure **udev**.
.._rpi_pico_flashing_using_openocd:
Create a file in /etc/udev.rules.d with any name, and write the line below.
Set the environment variables **OPENOCD** to :file:`/usr/local/bin/openocd`
and **OPENOCD_DEFAULT_PATH** to :file:`/usr/local/share/openocd/scripts`. This should work
Set the CMake option **OPENOCD** to :file:`/usr/local/bin/openocd`. This should work
with the OpenOCD that was installed with the default configuration.
This configuration also works with an environment that is set up by the `pico_setup.sh`_ script.
**RPI_PICO_DEBUG_ADAPTER** specifies what debug adapter is used for debugging.
If **RPI_PICO_DEBUG_ADAPTER** was not assigned, ``cmsis-dap`` is used by default.
The other supported adapters are ``raspberrypi-swd``, ``jlink`` and ``blackmagicprobe``.
If **RPI_PICO_DEBUG_ADAPTER** was not set, ``cmsis-dap`` is used by default.
The ``raspberrypi-swd`` and ``jlink`` are verified to work.
How to connect ``cmsis-dap`` and ``raspberrypi-swd`` is described in `Getting Started with Raspberry Pi Pico`_.
Any other SWD debug adapter maybe also work with this configuration.
@ -243,12 +278,7 @@ The value of **RPI_PICO_DEBUG_ADAPTER** is cached, so it can be omitted from
@@ -243,12 +278,7 @@ The value of **RPI_PICO_DEBUG_ADAPTER** is cached, so it can be omitted from
**RPI_PICO_DEBUG_ADAPTER** is used in an argument to OpenOCD as ``"source [find interface/${RPI_PICO_DEBUG_ADAPTER}.cfg]"``.
Thus, **RPI_PICO_DEBUG_ADAPTER** needs to be assigned the file name of the debug adapter.
You can also flash the board with the following
command that directly calls OpenOCD (assuming a SEGGER JLink adapter is used):
@ -262,59 +292,48 @@ UF2 file should be drag-and-dropped to the device, which will flash the Pico.
@@ -262,59 +292,48 @@ UF2 file should be drag-and-dropped to the device, which will flash the Pico.
Debugging
=========
The SWD interface can also be used to debug the board. To achieve this, you can
either use SEGGER JLink or OpenOCD.
Using SEGGER JLink
------------------
Use a SEGGER JLink debug probe and follow the instruction in
:ref:`Building, Flashing and Debugging<west-debugging>`.
Using OpenOCD
-------------
Install OpenOCD as described for flashing the board.
Here is an example for debugging the :zephyr:code-sample:`blinky` application.
Like flashing, debugging can also be performed using Zephyr's standard method
(see :ref:`application_run`).
The following sample demonstrates how to debug using OpenOCD and