Re: [RFC PATCH 0/3] Add initial Raspberry Pi Pico 2 / RP2350 support

Bhargav Das <[email protected]>
Newsgroups gmane.comp.boot-loaders.u-boot
Message-ID <CAPEHo3JH-xC6D4duTYzn2hVtvJU_6DWa83fG4z05YQ5ONZC_qw@mail.gmail.com>
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
> >
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.