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 For better binary size optimization gcc LTO is turned on. Signed-off-by: Yauheni Saldatsenka <eugentoo@gmail.com> [Arnout: - squash 3 patches into 1; - remove unused dts file; - move linux/linux.config to linux-xip.config; - add a sentence to readme to say SD card is not needed. ] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
This commit is contained in:
parent
2f910229ef
commit
a3e3d9c198
20
board/stmicroelectronics/stm32f469-disco/flash_xip.sh
Normal file
20
board/stmicroelectronics/stm32f469-disco/flash_xip.sh
Normal file
|
@ -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"
|
120
board/stmicroelectronics/stm32f469-disco/linux-xip.config
Normal file
120
board/stmicroelectronics/stm32f469-disco/linux-xip.config
Normal file
|
@ -0,0 +1,120 @@
|
|||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
CONFIG_KERNEL_XZ=y
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_LOG_BUF_SHIFT=12
|
||||
CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=10
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_INITRAMFS_SOURCE="${BR_BINARIES_DIR}/rootfs.cpio"
|
||||
# CONFIG_RD_GZIP is not set
|
||||
# CONFIG_RD_BZIP2 is not set
|
||||
# CONFIG_RD_LZMA is not set
|
||||
# CONFIG_RD_XZ is not set
|
||||
# CONFIG_RD_LZO is not set
|
||||
# CONFIG_RD_LZ4 is not set
|
||||
# CONFIG_RD_ZSTD is not set
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
# CONFIG_MULTIUSER is not set
|
||||
# CONFIG_SYSFS_SYSCALL is not set
|
||||
# CONFIG_FHANDLE is not set
|
||||
# CONFIG_POSIX_TIMERS is not set
|
||||
# CONFIG_BUG is not set
|
||||
# CONFIG_BASE_FULL is not set
|
||||
# CONFIG_FUTEX is not set
|
||||
# CONFIG_EPOLL is not set
|
||||
# CONFIG_SIGNALFD is not set
|
||||
# CONFIG_TIMERFD is not set
|
||||
# CONFIG_EVENTFD is not set
|
||||
# CONFIG_AIO is not set
|
||||
# CONFIG_IO_URING is not set
|
||||
# CONFIG_ADVISE_SYSCALLS is not set
|
||||
# CONFIG_MEMBARRIER is not set
|
||||
# CONFIG_KALLSYMS is not set
|
||||
CONFIG_KCMP=y
|
||||
# CONFIG_RSEQ is not set
|
||||
CONFIG_EMBEDDED=y
|
||||
# CONFIG_VM_EVENT_COUNTERS is not set
|
||||
# CONFIG_COMPAT_BRK is not set
|
||||
CONFIG_SLOB=y
|
||||
# CONFIG_SLAB_MERGE_DEFAULT is not set
|
||||
# CONFIG_MMU is not set
|
||||
CONFIG_ARCH_STM32=y
|
||||
# CONFIG_MACH_STM32F429 is not set
|
||||
# CONFIG_MACH_STM32F746 is not set
|
||||
# CONFIG_MACH_STM32F769 is not set
|
||||
# CONFIG_MACH_STM32H743 is not set
|
||||
CONFIG_CPU_V7M_NUM_IRQ=240
|
||||
# CONFIG_ARM_DMA_MEM_BUFFERABLE is not set
|
||||
CONFIG_SET_MEM_PARAM=y
|
||||
CONFIG_DRAM_BASE=0xc0000000
|
||||
CONFIG_DRAM_SIZE=0x01000000
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_ATAGS is not set
|
||||
CONFIG_XIP_KERNEL=y
|
||||
CONFIG_XIP_PHYS_ADDR=0x08010000
|
||||
CONFIG_XIP_DEFLATED_DATA=y
|
||||
# CONFIG_SUSPEND is not set
|
||||
# CONFIG_STACKPROTECTOR is not set
|
||||
# CONFIG_COMPAT_32BIT_TIME is not set
|
||||
# CONFIG_GCC_PLUGINS is not set
|
||||
# CONFIG_BLOCK is not set
|
||||
CONFIG_BINFMT_FLAT=y
|
||||
CONFIG_BINFMT_SHARED_FLAT=y
|
||||
# CONFIG_COREDUMP is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
# CONFIG_STANDALONE is not set
|
||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||
# CONFIG_FW_LOADER is not set
|
||||
# CONFIG_ALLOW_DEV_COREDUMP is not set
|
||||
CONFIG_EEPROM_93CX6=y
|
||||
# CONFIG_INPUT is not set
|
||||
# CONFIG_VT is not set
|
||||
# CONFIG_UNIX98_PTYS is not set
|
||||
# CONFIG_LEGACY_PTYS is not set
|
||||
# CONFIG_LDISC_AUTOLOAD is not set
|
||||
CONFIG_SERIAL_STM32=y
|
||||
CONFIG_SERIAL_STM32_CONSOLE=y
|
||||
# CONFIG_DEVMEM is not set
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_WATCHDOG=y
|
||||
CONFIG_MFD_STM32_TIMERS=y
|
||||
# CONFIG_USB_SUPPORT is not set
|
||||
CONFIG_NEW_LEDS=y
|
||||
CONFIG_LEDS_CLASS=y
|
||||
CONFIG_LEDS_GPIO=y
|
||||
CONFIG_LEDS_TRIGGERS=y
|
||||
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_DRV_STM32=y
|
||||
CONFIG_DMADEVICES=y
|
||||
CONFIG_STM32_DMA=y
|
||||
CONFIG_STM32_DMAMUX=y
|
||||
CONFIG_STM32_MDMA=y
|
||||
CONFIG_SYNC_FILE=y
|
||||
# CONFIG_VIRTIO_MENU is not set
|
||||
# CONFIG_VHOST_MENU is not set
|
||||
CONFIG_IIO=y
|
||||
CONFIG_IIO_BUFFER=y
|
||||
CONFIG_IIO_TRIGGERED_BUFFER=y
|
||||
CONFIG_IIO_STM32_TIMER_TRIGGER=y
|
||||
# CONFIG_FILE_LOCKING is not set
|
||||
# CONFIG_DNOTIFY is not set
|
||||
# CONFIG_INOTIFY_USER is not set
|
||||
# CONFIG_PROC_SYSCTL is not set
|
||||
CONFIG_CONFIGFS_FS=y
|
||||
# CONFIG_MISC_FILESYSTEMS is not set
|
||||
CONFIG_NLS=y
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=15
|
||||
CONFIG_CONSOLE_LOGLEVEL_QUIET=15
|
||||
CONFIG_MESSAGE_LOGLEVEL_DEFAULT=7
|
||||
# CONFIG_SYMBOLIC_ERRNAME is not set
|
||||
CONFIG_DEBUG_INFO=y
|
||||
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
|
||||
CONFIG_DEBUG_FS=y
|
||||
# CONFIG_DEBUG_MISC is not set
|
||||
# CONFIG_SCHED_DEBUG is not set
|
||||
# CONFIG_RCU_TRACE is not set
|
||||
# CONFIG_RUNTIME_TESTING_MENU is not set
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
24
board/stmicroelectronics/stm32f469-disco/readme_xip.txt
Normal file
24
board/stmicroelectronics/stm32f469-disco/readme_xip.txt
Normal file
|
@ -0,0 +1,24 @@
|
|||
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. No external flash or SD card
|
||||
is needed.
|
||||
|
||||
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.
|
18
configs/stm32f469_disco_xip_defconfig
Normal file
18
configs/stm32f469_disco_xip_defconfig
Normal file
|
@ -0,0 +1,18 @@
|
|||
BR2_arm=y
|
||||
BR2_cortex_m4=y
|
||||
BR2_GLOBAL_PATCH_DIR="board/stmicroelectronics/stm32f469-disco/patches"
|
||||
# BR2_UCLIBC_INSTALL_UTILS is not set
|
||||
BR2_GCC_ENABLE_LTO=y
|
||||
BR2_LINUX_KERNEL=y
|
||||
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/stmicroelectronics/stm32f469-disco/linux-xip.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_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox-minimal.config"
|
||||
BR2_TARGET_ROOTFS_INITRAMFS=y
|
||||
# BR2_TARGET_ROOTFS_TAR is not set
|
||||
BR2_TARGET_AFBOOT_STM32=y
|
||||
BR2_PACKAGE_HOST_OPENOCD=y
|
Loading…
Reference in a new issue