Skip to content

RP2350: adding complete bsp support#129

Open
PThierry wants to merge 12 commits into
camelot-os:mainfrom
PThierry:support-rp2350
Open

RP2350: adding complete bsp support#129
PThierry wants to merge 12 commits into
camelot-os:mainfrom
PThierry:support-rp2350

Conversation

@PThierry

@PThierry PThierry commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

This PR add the full support for rp2350 Raspberry Pi SoC used in Pico2W.
The goal is to validate the complete boot of Sentry-kernel on this board, in ARM mode by now (RISC-V support will be added later).
The boot is still kept single-core mode by now.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds initial BSP bring-up for the Raspberry Pi RP2350 (Pico 2 W), targeting single-core ARM boot, by introducing RP2350-specific drivers, DT templates, and build/Kconfig integration needed to validate early kernel boot and debug output.

Changes:

  • Add RP2350 BSP drivers (USART debug TX, RCC/PWR, GPIO/pinctrl, DMA, sysinfo, plus stubs for other subsystems).
  • Add RP2350 Kconfig/arch integration (SOC selection, buses header, static IRQ list) and Meson wiring for new driver subdirs/templates.
  • Add RP2350 DTS example(s) and a rpi_pico2w_defconfig for building/running on Pico 2 W.

Reviewed changes

Copilot reviewed 52 out of 55 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
kernel/src/managers/memory/memory_shm-dt.h.in Adjusts DTS iteration for SHM list size generation.
kernel/src/managers/memory/memory_shm-dt.c.in Adjusts DTS iteration for SHM metadata table generation.
kernel/src/drivers/usart/rp2350/rp2350-usart.c Adds RP2350 UART debug TX driver.
kernel/src/drivers/usart/rp2350/rp2350-usart-dt.h.in Adds RP2350 UART DT-generated descriptor header template.
kernel/src/drivers/usart/rp2350/rp2350-usart-dt.c.in Adds RP2350 UART DT-generated descriptor source template.
kernel/src/drivers/usart/rp2350/meson.build Hooks RP2350 USART DT generation + driver into build.
kernel/src/drivers/usart/meson.build Selects USART subdir per SoC (adds RP2350).
kernel/src/drivers/sysinfo/sysinfo.h Adds vendor-derived SYSINFO register header (in src tree).
kernel/src/drivers/sysinfo/sysinfo.c Adds SYSINFO driver to read chip id/revision.
kernel/src/drivers/sysinfo/meson.build Builds sysinfo driver when RP2350 is selected.
kernel/src/drivers/syscfg/rp2350/rp2350-syscfg.c Adds RP2350 SYSCFG stub implementation.
kernel/src/drivers/syscfg/rp2350/meson.build Hooks RP2350 syscfg stub into build.
kernel/src/drivers/syscfg/meson.build Adds RP2350 syscfg subdir selection.
kernel/src/drivers/smp/rp2350/rp2350-cpuid.c Adds RP2350 SMP cpuid stub (single-core behavior).
kernel/src/drivers/smp/rp2350/meson.build Hooks RP2350 smp stub into build.
kernel/src/drivers/smp/meson.build Adds RP2350 smp subdir selection.
kernel/src/drivers/rng/rp2350/rp2350-rng.c Adds RP2350 RNG stub implementation.
kernel/src/drivers/rng/rp2350/meson.build Hooks RP2350 rng stub into build.
kernel/src/drivers/rng/meson.build Adds RP2350 rng subdir selection.
kernel/src/drivers/meson.build Adjusts driver subdir gating and adds sysinfo subdir.
kernel/src/drivers/gpio/rp2350/rp2350-pinctrl.c Adds RP2350 pinctrl configuration helper.
kernel/src/drivers/gpio/rp2350/rp2350-gpio.c Adds RP2350 GPIO driver implementation.
kernel/src/drivers/gpio/rp2350/meson.build Hooks RP2350 GPIO sources into build.
kernel/src/drivers/gpio/meson.build Selects GPIO subdir per SoC (adds RP2350).
kernel/src/drivers/flash/rp2350/rp2350-flash.c Adds RP2350 flash stub probe.
kernel/src/drivers/flash/rp2350/meson.build Hooks RP2350 flash stub into build.
kernel/src/drivers/flash/meson.build Selects flash subdir per SoC (adds RP2350).
kernel/src/drivers/exti/rp2350/rp2350-exti.c Adds RP2350 EXTI stub implementation.
kernel/src/drivers/exti/rp2350/meson.build Hooks RP2350 exti stub into build.
kernel/src/drivers/exti/meson.build Adds RP2350 exti subdir selection.
kernel/src/drivers/dma/st/stm32u5-gpdma.c Adds STM32U5 GPDMA driver implementation.
kernel/src/drivers/dma/st/stm32-gpdma-dt.h.in Adds STM32U5 GPDMA DT-generated descriptor header template.
kernel/src/drivers/dma/st/stm32-gpdma-dt.c.in Adds STM32U5 GPDMA DT-generated descriptor source template.
kernel/src/drivers/dma/st/meson.build Hooks STM32U5 GPDMA DT generation + driver into build.
kernel/src/drivers/dma/rp2350/rp2350-gpdma.c Adds RP2350 DMA driver implementation.
kernel/src/drivers/dma/rp2350/rp2350-gpdma-dt.h.in Adds RP2350 DMA DT-generated descriptor header template.
kernel/src/drivers/dma/rp2350/rp2350-gpdma-dt.c.in Adds RP2350 DMA DT-generated descriptor source template.
kernel/src/drivers/dma/rp2350/meson.build Hooks RP2350 DMA DT generation + driver into build.
kernel/src/drivers/dma/meson.build Refactors DMA build selection into SoC-specific subdirs.
kernel/src/drivers/clk/rp2350/rp2350-rcc.c Adds RP2350 reset/clock (RCC-like) driver.
kernel/src/drivers/clk/rp2350/rp2350-rcc-dt.h.in Adds RP2350 RCC DT-generated header template (core clock define + desc).
kernel/src/drivers/clk/rp2350/rp2350-rcc-dt.c.in Adds RP2350 RCC DT-generated descriptor source template.
kernel/src/drivers/clk/rp2350/rp2350-pwr.c Adds RP2350 PWR stub implementation.
kernel/src/drivers/clk/rp2350/meson.build Hooks RP2350 clock DT generation + RCC/PWR into build.
kernel/src/drivers/clk/meson.build Selects clock subdir per SoC (adds RP2350).
kernel/src/arch/asm-cortex-m/Kconfig Adds RP2/RP2350 SoC family/subfamily selections.
kernel/include/sentry/arch/asm-cortex-m/rp2350/irq_defs.h.in Adds static RP2350 IRQ definitions.
kernel/include/sentry/arch/asm-cortex-m/rp2350-buses.h.in Adds minimal RP2350 bus definitions for RCC API compatibility.
kernel/include/sentry/arch/asm-cortex-m/meson.build Switches IRQ defs generation to static RP2350 list when selected; adds RP2350 buses template.
kernel/include/bsp/drivers/sysinfo/sysinfo.h Adds BSP-level SYSINFO public API header.
kernel/include/bsp/drivers/meson.build Installs sysinfo BSP header for RP2350 builds.
dts/meson.build Adds RP2350 board DTS example to install list.
dts/examples/rpi_pico2w.dts Adds Pico 2 W (RP2350) DTS example.
dts/examples/rpi_pico2w_debug.dts Updates Pico 2 W debug DTS to define debug stdout + enable UART.
configs/rpi_pico2w_defconfig Adds RP2350 defconfig for standalone single-core boot.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

{% set ns = namespace() -%}
{% set ns.total_shm=0 -%}
{% for node in dts.get_mappable() -%}
{% for node in dts.get_compatible("sentry,memory-pool") -%}
{% set ns.total_shm=0 -%}
static const shm_meta_t shms[] = {
{% for node in dts.get_mappable() -%}
{% for node in dts.get_compatible("sentry,memory-pool") -%}
bool
select LITTLE_ENDIAN
select HAS_FPU
select HAS_FPU_VFPV4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants