Skip to contentSkip to conversation

configs/stm32f469_disco_xip_defconfig: alternative defconfig for XIP

PATCH New Yauheni Saldatsenka 2 participants 5 messages Aug 25, 2021 – Aug 28, 2021 Arm STM32

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 configs/stm32f469_disco_xip_defconfig: alternative defconfig for XIP

Update STM32F469-disco configuration files to operate with new kernel.

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
- Remove outdated path which doesn't affect normal operation mode

---
 .../stm32f469-disco/flash.sh                  |  47 +++-
 .../stm32f469-disco/linux/defconfig           | 120 +++++++++
 .../stm32f469-disco/linux/stm32f469-disco.dts | 240 ++++++++++++++++++
 .../0002-kernel-start-address.patch           |  21 ++
 .../patches/afboot-stm32/0003-no-mpu.patch    |  22 ++
 configs/stm32f469_disco_xip_defconfig         |  24 ++
 6 files changed, 465 insertions(+), 9 deletions(-)
 create mode 100644 board/stmicroelectronics/stm32f469-disco/linux/defconfig
 create mode 100644 board/stmicroelectronics/stm32f469-disco/linux/stm32f469-disco.dts
 create mode 100644 board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0002-kernel-start-address.patch
 create mode 100644 board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0003-no-mpu.patch
 create mode 100644 configs/stm32f469_disco_xip_defconfig
board/stmicroelectronics/stm32f469-disco/flash.sh +38 -9
index 984d2b2599..176e1c9d2c 100755
@@ -1,18 +1,47 @@
 #!/bin/bash
 
 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
 
-${OUTPUT_DIR}/host/bin/openocd -f board/stm32f469discovery.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"
+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
+fi
+
+case "${BUILD_TYPE}" in
+	"xip")
+		${OUTPUT_DIR}/host/bin/openocd -f board/stm32f469discovery.cfg \
+					 -c "init" \
+					 -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 0x08010000" \
+					 -c "reset run" \
+					 -c "shutdown"
+		;;
+	"uboot")
+		FLASH_COMMAND=
+		${OUTPUT_DIR}/host/bin/openocd -f board/stm32f469discovery.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"
+	    ;;
+	*)
+		echo "Wrong build type. Please select from: xip, uboot"
+		;;
+esac
board/stmicroelectronics/stm32f469-disco/linux/defconfig new file +120 -0

120 lines not on this page · raw message

board/stmicroelectronics/stm32f469-disco/linux/stm32f469-disco.dts new file +240 -0

240 lines not on this page · raw message

board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0002-kernel-start-address.patch new file +21 -0
new file mode 100644
index 0000000000..614effa85b
@@ -0,0 +1,21 @@
+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);
+ }
board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0003-no-mpu.patch new file +22 -0
new file mode 100644
index 0000000000..bc66d2d0ef
@@ -0,0 +1,22 @@
+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();
+ 
configs/stm32f469_disco_xip_defconfig new file +24 -0
new file mode 100644
index 0000000000..81bdb0d6d6
@@ -0,0 +1,24 @@
+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_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
Signature · 6 lines
2.32.0

_______________________________________________
buildroot mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/buildroot
#1 lore raw

PATCH v2 1/1 configs/stm32f469_disco_xip_defconfig: alternative defconfig for XIP

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.

----
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

---
 .../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
board/stmicroelectronics/stm32f469-disco/flash.sh +2 -4
index 176e1c9d2c..0e130908aa 100755
@@ -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
board/stmicroelectronics/stm32f469-disco/linux/linux.config renamed from board/stmicroelectronics/stm32f469-disco/linux/defconfig +0 -0
similarity index 100%
rename from board/stmicroelectronics/stm32f469-disco/linux/defconfig
rename to board/stmicroelectronics/stm32f469-disco/linux/linux.config
board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0001-stm32f469-i-Update-kernel-start-address.patch new file +56 -0

56 lines not on this page · raw message

board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0002-kernel-start-address.patch deleted +0 -21
deleted file mode 100644
index 614effa85b..0000000000
@@ -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);
- }
board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0003-no-mpu.patch deleted +0 -22
deleted file mode 100644
index bc66d2d0ef..0000000000
@@ -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();
- 
board/stmicroelectronics/stm32f469-disco/patches/linux/0001-Use-default-dram-address-without-remapping.patch new file +38 -0
new file mode 100644
index 0000000000..68fe8380a2
@@ -0,0 +1,38 @@
+From 8ccf9f625d00138d86fb7d70f3efd58a8fb4d7ff Mon Sep 17 00:00:00 2001
+From: Yauheni Saldatsenka <[email protected]>
+Date: Mon, 23 Aug 2021 02:54:22 +0300
+Subject: [PATCH] Use default dram address without remapping
+
+Signed-off-by: Yauheni Saldatsenka <[email protected]>
+---
+ 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
+
board/stmicroelectronics/stm32f469-disco/readme.txt +20 -6
index c1e1d30e69..646f340382 100644
@@ -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>
configs/stm32f469_disco_xip_defconfig +1 -7
index 81bdb0d6d6..fd2946ab8b 100644
@@ -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
Signature · 6 lines
2.32.0

_______________________________________________
buildroot mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/buildroot
#2 lore raw

Hi Yauheni,

There were still a number of things not OK with this patch, but I've fixed them
up and applied to next, thanks.

First of all, it should have been only a single commit, not split over 3 for
the different versions. Separate commits should only be made when you do separate, more or less independent things. In this case, however, it's really a single change you're making (adding the new defconfig). So I've squashed everything into a single commit.

Quoted 11 lines · Yauheni Saldatsenka

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.

[snip]

board/stmicroelectronics/stm32f469-disco/linux/linux.config

Quoted 4 lines
board/stmicroelectronics/stm32f469-disco/linux/linux.config renamed from board/stmicroelectronics/stm32f469-disco/linux/defconfig +0 -0
similarity index 100%
rename from board/stmicroelectronics/stm32f469-disco/linux/defconfig
rename to board/stmicroelectronics/stm32f469-disco/linux/linux.config

linux/linux.config is not a very useful name, so I've moved it up one
directory. I also called it linux-xip.config, to distinguish it more clearly from the existing linux.fragment.

Quoted 6 lines
board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0001-stm32f469-i-Update-kernel-start-address.patch new file +0 -0
new file mode 100644
index 0000000000..d5d1e5a8ad

board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0001-stm32f469-i-Update-kernel-start-address.patch line 10

Quoted 10 lines
board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0001-stm32f469-i-Update-kernel-start-address.patch new file +10 -0
@@ -0,0 +1,56 @@
+From fe5f3a86d07e378baeeddc1dfecd0686d83aa42f Mon Sep 17 00:00:00 2001
+From: Yauheni Saldatsenka <[email protected]>
+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 <[email protected]>

Has this patch been sent upstream to afboot-stm32?

Quoted 21 lines
board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0001-stm32f469-i-Update-kernel-start-address.patch new file +21 -0
+---
+ 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);

board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0001-stm32f469-i-Update-kernel-start-address.patch line 41

Quoted 10 lines
board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0001-stm32f469-i-Update-kernel-start-address.patch new file +10 -0
++	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);

It's not clear how this is related to moving the kernel address...

board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0001-stm32f469-i-Update-kernel-start-address.patch line 49

Quoted 8 lines
board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0001-stm32f469-i-Update-kernel-start-address.patch new file +8 -0
+ 
+ 	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;

This also is not clear why it's removed.

I still applied the patch as is.

Quoted 6 lines
board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0001-stm32f469-i-Update-kernel-start-address.patch new file +6 -0
+-
+ 	start_kernel();
+ 
+ 	return 0;
+-- 
+2.32.0

[snip]

Quoted 16 lines
board/stmicroelectronics/stm32f469-disco/patches/linux/0001-Use-default-dram-address-without-remapping.patch new file +10 -0
new file mode 100644
index 0000000000..68fe8380a2
@@ -0,0 +1,38 @@
+From 8ccf9f625d00138d86fb7d70f3efd58a8fb4d7ff Mon Sep 17 00:00:00 2001
+From: Yauheni Saldatsenka <[email protected]>
+Date: Mon, 23 Aug 2021 02:54:22 +0300
+Subject: [PATCH] Use default dram address without remapping
+
+Signed-off-by: Yauheni Saldatsenka <[email protected]>
+---
+ arch/arm/boot/dts/stm32f469-disco.dts | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+

board/stmicroelectronics/stm32f469-disco/patches/linux/0001-Use-default-dram-address-without-remapping.patch line 20

Quoted 10 lines
board/stmicroelectronics/stm32f469-disco/patches/linux/0001-Use-default-dram-address-without-remapping.patch new file +10 -0
+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 {

It's good that you update the device tree with a patch now instead of copying
it. However, the full dts was still there in the board directory, but unused. So I removed it.

Also, there were a few changes that you didn't keep - but I guess those weren't
actually needed.

Quoted 23 lines
board/stmicroelectronics/stm32f469-disco/patches/linux/0001-Use-default-dram-address-without-remapping.patch new file +18 -0
+ 		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
+
board/stmicroelectronics/stm32f469-disco/readme.txt +0 -0
index c1e1d30e69..646f340382 100644

board/stmicroelectronics/stm32f469-disco/readme.txt STM32F469 Discovery · line 11

Quoted 8 lines
board/stmicroelectronics/stm32f469-disco/readme.txt +5 -0
@@ -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.

Very good readme! I've just added here a sentence to say that no SD card is
needed, to make that explicit.

Regards,
Arnout

Quoted 56 lines
board/stmicroelectronics/stm32f469-disco/readme.txt +15 -6
+   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>
configs/stm32f469_disco_xip_defconfig +1 -4
index 81bdb0d6d6..fd2946ab8b 100644
@@ -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"

configs/stm32f469_disco_xip_defconfig line 24

Quoted 10 lines
configs/stm32f469_disco_xip_defconfig +0 -3
 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

_______________________________________________
buildroot mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/buildroot

#3 lore raw

Hello Arnout.

Thanks for bringing your efforts to this patchset!

In case there would be any further questions feel free to ask.

Best regards,
Yauheni Saldatsenka

сб, 28 авг. 2021 г. в 17:57, Arnout Vandecappelle <[email protected]>:

Quoted 269 lines

Hi Yauheni,

There were still a number of things not OK with this patch, but I've
fixed them
up and applied to next, thanks.

First of all, it should have been only a single commit, not split over 3
for
the different versions. Separate commits should only be made when you do separate, more or less independent things. In this case, however, it's really a
single change you're making (adding the new defconfig). So I've squashed everything into a single commit.

Quoted 11 lines · Yauheni Saldatsenka

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.

[snip]

Review

Quoted 1 line
(quoted diff) +0 -0

b/board/stmicroelectronics/stm32f469-disco/linux/linux.config

Quoted 3 lines

similarity index 100%
rename from board/stmicroelectronics/stm32f469-disco/linux/defconfig rename to board/stmicroelectronics/stm32f469-disco/linux/linux.config

linux/linux.config is not a very useful name, so I've moved it up one
directory. I also called it linux-xip.config, to distinguish it more clearly
from the existing linux.fragment.

Quoted 1 line

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

Quoted 4 lines

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

board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0001-stm32f469-i-Update-kernel-start-address.patch line 10

Quoted 11 lines
board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0001-stm32f469-i-Update-kernel-start-address.patch new file +10 -0
@@ -0,0 +1,56 @@
+From fe5f3a86d07e378baeeddc1dfecd0686d83aa42f Mon Sep 17 00:00:00 2001
+From: Yauheni Saldatsenka <[email protected]>
+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 <[email protected]>

Has this patch been sent upstream to afboot-stm32?

Quoted 11 lines
board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0001-stm32f469-i-Update-kernel-start-address.patch new file +11 -0
+---
+ 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"

board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0001-stm32f469-i-Update-kernel-start-address.patch

Quoted 10 lines
board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0001-stm32f469-i-Update-kernel-start-address.patch new file +10 -0
+
++#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);

Review line 32

Quoted 1 line
(quoted diff) +1 -0
++    void (*kernel)(uint32_t reserved, uint32_t mach, uint32_t dt) =

(void (*)(uint32_t, uint32_t, uint32_t))(KERNEL_ADDR | 1);

board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0001-stm32f469-i-Update-kernel-start-address.patch line 41

Quoted 9 lines
board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0001-stm32f469-i-Update-kernel-start-address.patch new file +9 -0
+
+     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);

It's not clear how this is related to moving the kernel address...

board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0001-stm32f469-i-Update-kernel-start-address.patch line 49

Quoted 8 lines
board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0001-stm32f469-i-Update-kernel-start-address.patch new file +8 -0
+
+     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;

This also is not clear why it's removed.

I still applied the patch as is.

Quoted 6 lines
board/stmicroelectronics/stm32f469-disco/patches/afboot-stm32/0001-stm32f469-i-Update-kernel-start-address.patch new file +6 -0
+-
+     start_kernel();
+
+     return 0;
+--
+2.32.0

[snip]

Quoted 1 line

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

Quoted 4 lines

new file mode 100644
index 0000000000..68fe8380a2
--- /dev/null
+++

b/board/stmicroelectronics/stm32f469-disco/patches/linux/0001-Use-default-dram-address-without-remapping.patch

board/stmicroelectronics/stm32f469-disco/patches/linux/0001-Use-default-dram-address-without-remapping.patch line 11

Quoted 12 lines
board/stmicroelectronics/stm32f469-disco/patches/linux/0001-Use-default-dram-address-without-remapping.patch new file +11 -0
@@ -0,0 +1,38 @@
+From 8ccf9f625d00138d86fb7d70f3efd58a8fb4d7ff Mon Sep 17 00:00:00 2001
+From: Yauheni Saldatsenka <[email protected]>
+Date: Mon, 23 Aug 2021 02:54:22 +0300
+Subject: [PATCH] Use default dram address without remapping
+
+Signed-off-by: Yauheni Saldatsenka <[email protected]>
+---
+ 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

board/stmicroelectronics/stm32f469-disco/patches/linux/0001-Use-default-dram-address-without-remapping.patch line 20

Quoted 9 lines
board/stmicroelectronics/stm32f469-disco/patches/linux/0001-Use-default-dram-address-without-remapping.patch new file +9 -0
+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 {

It's good that you update the device tree with a patch now instead of
copying
it. However, the full dts was still there in the board directory, but unused. So
I removed it.

Also, there were a few changes that you didn't keep - but I guess those
weren't
actually needed.

Review

Quoted 19 lines
board/stmicroelectronics/stm32f469-disco/patches/linux/0001-Use-default-dram-address-without-remapping.patch new file +18 -0
+             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
+
(quoted diff) +0 -0

b/board/stmicroelectronics/stm32f469-disco/readme.txt

board/stmicroelectronics/stm32f469-disco/readme.txt STM32F469 Discovery · line 8

Quoted 9 lines

index c1e1d30e69..646f340382 100644

board/stmicroelectronics/stm32f469-disco/readme.txt +2 -0
@@ -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

board/stmicroelectronics/stm32f469-disco/readme.txt STM32F469 Discovery · line 10

Quoted 2 lines
board/stmicroelectronics/stm32f469-disco/readme.txt +2 -0
+   root filesystem from MMC.
+2. Internal flash memory stores simple afboot-stm32 bootloader, device

tree and

board/stmicroelectronics/stm32f469-disco/readme.txt STM32F469 Discovery · line 11

Quoted 1 line
board/stmicroelectronics/stm32f469-disco/readme.txt +1 -0
+   in place (XIP) kernel with built-in initramfs.

Very good readme! I've just added here a sentence to say that no SD card
is
needed, to make that explicit.

Regards,
Arnout

Quoted 12 lines
board/stmicroelectronics/stm32f469-disco/readme.txt +10 -0
+   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

board/stmicroelectronics/stm32f469-disco/readme.txt STM32F469 Discovery

Quoted 10 lines
board/stmicroelectronics/stm32f469-disco/readme.txt +2 -3
 
-  make stm32f469_disco_defconfig
-  make
+  "make"
 
 Flashing
 --------
 
-  ./board/stmicroelectronics/stm32f469-disco/flash.sh output/
+  ./board/stmicroelectronics/stm32f469-disco/flash.sh output/

<BUILD_TYPE>

board/stmicroelectronics/stm32f469-disco/readme.txt STM32F469 Discovery

Quoted 10 lines
board/stmicroelectronics/stm32f469-disco/readme.txt +3 -3
-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,

Review

Quoted 4 lines
board/stmicroelectronics/stm32f469-disco/readme.txt +0 -0
 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>
(quoted diff) +0 -0

b/configs/stm32f469_disco_xip_defconfig

configs/stm32f469_disco_xip_defconfig line 6

Quoted 12 lines

index 81bdb0d6d6..fd2946ab8b 100644

configs/stm32f469_disco_xip_defconfig +0 -2
@@ -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"

configs/stm32f469_disco_xip_defconfig

Quoted 3 lines
configs/stm32f469_disco_xip_defconfig +0 -0
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 

-BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/stmicroelectronics/stm32f469-disco/linux/defconfig"

Quoted 1 line

+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/stmicroelectronics/stm32f469-disco/linux/linux.config"

Quoted 6 lines

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"

Quoted 9 lines

configs/stm32f469_disco_xip_defconfig line 24

Quoted 8 lines

BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox-minimal.config"

configs/stm32f469_disco_xip_defconfig +0 -2
-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

_______________________________________________
buildroot mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/buildroot

#4 lore raw

PATCH v3 1/1 configs/stm32f469_disco_xip_defconfig: alternative defconfig for XIP

In reply to Yauheni Saldatsenka

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.

----
v2 -> v3:
- Create separate readme.txt for xip configuration
- Create separate flash.sh script for xip configuration

---
 .../stm32f469-disco/flash.sh                  | 45 ++++---------------
 .../stm32f469-disco/flash_xip.sh              | 20 +++++++++
 .../stm32f469-disco/readme.txt                | 26 +++--------
 .../stm32f469-disco/readme_xip.txt            | 22 +++++++++
 4 files changed, 57 insertions(+), 56 deletions(-)
 create mode 100644 board/stmicroelectronics/stm32f469-disco/flash_xip.sh
 create mode 100644 board/stmicroelectronics/stm32f469-disco/readme_xip.txt
board/stmicroelectronics/stm32f469-disco/flash.sh +9 -36
index 0e130908aa..984d2b2599 100755
@@ -1,45 +1,18 @@
 #!/bin/bash
 
 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
-    echo "ERROR: no build type specified, please select 'xip' or 'uboot'."
-    echo "Usage: $0 OUTPUT_DIR $1 BUILD_TYPE"
-    exit 1
-fi
-
-case "${BUILD_TYPE}" in
-	"xip")
-		${OUTPUT_DIR}/host/bin/openocd -f board/stm32f469discovery.cfg \
-					 -c "init" \
-					 -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 0x08010000" \
-					 -c "reset run" \
-					 -c "shutdown"
-		;;
-	"uboot")
-		FLASH_COMMAND=
-		${OUTPUT_DIR}/host/bin/openocd -f board/stm32f469discovery.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"
-	    ;;
-	*)
-		echo "Wrong build type. Please select from: xip, uboot"
-		;;
-esac
+${OUTPUT_DIR}/host/bin/openocd -f board/stm32f469discovery.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"
board/stmicroelectronics/stm32f469-disco/flash_xip.sh new file +20 -0
new file mode 100644
index 0000000000..b5a067cee5
@@ -0,0 +1,20 @@
+#!/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/stm32f469discovery.cfg \
+  -c "init" \
+  -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 0x08010000" \
+  -c "reset run" \
+  -c "shutdown"
board/stmicroelectronics/stm32f469-disco/readme.txt +6 -20
index 646f340382..c1e1d30e69 100644
@@ -4,37 +4,23 @@ 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"
+  make stm32f469_disco_defconfig
+  make
 
 Flashing
 --------
 
-  ./board/stmicroelectronics/stm32f469-disco/flash.sh output/ <BUILD_TYPE>
+  ./board/stmicroelectronics/stm32f469-disco/flash.sh output/
 
-  <BUILD_TYPE> can be "xip" or "uboot"
+It will flash the U-boot bootloader.
 
-Creating SD card for u-boot setup
+Creating SD card
 ----------------
 
-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>
board/stmicroelectronics/stm32f469-disco/readme_xip.txt new file +22 -0
new file mode 100644
index 0000000000..c4c93cef6c
@@ -0,0 +1,22 @@
+STM32F469 Discovery
+===================
+
+This tutorial describes how to use the predefined Buildroot
+configuration for the STM32F469 Discovery evaluation platform.
+
+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
+--------
+
+  make stm32f469_disco_xip_defconfig
+  make
+
+Flashing
+--------
+
+  ./board/stmicroelectronics/stm32f469-disco/flash.sh output/
+
+It will flash binary to internal flash memory.
Signature · 6 lines
2.32.0

_______________________________________________
buildroot mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/buildroot