diff --git a/boards/raspberrypi/rpi_5/Kconfig.rpi_5 b/boards/raspberrypi/rpi_5/Kconfig.rpi_5 new file mode 100644 index 0000000000..8f06aba947 --- /dev/null +++ b/boards/raspberrypi/rpi_5/Kconfig.rpi_5 @@ -0,0 +1,5 @@ +# Copyright 2024 Junho Lee +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_RPI_5 + select SOC_BCM2712 diff --git a/boards/raspberrypi/rpi_5/board.yml b/boards/raspberrypi/rpi_5/board.yml new file mode 100644 index 0000000000..d604b7f4e5 --- /dev/null +++ b/boards/raspberrypi/rpi_5/board.yml @@ -0,0 +1,5 @@ +board: + name: rpi_5 + vendor: raspberrypi + socs: + - name: bcm2712 diff --git a/boards/raspberrypi/rpi_5/doc/index.rst b/boards/raspberrypi/rpi_5/doc/index.rst new file mode 100644 index 0000000000..65989d6bf7 --- /dev/null +++ b/boards/raspberrypi/rpi_5/doc/index.rst @@ -0,0 +1,101 @@ +.. rpi_5: + +Raspberry Pi 5 (Cortex-A76) +########################### + +Overview +******** + +`Raspberry Pi 5 product-brief`_ + +Hardware +******** + +- Broadcom BCM2712 2.4GHz quad-core 64-bit Arm Cortex-A76 CPU, with cryptography extensions, 512KB per-core L2 caches and a 2MB shared L3 cache +- VideoCore VII GPU, supporting OpenGL ES 3.1, Vulkan 1.2 +- Dual 4Kp60 HDMI® display output with HDR support +- 4Kp60 HEVC decoder +- LPDDR4X-4267 SDRAM (4GB and 8GB SKUs available at launch) +- Dual-band 802.11ac Wi-Fi® +- Bluetooth 5.0 / Bluetooth Low Energy (BLE) +- microSD card slot, with support for high-speed SDR104 mode +- 2 x USB 3.0 ports, supporting simultaneous 5Gbps operation +- 2 x USB 2.0 ports +- Gigabit Ethernet, with PoE+ support (requires separate PoE+ HAT) +- 2 x 4-lane MIPI camera/display transceivers +- PCIe 2.0 x1 interface for fast peripherals (requires separate M.2 HAT or other adapter) +- 5V/5A DC power via USB-C, with Power Delivery support +- Raspberry Pi standard 40-pin header +- Real-time clock (RTC), powered from external battery +- Power button + +Supported Features +================== + +The Raspberry Pi 5 board configuration supports the following hardware features: + +.. list-table:: + :header-rows: 1 + + * - Peripheral + - Kconfig option + - Devicetree compatible + * - GIC-400 + - N/A + - :dtcompatible:`arm,gic-v2` + * - GPIO + - :kconfig:option:`CONFIG_GPIO` + - :dtcompatible:`brcm,brcmstb-gpio` + +Not all hardware features are supported yet. See `Raspberry Pi hardware`_ for the complete list of hardware features. + +The default configuration can be found in +:zephyr_file:`boards/raspberrypi/rpi_5/rpi_5_defconfig`. + +Programming and Debugging +************************* + +Blinky +====== + +In brief, + 1. Format your Micro SD card with MBR and FAT32. + 2. Save three files below in the root directory. + * config.txt + * zephyr.bin + * `bcm2712-rpi-5.dtb`_ + 3. Insert the Micro SD card and power on the Raspberry Pi 5. + +then, You will see the Raspberry Pi 5 running the `zephyr.bin`. + +config.txt +---------- + +.. code-block:: text + + kernel=zephyr.bin + arm_64bit=1 + + +zephyr.bin +---------- + +Build an app `samples/basic/blinky` + +.. zephyr-app-commands:: + :zephyr-app: samples/basic/blinky + :board: rpi_5 + :goals: build + +Copy `zephyr.bin` from `build/zephyr` directory to the root directory of the Micro SD card. + +Insert the Micro SD card and power on the Raspberry Pi 5. And then, the STAT LED will start to blink. + +.. _Raspberry Pi 5 product-brief: + https://datasheets.raspberrypi.com/rpi5/raspberry-pi-5-product-brief.pdf + +.. _Raspberry Pi hardware: + https://www.raspberrypi.com/documentation/computers/raspberry-pi.html + +.. _bcm2712-rpi-5.dtb: + https://github.com/raspberrypi/firmware/raw/master/boot/bcm2712-rpi-5-b.dtb diff --git a/boards/raspberrypi/rpi_5/rpi_5.dts b/boards/raspberrypi/rpi_5/rpi_5.dts new file mode 100644 index 0000000000..9033f91f9e --- /dev/null +++ b/boards/raspberrypi/rpi_5/rpi_5.dts @@ -0,0 +1,38 @@ +/* + * Copyright 2024 Junho Lee + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; + +#include +#include + +/ { + compatible = "raspberrypi,5-model-b", "brcm,bcm2712"; + model = "Raspberry Pi 5"; + #address-cells = <2>; + #size-cells = <1>; + + aliases { + led0 = &led_act; + }; + + chosen { + zephyr,sram = &sram0; + }; + + leds { + compatible = "gpio-leds"; + + led_act: led-act { + gpios = <&gio_aon 9 GPIO_ACTIVE_LOW>; + label = "ACT"; + }; + }; +}; + +&gio_aon { + status = "okay"; +}; diff --git a/boards/raspberrypi/rpi_5/rpi_5.yaml b/boards/raspberrypi/rpi_5/rpi_5.yaml new file mode 100644 index 0000000000..e293d78e9c --- /dev/null +++ b/boards/raspberrypi/rpi_5/rpi_5.yaml @@ -0,0 +1,7 @@ +identifier: rpi_5 +name: Raspberry Pi 5 +type: mcu +arch: arm64 +toolchain: + - zephyr + - cross-compile diff --git a/boards/raspberrypi/rpi_5/rpi_5_defconfig b/boards/raspberrypi/rpi_5/rpi_5_defconfig new file mode 100644 index 0000000000..0ecf409b6f --- /dev/null +++ b/boards/raspberrypi/rpi_5/rpi_5_defconfig @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_ARM64_VA_BITS_40=y +CONFIG_ARM64_PA_BITS_40=y +CONFIG_TIMER_READS_ITS_FREQUENCY_AT_RUNTIME=y