RP2350: adding complete bsp support#129
Open
PThierry wants to merge 12 commits into
Open
Conversation
There was a problem hiding this comment.
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_defconfigfor 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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.