Hi Peter, > > Hi Bhargav, > > > This series adds initial U-Boot support for the Raspberry Pi Pico 2 board > > and its RP2350 SoC, only the dual-core Cortex-M33 support is added. > > It would be useful to give a bigger overview of *why* this is > happening? Is it used to boot Linux, some other OS? How can I test the > wider ecosystem that this functionality provides? >
In this hardware booting Linux would be close to impossible without making hardware changes. I was thinking maybe booting RTOSs from here, maybe freertos or zephyr. I took this initially as PoC for porting U-Boot to a NO MMU environment using a modern hardware. I will share some workflow for the above in v2 but that might be while before I port/write drivers for some of the devices eg, timer , watchdog. > > Sent as an RFC to get feedback on the overall approach before polishing > > further. > > > > Status as of this RFC: > > > > - UART1 console works; UART0 is not usable yet. Need to investigate. > > - Boot-tested on both Pico 2 and Pico 2 W boards. > > - `make sandbox_defconfig` passes with patches applied. > > - This series selects CPU_V7M for RP2350. RP2350's Cortex-M33 core is > > Armv8-M since there is no CPU_V8M support in U-Boot yet. Is CPU_V7M > > acceptable as a starting point with CPU_V8M as a later follow-up? > > - RP2350 has no device tree in mainline Linux yet, so patch 2 > > hand-writes rp2350.dtsi / rp2350-pico2.dts locally, and > > rpi_pico2_defconfig uses CONFIG_OF_EMBED rather than > > CONFIG_OF_UPSTREAM. > > Has it been sent to a list upstream for review? Is there a timeline > for that to happen? > No, it hasn't been sent. Also since it is almost impossible to boot linux here, shall I send it ? > > - board/raspberrypi/pico2/ is added alongside the existing, unrelated > > BCM283x Raspberry Pi boards under board/raspberrypi/. Is this > > directory placement acceptable given the SoC is unrelated, or should > > it live elsewhere? > > It doesn't matter the relationship between SoCs, they're related > because of the vendor. EG toradex is a board vendor that uses SoCs > from a number of vendors. > Thanks for the clarifications. > > - Some functions and structures such as `struct rp2350_clocks_regs` is > > defined but not yet used. > > - misc_init_r() sets a fixed value for the "serial#" environment > > variable. This runs after relocation, so a successful env_set() here > > confirms env works post-relocation. > > > > Flashing procedure used for testing: > > > > picotool uf2 convert u-boot.bin u-boot.uf2 --family rp2350-arm-s > > --offset 0x10000000 > > picotool load u-boot.uf2 -v -x > > > > Bootlog: > > > > U-Boot 2026.04-rc3-00070-gbabf6d42fec7-dirty (Jun 23 2026 - 01:55:20 > > +0530) > > > > CPU: Raspberry Pi RP2350 > > Model: Raspberry Pi Pico 2 > > DRAM: 520 KiB > > Core: 5 devices, 5 uclasses, devicetree: embed > > MMC: > > Loading Environment from nowhere... OK > > In: serial@40078000 > > Out: serial@40078000 > > Err: serial@40078000 > > RP2350> > > > > Bhargav Das (3): > > arm: Add RP2350 architecture support > > arm: dts: Add RP2350 device tree > > board: raspberrypi: Add Pico 2 support > > > > arch/arm/Kconfig | 7 + > > arch/arm/Makefile | 2 + > > arch/arm/dts/Makefile | 1 + > > arch/arm/dts/rp2350-pico2.dts | 30 +++ > > arch/arm/dts/rp2350.dtsi | 32 +++ > > arch/arm/include/asm/arch-rp2xxx/rp2350.h | 307 ++++++++++++++++++++++ > > arch/arm/mach-rp2xxx/Kconfig | 58 ++++ > > arch/arm/mach-rp2xxx/Makefile | 4 + > > arch/arm/mach-rp2xxx/image_def.S | 23 ++ > > arch/arm/mach-rp2xxx/rp2350.c | 261 ++++++++++++++++++ > > arch/arm/mach-rp2xxx/u-boot.lds | 94 +++++++ > > board/raspberrypi/pico2/Kconfig | 15 ++ > > board/raspberrypi/pico2/MAINTAINERS | 9 + > > board/raspberrypi/pico2/Makefile | 3 + > > board/raspberrypi/pico2/pico2.c | 83 ++++++ > > configs/rpi_pico2_defconfig | 29 ++ > > include/configs/rpi_pico2.h | 48 ++++ > > 17 files changed, 1006 insertions(+) > > create mode 100644 arch/arm/dts/rp2350-pico2.dts > > create mode 100644 arch/arm/dts/rp2350.dtsi > > create mode 100644 arch/arm/include/asm/arch-rp2xxx/rp2350.h > > create mode 100644 arch/arm/mach-rp2xxx/Kconfig > > create mode 100644 arch/arm/mach-rp2xxx/Makefile > > create mode 100644 arch/arm/mach-rp2xxx/image_def.S > > create mode 100644 arch/arm/mach-rp2xxx/rp2350.c > > create mode 100644 arch/arm/mach-rp2xxx/u-boot.lds > > create mode 100644 board/raspberrypi/pico2/Kconfig > > create mode 100644 board/raspberrypi/pico2/MAINTAINERS > > create mode 100644 board/raspberrypi/pico2/Makefile > > create mode 100644 board/raspberrypi/pico2/pico2.c > > create mode 100644 configs/rpi_pico2_defconfig > > create mode 100644 include/configs/rpi_pico2.h > > > > -- > > 2.43.0 > >
