From fd5628e5dc7d8fb38aa8939421f4bf8ae8530dff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20PORTAY?= Date: Tue, 20 May 2025 17:59:46 +0200 Subject: [PATCH] configs/raspberrypicm5io: new defconfig MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This configuration builds an image for the Compute Module 5 IO Board. Note: Unlike the Raspberry Pi 5 and its dedicated debug uart connector, the kernel console on Compute Module 5 IO Board is back to UART0 (ttyAMA0) on PIN8 (GPIO14, TX, yellow) and PIN10 (GPIO15, RX, orange) on the 40-pin header, as the former version of the Raspberry Pi. Signed-off-by: Gaƫl PORTAY Signed-off-by: Julien Olivain --- board/raspberrypi/config_cm5io.txt | 24 +++++++++++++++++++ board/raspberrypi/readme.txt | 37 ++++++++++++++++++++++++++++++ board/raspberrypicm5io | 1 + configs/raspberrypicm5io_defconfig | 35 ++++++++++++++++++++++++++++ 4 files changed, 97 insertions(+) create mode 100644 board/raspberrypi/config_cm5io.txt create mode 120000 board/raspberrypicm5io create mode 100644 configs/raspberrypicm5io_defconfig diff --git a/board/raspberrypi/config_cm5io.txt b/board/raspberrypi/config_cm5io.txt new file mode 100644 index 0000000000..b66efef661 --- /dev/null +++ b/board/raspberrypi/config_cm5io.txt @@ -0,0 +1,24 @@ +# 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 + +# enable RTC +dtparam=i2c_vc=on +dtoverlay=i2c-rtc,pcf85063a,i2c_csi_dsi + +# enable dwc2 USB controller (USB 2.0) +dtoverlay=dwc2,dr_mode=host + +# Enable UART0 for serial console on ttyAMA0 +dtparam=uart0_console=on diff --git a/board/raspberrypi/readme.txt b/board/raspberrypi/readme.txt index 7dda631387..31ff424a83 100644 --- a/board/raspberrypi/readme.txt +++ b/board/raspberrypi/readme.txt @@ -20,6 +20,7 @@ These instructions apply to all models of the Raspberry Pi: - the model CM4s (aka Raspberry Pi Compute Module 4s). - the model B5 (aka Raspberry Pi 5). - the model 500 (aka Raspberry Pi 500). + - the model CM5 (aka Raspberry Pi Compute Module 5 and IO Board). How to build it =============== @@ -86,6 +87,10 @@ For model 5 B and 500: $ make raspberrypi5_defconfig +For model CM5 (on IO Board): + + $ make raspberrypicm5io_defconfig + Build the rootfs ---------------- @@ -123,6 +128,8 @@ After building, you should obtain this tree: +-- bcm2712-rpi-5-b.dtb [1] +-- bcm2712d0-rpi-5-b.dtb [1] +-- bcm2712-rpi-500.dtb [1] + +-- bcm2712-rpi-cm5-cm5io [1] + +-- bcm2712-rpi-cm5l-cm5io [1] +-- boot.vfat +-- rootfs.ext4 +-- rpi-firmware/ @@ -197,3 +204,33 @@ for CM4 modules with eMMC memory proceed as following: - power down CM4/IO Board - remove jumper on IO Board header J2 to re-enable eMMC boot - power up CM4/IO Board + +CM5 debug UART +============== + +The debug UART header is not assembled on the Compute Module 5. + + 2.23. Debug UART + + Space is provided for the user to fit a debug UART connector. This + connector provides the same functionality as Raspberry Pi 5. The + connector is a three-pin 1mm pitch JST-SH connector, Part number + BM03B-SRSS-TB. The signals are replicated on the bottom as test points. + + Appendix B: Test Points + + | Reference | X | Y | NAME | + | TP35 | 11 | 37.8 | DEBUG_UART_TX | + | TP36 | 8.5 | 37.1 | DEBUG_UART_RX | + + Debug UART + + TP35 and TP36 are a TX and RX of the debug UART. TP46 should be used as + the ground. It is very useful to have access to these pins during + programming and initial boot. + +See https://datasheets.raspberrypi.com/cm5/cm5-datasheet.pdf. + +The signals are not wired up to 100-pin headers either. And thus, it is +impossible to output early boot traces in the EEPROM firmware without +assembling a JST-SH connector (or using the test points). diff --git a/board/raspberrypicm5io b/board/raspberrypicm5io new file mode 120000 index 0000000000..fcdafc81ed --- /dev/null +++ b/board/raspberrypicm5io @@ -0,0 +1 @@ +raspberrypi \ No newline at end of file diff --git a/configs/raspberrypicm5io_defconfig b/configs/raspberrypicm5io_defconfig new file mode 100644 index 0000000000..9bfde8f501 --- /dev/null +++ b/configs/raspberrypicm5io_defconfig @@ -0,0 +1,35 @@ +BR2_aarch64=y +BR2_cortex_a76=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y +BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_GLIBC_STABLE=y +BR2_GLOBAL_PATCH_DIR="board/raspberrypi/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypicm5io/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypicm5io/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,cd231d4775b14f228606c09f219b48308f6ab3aa)/linux-cd231d4775b14f228606c09f219b48308f6ab3aa.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="bcm2712" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/raspberrypi/linux-4k-page-size.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2712-rpi-cm5-cm5io broadcom/bcm2712-rpi-cm5l-cm5io" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_RPI_FIRMWARE=y +BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypicm5io/config_cm5io.txt" +BR2_PACKAGE_RPI_FIRMWARE_CMDLINE_FILE="board/raspberrypicm5io/cmdline.txt" +BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS=y +BR2_PACKAGE_KMOD=y +BR2_PACKAGE_KMOD_TOOLS=y +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_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_KMOD_XZ=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_RASPBERRYPI_USBBOOT=y