new file mode 100644
@@ -0,0 +1 @@
+root=/dev/mmcblk0p2 rootwait console=tty1 console=ttyAMA10,115200
new file mode 100644
@@ -0,0 +1,14 @@
+# Please note that this is only a sample, we recommend you to change it to fit
+# your needs.
+# You should override this file using BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE.
+# See http://buildroot.org/manual.html#rootfs-custom
+# and http://elinux.org/RPiconfig for a description of config.txt syntax
+
+kernel=Image
+
+# To use an external initramfs file
+#initramfs rootfs.cpio.gz
+
+# Disable overscan assuming the display supports displaying the full resolution
+# If the text shown on the screen disappears off the edge, comment this out
+disable_overscan=1
new file mode 100644
@@ -0,0 +1 @@
+CONFIG_ARM64_4K_PAGES=y
@@ -10,6 +10,7 @@ These instructions apply to all models of the Raspberry Pi:
- the model B3 (aka Raspberry Pi 3).
- the model B4 (aka Raspberry Pi 4).
- the model CM4 (aka Raspberry Pi Compute Module 4 and IO Board).
+ - the model B5 (aka Raspberry Pi 5).
How to build it
===============
@@ -64,6 +65,10 @@ or for CM4 (on IO Board - 64 bit):
$ make raspberrypicm4io_64_defconfig
+For model 5 B:
+
+ $ make raspberrypi5_defconfig
+
Build the rootfs
----------------
@@ -94,6 +99,7 @@ After building, you should obtain this tree:
+-- bcm2710-rpi-cm3.dtb [1]
+-- bcm2711-rpi-4-b.dtb [1]
+-- bcm2711-rpi-cm4.dtb [1]
+ +-- bcm2712-rpi-5-b.dtb [1]
+-- bcm2837-rpi-3-b.dtb [1]
+-- boot.vfat
+-- rootfs.ext4
new file mode 120000
@@ -0,0 +1 @@
+raspberrypi
\ No newline at end of file
new file mode 100644
@@ -0,0 +1,47 @@
+BR2_aarch64=y
+BR2_cortex_a76_a55=y
+BR2_ARM_FPU_VFPV4=y
+
+BR2_TOOLCHAIN_BUILDROOT_CXX=y
+
+BR2_SYSTEM_DHCP="eth0"
+
+# Linux headers same as kernel, a 6.1 series
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_1=y
+
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/raspberrypi/linux-4k-page-size.fragment"
+BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
+BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,17f135b742c4edb340afb365873c3a574f7e16cb)/linux-17f135b742c4edb340afb365873c3a574f7e16cb.tar.gz"
+BR2_LINUX_KERNEL_DEFCONFIG="bcm2712"
+
+# Build the DTB from the kernel sources
+BR2_LINUX_KERNEL_DTS_SUPPORT=y
+BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2712-rpi-5-b"
+
+BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
+
+BR2_PACKAGE_RPI_FIRMWARE=y
+BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi5/config_5.txt"
+BR2_PACKAGE_RPI_FIRMWARE_CMDLINE_FILE="board/raspberrypi5/cmdline_5.txt"
+# BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set
+
+# Required tools to create the SD image
+BR2_PACKAGE_HOST_DOSFSTOOLS=y
+BR2_PACKAGE_HOST_GENIMAGE=y
+BR2_PACKAGE_HOST_MTOOLS=y
+
+# Filesystem / image
+BR2_TARGET_ROOTFS_EXT2=y
+BR2_TARGET_ROOTFS_EXT2_4=y
+BR2_TARGET_ROOTFS_EXT2_SIZE="120M"
+# BR2_TARGET_ROOTFS_TAR is not set
+BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi5/post-build.sh"
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi5/post-image.sh"
+
+# Enable compressed kernel module support
+BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
+BR2_PACKAGE_KMOD_TOOLS=y
+BR2_PACKAGE_XZ=y
+BR2_PACKAGE_KMOD=y
+BR2_PACKAGE_HOST_KMOD_XZ=y
This configuration builds an image for the RaspberryPi 5. Cc: Adam Duskett <adam.duskett@amarulasolutions.com> Cc: Yann E. MORIN <yann.morin.1998@free.fr> Signed-off-by: Gaël PORTAY <gael.portay@rtone.fr> --- Dear maintainers, That change adds the raspberrypi5_defconfig for the Raspberry Pi 5 64-bit. It uses the defconfig bcm2712_defconfig[2] and the device-tree source bcm2712-rpi-5-b.dts[3]. Note: The kernel defconfig defaults to 16k page-size; a kernel fragment is added to use a 4k page-size to compile and run using all toolchains. The Raspberry Pi 5 has now a dedicated debug UART connector[4] (it is always active and enabled; there is no more need to enable_uart=1 in the file config.txt). The UART device name changes to ttyAMA10 and the command line has to be updated in the file cmdline.txt. The Raspberry Pi 5 only supports 64-bit kernel[5]. Tested on internal toolchain: [ 0.000000] Linux version 6.1.61-v8_16k (gportay@archlinux) (aarch64-buildroot-linux-gnu-gcc.br_real (Buildroot 2023.11-1117-g95a905918c) 12.3.0, GNU ld (GNU Binutils) 2.40) #1 SMP PREEMPT Fri Feb 9 20:09:08 CET 2024 (...) # grep PageSize /proc/1/smaps | sort -u KernelPageSize: 4 kB MMUPageSize: 4 kB Tested on external Bootlin toolchain: [ 0.000000] Linux version 6.1.61-v8_16k (gportay@archlinux) (aarch64-linux-gcc.br_real (Buildroot 2021.11-10014-g6257e8c) 13.2.0, GNU ld (GNU Binutils) 2.41) #1 SMP PREEMPT Fri Feb 9 20:54:08 CET 2024 (...) # grep PageSize /proc/1/smaps | sort -u KernelPageSize: 4 kB MMUPageSize: 4 kB Tested on external ARM toolchain: [ 0.000000] Linux version 6.1.61-v8_16k (gportay@archlinux) (aarch64-none-linux-gnu-gcc (Arm GNU Toolchain 13.2.rel1 (Build arm-13.7)) 13.2.1 20231009, GNU ld (Arm GNU Toolchain 13.2.rel1 (Build arm-13.7)) 2.41.0.20231009) #1 SMP PREEMPT Fri Feb 9 21:00:24 CET 2024 (...) # grep PageSize /proc/1/smaps | sort -u KernelPageSize: 4 kB MMUPageSize: 4 kB Changes since RFC: - Update README to add model Pi 5 B - Add support for 64K MMU page-size for ARM64 and Raspberry Pi 5 - Add Raspberry Pi 5 specific cmdline_5.txt to set its console on its debug uart (ttyAMA10 instead of ttyAMA0) - Remove 32-bit variant since Raspberry Pi 5 supports booting a 64-bit kernel only - Remove the property arm_64bit=1 from config_5_64bit.txt - Remove the _64bit suffix - Remove unecessary Pi 5 variant from package rpi-firmware Changes since v1: - Rebase on top of master - Remove the bumps for the rpi-firmware and linux packages - Bump the kernel to linux-17f135b742c4edb340afb365873c3a574f7e16cb (6.1.61, i.e. the same version as the other raspberrypi defconfigs) Changes since v2: - Rebase on top of master (remove applied patch) - Add a kernel fragment to force 4k page-size - Remove BR2_ARM64_PAGE_SIZE_16K from the board's defconfig [0]: https://www.raspberrypi.com/documentation/computers/raspberry-pi-5.html#introduction [1]: https://www.raspberrypi.com/documentation/computers/config_txt.html#kernel [2]: https://github.com/raspberrypi/linux/commit/9cfb379147f803b0362b0fe249e5b145d232bea3 [3]: https://github.com/raspberrypi/linux/commit/1196bf1a7736ff0ab79f5012fa84082e298031a7 [4]: https://www.raspberrypi.com/documentation/computers/raspberry-pi-5.html#uart-connector [5]: https://www.raspberrypi.com/documentation/computers/config_txt.html#arm_64bit Kind Regards, Gaël PORTAY board/raspberrypi/cmdline_5.txt | 1 + board/raspberrypi/config_5.txt | 14 ++++++ board/raspberrypi/linux-4k-page-size.fragment | 1 + board/raspberrypi/readme.txt | 6 +++ board/raspberrypi5 | 1 + configs/raspberrypi5_defconfig | 47 +++++++++++++++++++ 6 files changed, 70 insertions(+) create mode 100644 board/raspberrypi/cmdline_5.txt create mode 100644 board/raspberrypi/config_5.txt create mode 100644 board/raspberrypi/linux-4k-page-size.fragment create mode 120000 board/raspberrypi5 create mode 100644 configs/raspberrypi5_defconfig -- 2.43.0