RP2350 is Raspberry Pi's newest SoC. From the datasheet: "RP2350 is a new family of microcontrollers from Raspberry Pi that offers significant enhancements over RP2040. Key features include: • Dual Cortex-M33 or Hazard3 processors at 150 MHz • 520 kB on-chip SRAM, in 10 independent banks • 8 kB of one-time-programmable storage (OTP) • Up to 16 MB of external QSPI flash/PSRAM via dedicated QSPI bus ... " This commit introduces some changes to support the existing RP2040 and what is describe by Raspberry Pi as the "RP2350 family". Currently there are 4 published products in the family: RP2350A, RP2350B, RP2354A, and RP2354A. Within Zephyr's taxonomy, split the configuration as follows: Family: Raspberry Pi Pico. This contains all RP2XXX SoCs, SoC Series: RP2040 and RP2350. SoC: RP2040 and, for now, just the RP2350A, which is present on the Pico 2, where the A suffix indicates QFN-60 package type. This structure is reflected in `soc/raspberrypi/soc.yml`, and somewhat assumes that there won't be a RP2050, for example, as a RP2040 with more RAM. This is foundation work ahead of introducing support for Raspberry Pi's Pico 2 board, which is fitted with a RP2350A and 4MB of flash. Signed-off-by: Andrew Featherstone <andrew.featherstone@gmail.com> Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
36 lines
854 B
C
36 lines
854 B
C
/*
|
|
* Copyright (c) 2021 Nordic Semiconductor ASA
|
|
* Copyright (c) 2021 Yonatan Schachter
|
|
* Copyright (c) 2024 Andrew Featherstone
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
/**
|
|
* @file
|
|
* @brief System/hardware module for Raspberry Pi RP2xxx family of processors
|
|
*
|
|
* This module provides routines to initialize and support board-level hardware
|
|
* for the Raspberry Pi RP2xxx family of processors (RP2040, RP235x).
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <zephyr/fatal.h>
|
|
#include <zephyr/logging/log.h>
|
|
|
|
LOG_MODULE_REGISTER(soc, CONFIG_SOC_LOG_LEVEL);
|
|
|
|
/*
|
|
* Some pico-sdk drivers call panic on fatal error.
|
|
* This alternative implementation of panic handles the panic
|
|
* through Zephyr.
|
|
*/
|
|
void __attribute__((noreturn)) panic(const char *fmt, ...)
|
|
{
|
|
va_list args;
|
|
|
|
va_start(args, fmt);
|
|
vprintf(fmt, args);
|
|
k_fatal_halt(K_ERR_CPU_EXCEPTION);
|
|
}
|