Message ID | 20240919035308.2622723-10-wbx@openadk.org |
---|---|
State | New |
Headers | show |
Series | add ARM FDPIC support | expand |
Hello Waldemar, On Thu, Sep 19, 2024 at 5:53 AM Waldemar Brodkorb <wbx@openadk.org> wrote: > > From: Dario Binacchi <dario.binacchi@amarulasolutions.com> > > The commit adds support for STM32F746G-DISCO board. The discovery kit is > a complete demonstration and development platform for STMicroelectronics > Arm Cortex-M7-core-based STM32F746NG. > > Board support package includes the following components: > - mainline Linux kernel 5.15.165 > - mainline U-Boot 2024.07 > - default packages from buildroot > > Link: https://www.st.com/en/evaluation-tools/32f746gdiscovery.html > Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com> > Signed-off-by: Waldemar Brodkorb <wbx@openadk.org> > --- > DEVELOPERS | 2 ++ > .../stm32f746-disco/extlinux.conf | 4 +++ > .../stm32f746-disco/flash_sd.sh | 22 +++++++++++++ > .../stm32f746-disco/genimage.cfg | 27 ++++++++++++++++ > .../stm32f746-disco/linux.fragment | 13 ++++++++ > .../patches/linux-headers/linux-headers.hash | 1 + > .../stm32f746-disco/patches/linux/linux.hash | 2 ++ > .../stm32f746-disco/patches/uboot/uboot.hash | 2 ++ > .../stm32f746-disco/post-build.sh | 4 +++ > .../stm32f746-disco/readme.txt | 31 ++++++++++++++++++ > configs/stm32f746_disco_sd_defconfig | 32 +++++++++++++++++++ > 11 files changed, 140 insertions(+) > create mode 100644 board/stmicroelectronics/stm32f746-disco/extlinux.conf > create mode 100755 board/stmicroelectronics/stm32f746-disco/flash_sd.sh > create mode 100644 board/stmicroelectronics/stm32f746-disco/genimage.cfg > create mode 100644 board/stmicroelectronics/stm32f746-disco/linux.fragment > create mode 120000 board/stmicroelectronics/stm32f746-disco/patches/linux-headers/linux-headers.hash > create mode 100644 board/stmicroelectronics/stm32f746-disco/patches/linux/linux.hash > create mode 100644 board/stmicroelectronics/stm32f746-disco/patches/uboot/uboot.hash > create mode 100755 board/stmicroelectronics/stm32f746-disco/post-build.sh > create mode 100644 board/stmicroelectronics/stm32f746-disco/readme.txt > create mode 100644 configs/stm32f746_disco_sd_defconfig > > diff --git a/DEVELOPERS b/DEVELOPERS > index ea4ee3377f..39da7ba38e 100644 > --- a/DEVELOPERS > +++ b/DEVELOPERS > @@ -3304,7 +3304,9 @@ F: package/ngrep/ > > N: Waldemar Brodkorb <wbx@openadk.org> > F: board/qemu/riscv32-virt/ > +F: board/stmicroelectronics/stm32f746-disco/ > F: configs/qemu_riscv32_nommu_virt_defconfig > +F: configs/stm32f746_disco_sd_defconfig > F: package/asterisk/ > F: package/evilwm/ > F: package/fbv/ > diff --git a/board/stmicroelectronics/stm32f746-disco/extlinux.conf b/board/stmicroelectronics/stm32f746-disco/extlinux.conf > new file mode 100644 > index 0000000000..bb79c0b412 > --- /dev/null > +++ b/board/stmicroelectronics/stm32f746-disco/extlinux.conf > @@ -0,0 +1,4 @@ > +label stm32f746-disco-buildroot > + kernel /zImage > + devicetree /stm32f746-disco.dtb > + append console=ttySTM0,115200 root=/dev/mmcblk0p2 rw rootwait consoleblank=0 ignore_loglevel > diff --git a/board/stmicroelectronics/stm32f746-disco/flash_sd.sh b/board/stmicroelectronics/stm32f746-disco/flash_sd.sh > new file mode 100755 > index 0000000000..b4858cb9da > --- /dev/null > +++ b/board/stmicroelectronics/stm32f746-disco/flash_sd.sh > @@ -0,0 +1,22 @@ > +#!/bin/bash > + > +if [ $# -eq 0 ]; then > + OUTPUT_DIR=output > +else > + OUTPUT_DIR=$1 > +fi > + > +if ! test -d "${OUTPUT_DIR}" ; then > + echo "ERROR: no output directory specified." > + echo "Usage: $0 OUTPUT_DIR" > + exit 1 > +fi > + > +"${OUTPUT_DIR}"/host/bin/openocd -f board/stm32f746g-disco.cfg \ > + -c "init" \ > + -c "reset init" \ > + -c "flash probe 0" \ > + -c "flash info 0" \ > + -c "flash write_image erase ${OUTPUT_DIR}/images/u-boot.bin 0x08000000" \ > + -c "reset run" \ > + -c "shutdown" > diff --git a/board/stmicroelectronics/stm32f746-disco/genimage.cfg b/board/stmicroelectronics/stm32f746-disco/genimage.cfg > new file mode 100644 > index 0000000000..6743d41972 > --- /dev/null > +++ b/board/stmicroelectronics/stm32f746-disco/genimage.cfg > @@ -0,0 +1,27 @@ > +image boot.vfat { > + vfat { > + files = { > + "zImage", > + "stm32f746-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/stm32f746-disco/linux.fragment b/board/stmicroelectronics/stm32f746-disco/linux.fragment > new file mode 100644 > index 0000000000..625fdced9e > --- /dev/null > +++ b/board/stmicroelectronics/stm32f746-disco/linux.fragment > @@ -0,0 +1,13 @@ > +# CONFIG_PREEMPT is not set > +# CONFIG_MULTIUSER is not set > +# CONFIG_TIMERFD is not set > +CONFIG_SET_MEM_PARAM=y > +CONFIG_DRAM_BASE=0xC0000000 > +CONFIG_DRAM_SIZE=0x01000000 > +# CONFIG_GCC_PLUGINS is not set > +# CONFIG_XIP_KERNEL is not set > +# CONFIG_BLK_DEV is not set > +# CONFIG_COMPAT_BRK is not set > +# CONFIG_PROC_SYSCTL is not set > +# CONFIG_CRYPTO is not set > +CONFIG_RCU_TRACE=y > \ No newline at end of file > diff --git a/board/stmicroelectronics/stm32f746-disco/patches/linux-headers/linux-headers.hash b/board/stmicroelectronics/stm32f746-disco/patches/linux-headers/linux-headers.hash > new file mode 120000 > index 0000000000..5808d92afe > --- /dev/null > +++ b/board/stmicroelectronics/stm32f746-disco/patches/linux-headers/linux-headers.hash > @@ -0,0 +1 @@ > +../linux/linux.hash > \ No newline at end of file > diff --git a/board/stmicroelectronics/stm32f746-disco/patches/linux/linux.hash b/board/stmicroelectronics/stm32f746-disco/patches/linux/linux.hash > new file mode 100644 > index 0000000000..7f78b950f3 > --- /dev/null > +++ b/board/stmicroelectronics/stm32f746-disco/patches/linux/linux.hash > @@ -0,0 +1,2 @@ > +# Locally calculated > +sha256 a36dd3e82ceb634afded31f2656568f57c4d9c4b399859f298b18116df11c6fe linux-5.15.165.tar.xz > diff --git a/board/stmicroelectronics/stm32f746-disco/patches/uboot/uboot.hash b/board/stmicroelectronics/stm32f746-disco/patches/uboot/uboot.hash > new file mode 100644 > index 0000000000..fe9b4f53dc > --- /dev/null > +++ b/board/stmicroelectronics/stm32f746-disco/patches/uboot/uboot.hash > @@ -0,0 +1,2 @@ > +# Locally calculated > +sha256 f591da9ab90ef3d6b3d173766d0ddff90c4ed7330680897486117df390d83c8f u-boot-2024.07.tar.bz2 > diff --git a/board/stmicroelectronics/stm32f746-disco/post-build.sh b/board/stmicroelectronics/stm32f746-disco/post-build.sh > new file mode 100755 > index 0000000000..5dcdb352eb > --- /dev/null > +++ b/board/stmicroelectronics/stm32f746-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/stm32f746-disco/readme.txt b/board/stmicroelectronics/stm32f746-disco/readme.txt > new file mode 100644 > index 0000000000..4ac16da331 > --- /dev/null > +++ b/board/stmicroelectronics/stm32f746-disco/readme.txt > @@ -0,0 +1,31 @@ > +STM32F746-DISCO > +=================== > + > +This tutorial describes how to use the predefined Buildroot > +configuration for the STM32F746-DISCO evaluation platform. > + > +Building > +-------- > + > + make stm32f746_disco_sd_defconfig > + make > + > +Flashing > +-------- > + > + ./board/stmicroelectronics/stm32f746-disco/flash_sd.sh output/ > + > +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/stm32f746-disco/genimage.cfg. > diff --git a/configs/stm32f746_disco_sd_defconfig b/configs/stm32f746_disco_sd_defconfig > new file mode 100644 > index 0000000000..5766e975f4 > --- /dev/null > +++ b/configs/stm32f746_disco_sd_defconfig > @@ -0,0 +1,32 @@ > +BR2_arm=y > +BR2_cortex_m7=y > +BR2_BINFMT_FDPIC=y > +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y > +BR2_GLOBAL_PATCH_DIR="board/stmicroelectronics/stm32f746-disco/patches" > +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y > +BR2_INIT_TINYINIT=y > +BR2_ROOTFS_POST_BUILD_SCRIPT="board/stmicroelectronics/stm32f746-disco/post-build.sh" > +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" > +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/stmicroelectronics/stm32f746-disco/genimage.cfg" > +BR2_LINUX_KERNEL=y > +BR2_LINUX_KERNEL_CUSTOM_VERSION=y > +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.165" > +BR2_LINUX_KERNEL_DEFCONFIG="stm32" > +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/stmicroelectronics/stm32f746-disco/linux.fragment" > +BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y > +BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="zImage" > +BR2_LINUX_KERNEL_DTS_SUPPORT=y > +BR2_LINUX_KERNEL_INTREE_DTS_NAME="stm32f746-disco" > +BR2_TARGET_ROOTFS_EXT2=y > +BR2_TARGET_ROOTFS_EXT2_SIZE="32M" > +# BR2_TARGET_ROOTFS_TAR is not set > +BR2_TARGET_UBOOT=y > +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y > +BR2_TARGET_UBOOT_CUSTOM_VERSION=y > +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.07" > +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="stm32f746-disco" > +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y > +BR2_PACKAGE_HOST_DOSFSTOOLS=y > +BR2_PACKAGE_HOST_GENIMAGE=y > +BR2_PACKAGE_HOST_MTOOLS=y > +BR2_PACKAGE_HOST_OPENOCD=y > -- > 2.30.2 > Great work! Support for FDPIC makes for a more stable system. The board test did not reveal any problems with shell command execution as was previously the case. I did, however, make some modifications to the patch: - I added my name back to the DEVELOPER file, as in v4 (https://patchwork.ozlabs.org/project/buildroot/patch/20240831120833.2915529-3-dario.binacchi@amarulasolutions.com/). I think when you applied this patch this part was lost. Do you agree that we can both be maintainers for this file? - As Thomas suggested, I removed the VFAT partition. I would submit the whole series as version 2 where I would only modify this patch. What do you think? Do you agree? Thanks and regards, Dario
diff --git a/DEVELOPERS b/DEVELOPERS index ea4ee3377f..39da7ba38e 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -3304,7 +3304,9 @@ F: package/ngrep/ N: Waldemar Brodkorb <wbx@openadk.org> F: board/qemu/riscv32-virt/ +F: board/stmicroelectronics/stm32f746-disco/ F: configs/qemu_riscv32_nommu_virt_defconfig +F: configs/stm32f746_disco_sd_defconfig F: package/asterisk/ F: package/evilwm/ F: package/fbv/ diff --git a/board/stmicroelectronics/stm32f746-disco/extlinux.conf b/board/stmicroelectronics/stm32f746-disco/extlinux.conf new file mode 100644 index 0000000000..bb79c0b412 --- /dev/null +++ b/board/stmicroelectronics/stm32f746-disco/extlinux.conf @@ -0,0 +1,4 @@ +label stm32f746-disco-buildroot + kernel /zImage + devicetree /stm32f746-disco.dtb + append console=ttySTM0,115200 root=/dev/mmcblk0p2 rw rootwait consoleblank=0 ignore_loglevel diff --git a/board/stmicroelectronics/stm32f746-disco/flash_sd.sh b/board/stmicroelectronics/stm32f746-disco/flash_sd.sh new file mode 100755 index 0000000000..b4858cb9da --- /dev/null +++ b/board/stmicroelectronics/stm32f746-disco/flash_sd.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +if [ $# -eq 0 ]; then + OUTPUT_DIR=output +else + OUTPUT_DIR=$1 +fi + +if ! test -d "${OUTPUT_DIR}" ; then + echo "ERROR: no output directory specified." + echo "Usage: $0 OUTPUT_DIR" + exit 1 +fi + +"${OUTPUT_DIR}"/host/bin/openocd -f board/stm32f746g-disco.cfg \ + -c "init" \ + -c "reset init" \ + -c "flash probe 0" \ + -c "flash info 0" \ + -c "flash write_image erase ${OUTPUT_DIR}/images/u-boot.bin 0x08000000" \ + -c "reset run" \ + -c "shutdown" diff --git a/board/stmicroelectronics/stm32f746-disco/genimage.cfg b/board/stmicroelectronics/stm32f746-disco/genimage.cfg new file mode 100644 index 0000000000..6743d41972 --- /dev/null +++ b/board/stmicroelectronics/stm32f746-disco/genimage.cfg @@ -0,0 +1,27 @@ +image boot.vfat { + vfat { + files = { + "zImage", + "stm32f746-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/stm32f746-disco/linux.fragment b/board/stmicroelectronics/stm32f746-disco/linux.fragment new file mode 100644 index 0000000000..625fdced9e --- /dev/null +++ b/board/stmicroelectronics/stm32f746-disco/linux.fragment @@ -0,0 +1,13 @@ +# CONFIG_PREEMPT is not set +# CONFIG_MULTIUSER is not set +# CONFIG_TIMERFD is not set +CONFIG_SET_MEM_PARAM=y +CONFIG_DRAM_BASE=0xC0000000 +CONFIG_DRAM_SIZE=0x01000000 +# CONFIG_GCC_PLUGINS is not set +# CONFIG_XIP_KERNEL is not set +# CONFIG_BLK_DEV is not set +# CONFIG_COMPAT_BRK is not set +# CONFIG_PROC_SYSCTL is not set +# CONFIG_CRYPTO is not set +CONFIG_RCU_TRACE=y \ No newline at end of file diff --git a/board/stmicroelectronics/stm32f746-disco/patches/linux-headers/linux-headers.hash b/board/stmicroelectronics/stm32f746-disco/patches/linux-headers/linux-headers.hash new file mode 120000 index 0000000000..5808d92afe --- /dev/null +++ b/board/stmicroelectronics/stm32f746-disco/patches/linux-headers/linux-headers.hash @@ -0,0 +1 @@ +../linux/linux.hash \ No newline at end of file diff --git a/board/stmicroelectronics/stm32f746-disco/patches/linux/linux.hash b/board/stmicroelectronics/stm32f746-disco/patches/linux/linux.hash new file mode 100644 index 0000000000..7f78b950f3 --- /dev/null +++ b/board/stmicroelectronics/stm32f746-disco/patches/linux/linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 a36dd3e82ceb634afded31f2656568f57c4d9c4b399859f298b18116df11c6fe linux-5.15.165.tar.xz diff --git a/board/stmicroelectronics/stm32f746-disco/patches/uboot/uboot.hash b/board/stmicroelectronics/stm32f746-disco/patches/uboot/uboot.hash new file mode 100644 index 0000000000..fe9b4f53dc --- /dev/null +++ b/board/stmicroelectronics/stm32f746-disco/patches/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 f591da9ab90ef3d6b3d173766d0ddff90c4ed7330680897486117df390d83c8f u-boot-2024.07.tar.bz2 diff --git a/board/stmicroelectronics/stm32f746-disco/post-build.sh b/board/stmicroelectronics/stm32f746-disco/post-build.sh new file mode 100755 index 0000000000..5dcdb352eb --- /dev/null +++ b/board/stmicroelectronics/stm32f746-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/stm32f746-disco/readme.txt b/board/stmicroelectronics/stm32f746-disco/readme.txt new file mode 100644 index 0000000000..4ac16da331 --- /dev/null +++ b/board/stmicroelectronics/stm32f746-disco/readme.txt @@ -0,0 +1,31 @@ +STM32F746-DISCO +=================== + +This tutorial describes how to use the predefined Buildroot +configuration for the STM32F746-DISCO evaluation platform. + +Building +-------- + + make stm32f746_disco_sd_defconfig + make + +Flashing +-------- + + ./board/stmicroelectronics/stm32f746-disco/flash_sd.sh output/ + +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/stm32f746-disco/genimage.cfg. diff --git a/configs/stm32f746_disco_sd_defconfig b/configs/stm32f746_disco_sd_defconfig new file mode 100644 index 0000000000..5766e975f4 --- /dev/null +++ b/configs/stm32f746_disco_sd_defconfig @@ -0,0 +1,32 @@ +BR2_arm=y +BR2_cortex_m7=y +BR2_BINFMT_FDPIC=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_15=y +BR2_GLOBAL_PATCH_DIR="board/stmicroelectronics/stm32f746-disco/patches" +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y +BR2_INIT_TINYINIT=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/stmicroelectronics/stm32f746-disco/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/stmicroelectronics/stm32f746-disco/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.165" +BR2_LINUX_KERNEL_DEFCONFIG="stm32" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/stmicroelectronics/stm32f746-disco/linux.fragment" +BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y +BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="zImage" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="stm32f746-disco" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_SIZE="32M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="stm32f746-disco" +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_OPENOCD=y