buildroot.busybox.net archive mirror
 help / color / mirror / Atom feed
From: Waldemar Brodkorb <wbx@openadk.org>
To: buildroot@buildroot.org
Subject: [Buildroot] [PATCH] configs/stm32f746g-disco: new defconfig
Date: Thu, 22 Sep 2022 09:42:51 +0200	[thread overview]
Message-ID: <YywR+1YTnzQtkCrC@waldemar-brodkorb.de> (raw)

Add support for ST Microsystems STM32F746G-DISCO board.
See here for hardware details:
https://www.st.com/en/evaluation-tools/32f746gdiscovery.html

The LCD and Ethernet are _not_ yet supported by Linux upstream.
The RAM is very limited, so the init script is stolen from the
RISCV noMMU systems to support booting to a shell without crashing.

Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
---
 DEVELOPERS                                    |  2 +
 .../stm32f746g-disco/extlinux.conf            |  4 ++
 .../stm32f746g-disco/flash.sh                 | 18 ++++++++
 .../stm32f746g-disco/genimage.cfg             | 27 ++++++++++++
 .../stm32f746g-disco/linux.fragment           |  6 +++
 .../stm32f746g-disco/post-build.sh            |  4 ++
 .../stm32f746g-disco/readme.txt               | 31 ++++++++++++++
 .../stm32f746g-disco/rootfs_overlay/init      |  1 +
 .../stm32f746g-disco/rootfs_overlay/sbin/init | 41 +++++++++++++++++++
 configs/stm32f746g_disco_sd_defconfig         | 32 +++++++++++++++
 10 files changed, 166 insertions(+)
 create mode 100644 board/stmicroelectronics/stm32f746g-disco/extlinux.conf
 create mode 100755 board/stmicroelectronics/stm32f746g-disco/flash.sh
 create mode 100644 board/stmicroelectronics/stm32f746g-disco/genimage.cfg
 create mode 100644 board/stmicroelectronics/stm32f746g-disco/linux.fragment
 create mode 100755 board/stmicroelectronics/stm32f746g-disco/post-build.sh
 create mode 100644 board/stmicroelectronics/stm32f746g-disco/readme.txt
 create mode 120000 board/stmicroelectronics/stm32f746g-disco/rootfs_overlay/init
 create mode 100755 board/stmicroelectronics/stm32f746g-disco/rootfs_overlay/sbin/init
 create mode 100644 configs/stm32f746g_disco_sd_defconfig

diff --git a/DEVELOPERS b/DEVELOPERS
index 14b91fca8d..484bb90bcf 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -3037,6 +3037,8 @@ F:	package/mksh/
 F:	package/ruby/
 F:	package/uclibc/
 F:	package/uclibc-ng-test/
+F:	board/stmicroelectronics/stm32f746g-disco/
+F:	configs/stm32f746g_disco_sd_defconfig
 
 N:	Will Newton <will.newton@gmail.com>
 F:	package/enchant/
diff --git a/board/stmicroelectronics/stm32f746g-disco/extlinux.conf b/board/stmicroelectronics/stm32f746g-disco/extlinux.conf
new file mode 100644
index 0000000000..bb79c0b412
--- /dev/null
+++ b/board/stmicroelectronics/stm32f746g-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/stm32f746g-disco/flash.sh b/board/stmicroelectronics/stm32f746g-disco/flash.sh
new file mode 100755
index 0000000000..d4e98cc808
--- /dev/null
+++ b/board/stmicroelectronics/stm32f746g-disco/flash.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+OUTPUT_DIR=$1
+
+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/stm32f7discovery.cfg \
+  -c "init" \
+  -c "reset init" \
+  -c "flash probe 0" \
+  -c "flash info 0" \
+  -c "flash write_image erase ${OUTPUT_DIR}/images/u-boot-dtb.bin 0x08000000" \
+  -c "reset run" \
+  -c "shutdown"
diff --git a/board/stmicroelectronics/stm32f746g-disco/genimage.cfg b/board/stmicroelectronics/stm32f746g-disco/genimage.cfg
new file mode 100644
index 0000000000..6743d41972
--- /dev/null
+++ b/board/stmicroelectronics/stm32f746g-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/stm32f746g-disco/linux.fragment b/board/stmicroelectronics/stm32f746g-disco/linux.fragment
new file mode 100644
index 0000000000..de2e14be6f
--- /dev/null
+++ b/board/stmicroelectronics/stm32f746g-disco/linux.fragment
@@ -0,0 +1,6 @@
+CONFIG_SET_MEM_PARAM=y
+CONFIG_DRAM_BASE=0xC0000000
+CONFIG_DRAM_SIZE=0x01000000
+CONFIG_FLASH_MEM_BASE=0x08000000
+CONFIG_FLASH_SIZE=0x00200000
+# CONFIG_XIP_KERNEL is not set
diff --git a/board/stmicroelectronics/stm32f746g-disco/post-build.sh b/board/stmicroelectronics/stm32f746g-disco/post-build.sh
new file mode 100755
index 0000000000..ec20fca7d9
--- /dev/null
+++ b/board/stmicroelectronics/stm32f746g-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/stm32f746g-disco/readme.txt b/board/stmicroelectronics/stm32f746g-disco/readme.txt
new file mode 100644
index 0000000000..d312840ea3
--- /dev/null
+++ b/board/stmicroelectronics/stm32f746g-disco/readme.txt
@@ -0,0 +1,31 @@
+STM32F746G-DISCO
+===================
+
+This tutorial describes how to use the predefined Buildroot
+configuration for the STM32F746G-DISCO evaluation platform.
+
+Building
+--------
+
+  make stm32f746g_disco_sd_defconfig
+  make
+
+Flashing
+--------
+
+  ./board/stmicroelectronics/stm32f746-disco/flash.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/board/stmicroelectronics/stm32f746g-disco/rootfs_overlay/init b/board/stmicroelectronics/stm32f746g-disco/rootfs_overlay/init
new file mode 120000
index 0000000000..a0b71977c0
--- /dev/null
+++ b/board/stmicroelectronics/stm32f746g-disco/rootfs_overlay/init
@@ -0,0 +1 @@
+/sbin/init
\ No newline at end of file
diff --git a/board/stmicroelectronics/stm32f746g-disco/rootfs_overlay/sbin/init b/board/stmicroelectronics/stm32f746g-disco/rootfs_overlay/sbin/init
new file mode 100755
index 0000000000..1285fd4420
--- /dev/null
+++ b/board/stmicroelectronics/stm32f746g-disco/rootfs_overlay/sbin/init
@@ -0,0 +1,41 @@
+#!/bin/sh
+
+# This script replaces the default busybox init process to avoid having that
+# process staying alive and sleeping in the background, (uselessly) consuming
+# precious memory.
+
+# Mount procfs and sysfs
+/bin/mount -t proc proc /proc
+/bin/mount -t sysfs sysfs /sys
+
+# When the kernel is directly booted, devtmpfs is not automatically mounted.
+# Manually mount it if needed.
+devmnt=$(mount | grep -c devtmpfs)
+if [ ${devmnt} -eq 0 ]; then
+    /bin/mount -t devtmpfs devtmpfs /dev
+fi
+
+# Use the /dev/console device node from devtmpfs if possible to not
+# confuse glibc's ttyname_r().
+# This may fail (E.G. booted with console=), and errors from exec will
+# terminate the shell, so use a subshell for the test
+if (exec 0</dev/console) 2>/dev/null; then
+    exec 0</dev/console
+    exec 1>/dev/console
+    exec 2>/dev/console
+fi
+
+# Clear memory to reduce page fragmentation
+echo 3 > /proc/sys/vm/drop_caches
+
+# Print a fun logo :)
+echo "          __  _"
+echo "         / / (_) ____   _   _ __  __"
+echo "        / /  | ||  _ \\ | | | |\\ \\/ /"
+echo "       / /___| || | | || |_| | >  < "
+echo "      /_____/|_||_| |_| \\____|/_/\\_\\"
+echo "    ST Microsystems STM32F746G-DISCO NOMMU"
+echo ""
+
+# Finally, let's start an interactive shell
+exec /bin/sh
diff --git a/configs/stm32f746g_disco_sd_defconfig b/configs/stm32f746g_disco_sd_defconfig
new file mode 100644
index 0000000000..7061a8a6ed
--- /dev/null
+++ b/configs/stm32f746g_disco_sd_defconfig
@@ -0,0 +1,32 @@
+BR2_arm=y
+BR2_cortex_m7=y
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_19=y
+BR2_ROOTFS_POST_BUILD_SCRIPT="board/stmicroelectronics/stm32f746g-disco/post-build.sh"
+BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh"
+BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/stmicroelectronics/stm32f746g-disco/genimage.cfg"
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.19.9"
+BR2_LINUX_KERNEL_DEFCONFIG="stm32"
+BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/stmicroelectronics/stm32f746g-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_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox-minimal.config"
+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_CUSTOM_VERSION=y
+BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.10-rc5"
+BR2_TARGET_UBOOT_BOARDNAME="stm32f746-disco"
+BR2_TARGET_UBOOT_BOARD_DEFCONFIG="stm32f746-disco"
+BR2_TARGET_UBOOT_FORMAT_DTB_BIN=y
+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
+BR2_INIT_NONE=y
+BR2_ROOTFS_OVERLAY="board/stmicroelectronics/stm32f746g-disco/rootfs_overlay"
-- 
2.30.2

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

             reply	other threads:[~2022-09-22  7:43 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-22  7:42 Waldemar Brodkorb [this message]
2023-02-06 22:02 ` [Buildroot] [PATCH] configs/stm32f746g-disco: new defconfig Thomas Petazzoni via buildroot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YywR+1YTnzQtkCrC@waldemar-brodkorb.de \
    --to=wbx@openadk.org \
    --cc=buildroot@buildroot.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).