From: Yauheni Saldatsenka <eugentoo@gmail.com>
To: buildroot@buildroot.org
Cc: Christophe Priouzeau <christophe.priouzeau@foss.st.com>
Subject: [Buildroot] [PATCH 2/3] [PATCH v2 1/1] configs/stm32f469_disco_xip_defconfig: alternative defconfig for XIP
Date: Wed, 25 Aug 2021 21:18:57 +0300 [thread overview]
Message-ID: <20210825181858.801574-2-eugentoo@gmail.com> (raw)
In-Reply-To: <20210825181858.801574-1-eugentoo@gmail.com>
Result of make tinyconfig was taken as a starting point to fit kernel
into flash memory.
Current setup kernel + rootfs fits in 1.6MB on-chip flash memory.
Fixes:
- Move kernel to new flash bank due to growth of dtb size
- Fix kernel start address in bootloader
For better binary size optimization gcc LTO is turned on.
Signed-off-by: Yauheni Saldatsenka <eugentoo@gmail.com>
----
v1 -> v2:
- Change codestyle in bash scripts
- Use in-tree dts with config fragment
- Update readme.txt
- Remove unnecessary target and host packages from defconfig
Signed-off-by: Yauheni Saldatsenka <eugentoo@gmail.com>
---
.../stm32f469-disco/flash.sh | 6 +-
.../linux/{defconfig => linux.config} | 0
...32f469-i-Update-kernel-start-address.patch | 56 +++++++++++++++++++
.../0002-kernel-start-address.patch | 21 -------
.../patches/afboot-stm32/0003-no-mpu.patch | 22 --------
...fault-dram-address-without-remapping.patch | 38 +++++++++++++
.../stm32f469-disco/readme.txt | 26 +++++++--
configs/stm32f469_disco_xip_defconfig | 8 +--
8 files changed, 117 insertions(+), 60 deletions(-)
rename board/stmicroelectronics/stm32f469-disco/linux/{defconfig => linux.config} (100%)
create mode 100644 board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0001-stm32f469-i-Update-kernel-start-address.patch
delete mode 100644 board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0002-kernel-start-address.patch
delete mode 100644 board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0003-no-mpu.patch
create mode 100644 board/stmicroelectronics/stm32f469-disco/patches/linux/0001-Use-default-dram-address-without-remapping.patch
diff --git a/board/stmicroelectronics/stm32f469-disco/flash.sh b/board/stmicroelectronics/stm32f469-disco/flash.sh
index 176e1c9d2c..0e130908aa 100755
--- a/board/stmicroelectronics/stm32f469-disco/flash.sh
+++ b/board/stmicroelectronics/stm32f469-disco/flash.sh
@@ -3,15 +3,13 @@
OUTPUT_DIR=$1
BUILD_TYPE=$2
-if ! test -d "${OUTPUT_DIR}"
-then
+if ! test -d "${OUTPUT_DIR}"; then
echo "ERROR: no output directory specified."
echo "Usage: $0 OUTPUT_DIR"
exit 1
fi
-if [[ -z "${BUILD_TYPE}" ]]
-then
+if [[ -z "${BUILD_TYPE}" ]]; then
echo "ERROR: no build type specified, please select 'xip' or 'uboot'."
echo "Usage: $0 OUTPUT_DIR $1 BUILD_TYPE"
exit 1
diff --git a/board/stmicroelectronics/stm32f469-disco/linux/defconfig b/board/stmicroelectronics/stm32f469-disco/linux/linux.config
similarity index 100%
rename from board/stmicroelectronics/stm32f469-disco/linux/defconfig
rename to board/stmicroelectronics/stm32f469-disco/linux/linux.config
diff --git a/board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0001-stm32f469-i-Update-kernel-start-address.patch b/board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0001-stm32f469-i-Update-kernel-start-address.patch
new file mode 100644
index 0000000000..d5d1e5a8ad
--- /dev/null
+++ b/board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0001-stm32f469-i-Update-kernel-start-address.patch
@@ -0,0 +1,56 @@
+From fe5f3a86d07e378baeeddc1dfecd0686d83aa42f Mon Sep 17 00:00:00 2001
+From: Yauheni Saldatsenka <eugentoo@gmail.com>
+Date: Sat, 14 Aug 2021 18:54:51 +0300
+Subject: [PATCH] stm32f469-i: Update kernel start address
+
+As of GNU/Linux v5.12 kernel device tree binary grows above 0x08008000
+and overwrites kernel binary
+Therefore this commit moves kernel to the next flash bank
+
+Signed-off-by: Yauheni Saldatsenka <eugentoo@gmail.com>
+---
+ stm32f469i-disco.c | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/stm32f469i-disco.c b/stm32f469i-disco.c
+index 2da1f4b..46fc06a 100644
+--- a/stm32f469i-disco.c
++++ b/stm32f469i-disco.c
+@@ -6,6 +6,7 @@
+ #include "gpio.h"
+ #include "mpu.h"
+
++#define KERNEL_ADDR 0x08010000
+ #define CONFIG_HSE_HZ 8000000
+ #define CONFIG_PLL_M 8
+ #define CONFIG_PLL_N 360
+@@ -85,7 +86,7 @@ static void fmc_wait_busy(void)
+
+ void start_kernel(void)
+ {
+- void (*kernel)(uint32_t reserved, uint32_t mach, uint32_t dt) = (void (*)(uint32_t, uint32_t, uint32_t))(0x08008000 | 1);
++ void (*kernel)(uint32_t reserved, uint32_t mach, uint32_t dt) = (void (*)(uint32_t, uint32_t, uint32_t))(KERNEL_ADDR | 1);
+
+ kernel(0, ~0UL, 0x08004000);
+ }
+@@ -102,7 +103,7 @@ int main(void)
+ volatile uint32_t *SYSCFG_MEMRMP = (void *)(SYSCFG_BASE + 0x00);
+ int i;
+
+- mpu_config(0x0);
++ mpu_config(0xc0000000);
+
+ if (*FLASH_CR & FLASH_CR_LOCK) {
+ *FLASH_KEYR = 0x45670123;
+@@ -195,8 +196,6 @@ int main(void)
+ usart_setup(usart_base, 45000000);
+ usart_putch(usart_base, '.');
+
+- *SYSCFG_MEMRMP = 0x4;
+-
+ start_kernel();
+
+ return 0;
+--
+2.32.0
+
diff --git a/board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0002-kernel-start-address.patch b/board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0002-kernel-start-address.patch
deleted file mode 100644
index 614effa85b..0000000000
--- a/board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0002-kernel-start-address.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff --git a/stm32f469i-disco.c b/stm32f469i-disco.c
-index 2da1f4b65f..96e4dff65e 100644
---- a/stm32f469i-disco.c
-+++ b/stm32f469i-disco.c
-@@ -6,6 +6,7 @@
- #include "gpio.h"
- #include "mpu.h"
-
-+#define KERNEL_ADDR 0x08010000
- #define CONFIG_HSE_HZ 8000000
- #define CONFIG_PLL_M 8
- #define CONFIG_PLL_N 360
-@@ -85,7 +86,7 @@ static void fmc_wait_busy(void)
-
- void start_kernel(void)
- {
-- void (*kernel)(uint32_t reserved, uint32_t mach, uint32_t dt) = (void (*)(uint32_t, uint32_t, uint32_t))(0x08008000 | 1);
-+ void (*kernel)(uint32_t reserved, uint32_t mach, uint32_t dt) = (void (*)(uint32_t, uint32_t, uint32_t))(KERNEL_ADDR | 1);
-
- kernel(0, ~0UL, 0x08004000);
- }
diff --git a/board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0003-no-mpu.patch b/board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0003-no-mpu.patch
deleted file mode 100644
index bc66d2d0ef..0000000000
--- a/board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0003-no-mpu.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff --git a/stm32f469i-disco.c b/stm32f469i-disco.c
-index d4d0909831..03f823f288 100644
---- a/stm32f469i-disco.c
-+++ b/stm32f469i-disco.c
-@@ -127,7 +127,7 @@ int main(void)
-
- int i;
-
-- mpu_config(0x0);
-+ mpu_config(0xc0000000);
-
- if (*FLASH_CR & FLASH_CR_LOCK) {
- *FLASH_KEYR = 0x45670123;
-@@ -229,7 +229,7 @@ int main(void)
- usart_setup(usart_base, 45000000);
- usart_putch(usart_base, '.');
-
-- *SYSCFG_MEMRMP = 0x4;
-+ /* *SYSCFG_MEMRMP = 0x4; */
-
- start_kernel();
-
diff --git a/board/stmicroelectronics/stm32f469-disco/patches/linux/0001-Use-default-dram-address-without-remapping.patch b/board/stmicroelectronics/stm32f469-disco/patches/linux/0001-Use-default-dram-address-without-remapping.patch
new file mode 100644
index 0000000000..68fe8380a2
--- /dev/null
+++ b/board/stmicroelectronics/stm32f469-disco/patches/linux/0001-Use-default-dram-address-without-remapping.patch
@@ -0,0 +1,38 @@
+From 8ccf9f625d00138d86fb7d70f3efd58a8fb4d7ff Mon Sep 17 00:00:00 2001
+From: Yauheni Saldatsenka <eugentoo@gmail.com>
+Date: Mon, 23 Aug 2021 02:54:22 +0300
+Subject: [PATCH] Use default dram address without remapping
+
+Signed-off-by: Yauheni Saldatsenka <eugentoo@gmail.com>
+---
+ arch/arm/boot/dts/stm32f469-disco.dts | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/arch/arm/boot/dts/stm32f469-disco.dts b/arch/arm/boot/dts/stm32f469-disco.dts
+index 2e1b3bbbe4b5..06845614a19a 100644
+--- a/arch/arm/boot/dts/stm32f469-disco.dts
++++ b/arch/arm/boot/dts/stm32f469-disco.dts
+@@ -60,9 +60,9 @@ chosen {
+ stdout-path = "serial0:115200n8";
+ };
+
+- memory@00000000 {
++ memory@c0000000 {
+ device_type = "memory";
+- reg = <0x00000000 0x1000000>;
++ reg = <0xc0000000 0x1000000>;
+ };
+
+ aliases {
+@@ -84,7 +84,7 @@ vdd_dsi: vdd-dsi {
+ };
+
+ soc {
+- dma-ranges = <0xc0000000 0x0 0x10000000>;
++ dma-ranges = <0xc0000000 0xc0000000 0x10000000>;
+ };
+
+ leds {
+--
+2.32.0
+
diff --git a/board/stmicroelectronics/stm32f469-disco/readme.txt b/board/stmicroelectronics/stm32f469-disco/readme.txt
index c1e1d30e69..646f340382 100644
--- a/board/stmicroelectronics/stm32f469-disco/readme.txt
+++ b/board/stmicroelectronics/stm32f469-disco/readme.txt
@@ -4,23 +4,37 @@ STM32F469 Discovery
This tutorial describes how to use the predefined Buildroot
configuration for the STM32F469 Discovery evaluation platform.
+There are two setups supported:
+1. Internal flash memory is fully occupied with u-boot bootloader which boots kernel with
+ root filesystem from MMC.
+2. Internal flash memory stores simple afboot-stm32 bootloader, device tree and
+ in place (XIP) kernel with built-in initramfs.
+ Kernel is based on tinyconfig.
+
Building
--------
+ Type
+ "make stm32f469_disco_defconfig"
+ to build u-boot setup
+ or
+ "make stm32f469_disco_xip_defconfig"
+ to build xip setup
+
+ Then
- make stm32f469_disco_defconfig
- make
+ "make"
Flashing
--------
- ./board/stmicroelectronics/stm32f469-disco/flash.sh output/
+ ./board/stmicroelectronics/stm32f469-disco/flash.sh output/ <BUILD_TYPE>
-It will flash the U-boot bootloader.
+ <BUILD_TYPE> can be "xip" or "uboot"
-Creating SD card
+Creating SD card for u-boot setup
----------------
-Buildroot prepares an"sdcard.img" image in the output/images/ directory,
+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>
diff --git a/configs/stm32f469_disco_xip_defconfig b/configs/stm32f469_disco_xip_defconfig
index 81bdb0d6d6..fd2946ab8b 100644
--- a/configs/stm32f469_disco_xip_defconfig
+++ b/configs/stm32f469_disco_xip_defconfig
@@ -1,24 +1,18 @@
BR2_arm=y
BR2_cortex_m4=y
BR2_GLOBAL_PATCH_DIR="board/stmicroelectronics/stm32f469-disco/patches"
-BR2_KERNEL_HEADERS_5_13=y
# BR2_UCLIBC_INSTALL_UTILS is not set
-BR2_GCC_VERSION_11_X=y
BR2_GCC_ENABLE_LTO=y
-BR2_ROOTFS_POST_BUILD_SCRIPT="board/stmicroelectronics/common/stm32f4xx/stm32-post-build.sh"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
-BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/stmicroelectronics/stm32f469-disco/linux/defconfig"
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/stmicroelectronics/stm32f469-disco/linux/linux.config"
BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y
BR2_LINUX_KERNEL_XZ=y
BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="xipImage"
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="stm32f469-disco"
-BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="board/stmicroelectronics/stm32f469-disco/linux/stm32f469-disco.dts"
BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox-minimal.config"
-BR2_PACKAGE_ZLIB=y
BR2_TARGET_ROOTFS_INITRAMFS=y
# BR2_TARGET_ROOTFS_TAR is not set
BR2_TARGET_AFBOOT_STM32=y
BR2_PACKAGE_HOST_OPENOCD=y
-BR2_PACKAGE_HOST_UTIL_LINUX=y
--
2.32.0
_______________________________________________
buildroot mailing list
buildroot@busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
next prev parent reply other threads:[~2021-08-25 18:19 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-25 18:18 [Buildroot] [PATCH 1/3] [PATCH 1/1] configs/stm32f469_disco_xip_defconfig: alternative defconfig for XIP Yauheni Saldatsenka
2021-08-25 18:18 ` Yauheni Saldatsenka [this message]
2021-08-28 14:57 ` [Buildroot] [PATCH 2/3] [PATCH v2 " Arnout Vandecappelle
2021-08-28 20:06 ` Yauheni Saldatsenka
2021-08-25 18:18 ` [Buildroot] [PATCH 3/3] [PATCH v3 " Yauheni Saldatsenka
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=20210825181858.801574-2-eugentoo@gmail.com \
--to=eugentoo@gmail.com \
--cc=buildroot@buildroot.org \
--cc=christophe.priouzeau@foss.st.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.