[Buildroot] [PATCH v2 1/1] configs/stm32f469_disco: fix kernel bootup
Christophe Priouzeau
christophe.priouzeau at foss.st.com
Wed Jun 9 10:56:37 UTC 2021
On 6/9/21 12:53 PM, Christophe PRIOUZEAU wrote:
> ------------------------------------------------------------------------
> *From:* Dario Binacchi <dariobin at libero.it>
> *Sent:* Monday, June 7, 2021 6:31 PM
> *To:* buildroot at buildroot.org <buildroot at buildroot.org>
> *Cc:* Christophe PRIOUZEAU <christophe.priouzeau at st.com>; Dario Binacchi
> <dariobin at libero.it>
> *Subject:* [PATCH v2 1/1] configs/stm32f469_disco: fix kernel bootup
> As described by [1], the kernel generated by the configuration for the
> STM32f469 Discovery board is buggy. Using a newer kernel, as suggested
> by [1], increases the dtb and Kernel image size. In particular, the
> 5.12 version of the kernel generates a dtb and a kernel image whose sum
> exceeds the 2 MByte of the flash module.
>
> So I decided to replace the afboot-stm32 bootloader in the flash with
> U-boot to easily boot the system from sdcard without having to worry
> about the size of dtb, kernel and rootfs generated by the configuration.
>
> This solution allows you to fix the kernel boot issue and makes it
> possible to use its future versions.
>
> [1]
> http://buildroot-busybox.2317881.n4.nabble.com/Bug-11746-New-stm32f469-didn-t-work-correctly-td219644.html
> <http://buildroot-busybox.2317881.n4.nabble.com/Bug-11746-New-stm32f469-didn-t-work-correctly-td219644.html>
>
> Signed-off-by: Dario Binacchi <dariobin at libero.it>
Acked-by: Christophe Priouzeau <christophe.priouzeau at foss.st.com>
Tested-by: Christophe Priouzeau <christophe.priouzeau at foss.st.com>
>
> ---
>
> Changes in v2:
> - Replace stm32f429 with stm32f469 in the commit header.
>
> .../stm32f469-disco/extlinux.conf | 4 +++
> .../stm32f469-disco/flash.sh | 4 +--
> .../stm32f469-disco/genimage.cfg | 27 +++++++++++++++
> .../stm32f469-disco/linux.fragment | 1 +
> ...sco-don-t-force-init-in-chosen-boota.patch | 33 -------------------
> .../stm32f469-disco/post-build.sh | 4 +++
> .../stm32f469-disco/readme.txt | 16 +++++++--
> configs/stm32f469_disco_defconfig | 19 ++++++-----
> 8 files changed, 62 insertions(+), 46 deletions(-)
> create mode 100644 board/stmicroelectronics/stm32f469-disco/extlinux.conf
> create mode 100644 board/stmicroelectronics/stm32f469-disco/genimage.cfg
> create mode 100644 board/stmicroelectronics/stm32f469-disco/linux.fragment
> delete mode 100644
> board/stmicroelectronics/stm32f469-disco/patches/linux/0001-ARM-stm32f249-disco-don-t-force-init-in-chosen-boota.patch
> create mode 100755 board/stmicroelectronics/stm32f469-disco/post-build.sh
>
> diff --git a/board/stmicroelectronics/stm32f469-disco/extlinux.conf
> b/board/stmicroelectronics/stm32f469-disco/extlinux.conf
> new file mode 100644
> index 0000000000..1c2db4383b
> --- /dev/null
> +++ b/board/stmicroelectronics/stm32f469-disco/extlinux.conf
> @@ -0,0 +1,4 @@
> +label stm32f469-disco-buildroot
> + kernel /zImage
> + devicetree /stm32f469-disco.dtb
> + append console=ttySTM0,115200 root=/dev/mmcblk0p2 rw rootfstype=ext2
> rootwait earlyprintk consoleblank=0 ignore_loglevel
> diff --git a/board/stmicroelectronics/stm32f469-disco/flash.sh
> b/board/stmicroelectronics/stm32f469-disco/flash.sh
> index 0ec0beb2de..984d2b2599 100755
> --- a/board/stmicroelectronics/stm32f469-disco/flash.sh
> +++ b/board/stmicroelectronics/stm32f469-disco/flash.sh
> @@ -13,8 +13,6 @@ ${OUTPUT_DIR}/host/bin/openocd -f
> board/stm32f469discovery.cfg \
> -c "reset init" \
> -c "flash probe 0" \
> -c "flash info 0" \
> - -c "flash write_image erase ${OUTPUT_DIR}/images/stm32f469i-disco.bin
> 0x08000000" \
> - -c "flash write_image erase ${OUTPUT_DIR}/images/stm32f469-disco.dtb
> 0x08004000" \
> - -c "flash write_image erase ${OUTPUT_DIR}/images/xipImage 0x08008000" \
> + -c "flash write_image erase ${OUTPUT_DIR}/images/u-boot.bin 0x08000000" \
> -c "reset run" \
> -c "shutdown"
> diff --git a/board/stmicroelectronics/stm32f469-disco/genimage.cfg
> b/board/stmicroelectronics/stm32f469-disco/genimage.cfg
> new file mode 100644
> index 0000000000..bc945955fa
> --- /dev/null
> +++ b/board/stmicroelectronics/stm32f469-disco/genimage.cfg
> @@ -0,0 +1,27 @@
> +image boot.vfat {
> + vfat {
> + files = {
> + "zImage",
> + "stm32f469-disco.dtb",
> + "extlinux"
> + }
> + }
> + size = 16M
> +}
> +
> +image sdcard.img {
> + hdimage {
> + }
> +
> + partition u-boot {
> + partition-type = 0xC
> + image = "boot.vfat"
> + }
> +
> + partition rootfs {
> + partition-type = 0x83
> + image = "rootfs.ext2"
> + size = 32M
> + }
> +}
> +
> diff --git a/board/stmicroelectronics/stm32f469-disco/linux.fragment
> b/board/stmicroelectronics/stm32f469-disco/linux.fragment
> new file mode 100644
> index 0000000000..90f5e8a8ff
> --- /dev/null
> +++ b/board/stmicroelectronics/stm32f469-disco/linux.fragment
> @@ -0,0 +1 @@
> +# CONFIG_XIP_KERNEL is not set
> \ No newline at end of file
> diff --git
> a/board/stmicroelectronics/stm32f469-disco/patches/linux/0001-ARM-stm32f249-disco-don-t-force-init-in-chosen-boota.patch
> b/board/stmicroelectronics/stm32f469-disco/patches/linux/0001-ARM-stm32f249-disco-don-t-force-init-in-chosen-boota.patch
> deleted file mode 100644
> index 750e477dfc..0000000000
> ---
> a/board/stmicroelectronics/stm32f469-disco/patches/linux/0001-ARM-stm32f249-disco-don-t-force-init-in-chosen-boota.patch
> +++ /dev/null
> @@ -1,33 +0,0 @@
> -From c8f8f33c2f0460a34c9545b01a7972a7ed2df0e9 Mon Sep 17 00:00:00 2001
> -From: Christophe Priouzeau <christophe.priouzeau at st.com>
> -Date: Mon, 29 May 2017 13:38:16 +0200
> -Subject: [PATCH] ARM: stm32f249-disco: don't force init= in
> /chosen/bootargs
> -
> -There is no reason to override the kernel's default init= value, as
> -this breaks userspace that assumes the kernel default of /init is
> -used. Since stm32 is often used with a minimal bootloader
> -(afboot-stm32) that doesn't provide any mechanism to override the DTB,
> -we need to adjust the kernel command line in the Device Tree source.
> -
> -Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>
> -Signed-off-by: Christophe Priouzeau <christophe.priouzeau at st.com>
> ----
> - arch/arm/boot/dts/stm32f469-disco.dts | 2 +-
> - 1 file changed, 1 insertion(+), 1 deletion(-)
> -
> -diff --git a/arch/arm/boot/dts/stm32f469-disco.dts
> b/arch/arm/boot/dts/stm32f469-disco.dts
> -index 0dd56ef..93ee1b2 100644
> ---- a/arch/arm/boot/dts/stm32f469-disco.dts
> -+++ b/arch/arm/boot/dts/stm32f469-disco.dts
> -@@ -53,7 +53,7 @@
> - compatible = "st,stm32f469i-disco", "st,stm32f469";
> -
> - chosen {
> -- bootargs = "root=/dev/ram rdinit=/linuxrc";
> -+ bootargs = "root=/dev/ram";
> - stdout-path = "serial0:115200n8";
> - };
> -
> ---
> -2.7.4
> -
> diff --git a/board/stmicroelectronics/stm32f469-disco/post-build.sh
> b/board/stmicroelectronics/stm32f469-disco/post-build.sh
> new file mode 100755
> index 0000000000..ec20fca7d9
> --- /dev/null
> +++ b/board/stmicroelectronics/stm32f469-disco/post-build.sh
> @@ -0,0 +1,4 @@
> +#!/bin/sh
> +BOARD_DIR="$(dirname $0)"
> +
> +install -m 0644 -D $BOARD_DIR/extlinux.conf
> $BINARIES_DIR/extlinux/extlinux.conf
> diff --git a/board/stmicroelectronics/stm32f469-disco/readme.txt
> b/board/stmicroelectronics/stm32f469-disco/readme.txt
> index 888bff08a1..c1e1d30e69 100644
> --- a/board/stmicroelectronics/stm32f469-disco/readme.txt
> +++ b/board/stmicroelectronics/stm32f469-disco/readme.txt
> @@ -15,5 +15,17 @@ Flashing
>
> ./board/stmicroelectronics/stm32f469-disco/flash.sh output/
>
> -It will flash the minimal bootloader, the Device Tree Blob, and the
> -kernel image which includes the root filesystem as initramfs.
> +It will flash the U-boot bootloader.
> +
> +Creating SD card
> +----------------
> +
> +Buildroot prepares an"sdcard.img" image in the output/images/ directory,
> +ready to be dumped on a SD card. Launch the following command as root:
> +
> + dd if=output/images/sdcard.img of=/dev/<your-sd-device>
> +
> +*** WARNING! This will destroy all the card content. Use with care! ***
> +
> +For details about the medium image layout and its content, see the
> +definition in board/stmicroelectronics/stm32f469-disco/genimage.cfg.
> diff --git a/configs/stm32f469_disco_defconfig
> b/configs/stm32f469_disco_defconfig
> index 9760d51878..8701ccbc02 100644
> --- a/configs/stm32f469_disco_defconfig
> +++ b/configs/stm32f469_disco_defconfig
> @@ -1,19 +1,22 @@
> BR2_arm=y
> BR2_cortex_m4=y
> -BR2_GLOBAL_PATCH_DIR="board/stmicroelectronics/stm32f469-disco/patches"
> -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y
> -BR2_ROOTFS_POST_BUILD_SCRIPT="board/stmicroelectronics/common/stm32f4xx/stm32-post-build.sh"
> +BR2_ROOTFS_POST_BUILD_SCRIPT="board/stmicroelectronics/common/stm32f4xx/stm32-post-build.sh
> board/stmicroelectronics/stm32f469-disco/post-build.sh"
> +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh"
> +BR2_ROOTFS_POST_SCRIPT_ARGS="-c
> board/stmicroelectronics/stm32f469-disco/genimage.cfg"
> BR2_LINUX_KERNEL=y
> BR2_LINUX_KERNEL_CUSTOM_VERSION=y
> -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11"
> +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.12"
> BR2_LINUX_KERNEL_DEFCONFIG="stm32"
> -BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(LINUX_DIR)/arch/arm/configs/dram_0x00000000.config"
> +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(LINUX_DIR)/arch/arm/configs/dram_0x00000000.config
> board/stmicroelectronics/stm32f469-disco/linux.fragment"
> BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y
> -BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="xipImage"
> +BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="zImage"
> BR2_LINUX_KERNEL_DTS_SUPPORT=y
> BR2_LINUX_KERNEL_INTREE_DTS_NAME="stm32f469-disco"
> BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox-minimal.config"
> -BR2_TARGET_ROOTFS_INITRAMFS=y
> +BR2_TARGET_ROOTFS_EXT2=y
> +BR2_TARGET_ROOTFS_EXT2_SIZE="32M"
> # BR2_TARGET_ROOTFS_TAR is not set
> -BR2_TARGET_AFBOOT_STM32=y
> +BR2_TARGET_UBOOT=y
> +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="stm32f469-discovery"
> +BR2_PACKAGE_HOST_GENIMAGE=y
> BR2_PACKAGE_HOST_OPENOCD=y
> --
> 2.17.1
>
>
> ST Restricted
>
--
Best regards / Cordialement,
Christophe Priouzeau | Tel: +33 244027320
STMicroelectronics
ST online: www.st.com<http://www.st.com/>
More information about the buildroot
mailing list