1*4882a593SmuzhiyunFrom fe5f3a86d07e378baeeddc1dfecd0686d83aa42f Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Yauheni Saldatsenka <eugentoo@gmail.com> 3*4882a593SmuzhiyunDate: Sat, 14 Aug 2021 18:54:51 +0300 4*4882a593SmuzhiyunSubject: [PATCH] stm32f469-i: Update kernel start address 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunAs of GNU/Linux v5.12 kernel device tree binary grows above 0x08008000 7*4882a593Smuzhiyunand overwrites kernel binary 8*4882a593SmuzhiyunTherefore this commit moves kernel to the next flash bank 9*4882a593Smuzhiyun 10*4882a593SmuzhiyunSigned-off-by: Yauheni Saldatsenka <eugentoo@gmail.com> 11*4882a593Smuzhiyun--- 12*4882a593Smuzhiyun stm32f469i-disco.c | 7 +++---- 13*4882a593Smuzhiyun 1 file changed, 3 insertions(+), 4 deletions(-) 14*4882a593Smuzhiyun 15*4882a593Smuzhiyundiff --git a/stm32f469i-disco.c b/stm32f469i-disco.c 16*4882a593Smuzhiyunindex 2da1f4b..46fc06a 100644 17*4882a593Smuzhiyun--- a/stm32f469i-disco.c 18*4882a593Smuzhiyun+++ b/stm32f469i-disco.c 19*4882a593Smuzhiyun@@ -6,6 +6,7 @@ 20*4882a593Smuzhiyun #include "gpio.h" 21*4882a593Smuzhiyun #include "mpu.h" 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun+#define KERNEL_ADDR 0x08010000 24*4882a593Smuzhiyun #define CONFIG_HSE_HZ 8000000 25*4882a593Smuzhiyun #define CONFIG_PLL_M 8 26*4882a593Smuzhiyun #define CONFIG_PLL_N 360 27*4882a593Smuzhiyun@@ -85,7 +86,7 @@ static void fmc_wait_busy(void) 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun void start_kernel(void) 30*4882a593Smuzhiyun { 31*4882a593Smuzhiyun- void (*kernel)(uint32_t reserved, uint32_t mach, uint32_t dt) = (void (*)(uint32_t, uint32_t, uint32_t))(0x08008000 | 1); 32*4882a593Smuzhiyun+ void (*kernel)(uint32_t reserved, uint32_t mach, uint32_t dt) = (void (*)(uint32_t, uint32_t, uint32_t))(KERNEL_ADDR | 1); 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun kernel(0, ~0UL, 0x08004000); 35*4882a593Smuzhiyun } 36*4882a593Smuzhiyun@@ -102,7 +103,7 @@ int main(void) 37*4882a593Smuzhiyun volatile uint32_t *SYSCFG_MEMRMP = (void *)(SYSCFG_BASE + 0x00); 38*4882a593Smuzhiyun int i; 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun- mpu_config(0x0); 41*4882a593Smuzhiyun+ mpu_config(0xc0000000); 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun if (*FLASH_CR & FLASH_CR_LOCK) { 44*4882a593Smuzhiyun *FLASH_KEYR = 0x45670123; 45*4882a593Smuzhiyun@@ -195,8 +196,6 @@ int main(void) 46*4882a593Smuzhiyun usart_setup(usart_base, 45000000); 47*4882a593Smuzhiyun usart_putch(usart_base, '.'); 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun- *SYSCFG_MEMRMP = 0x4; 50*4882a593Smuzhiyun- 51*4882a593Smuzhiyun start_kernel(); 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun return 0; 54*4882a593Smuzhiyun-- 55*4882a593Smuzhiyun2.32.0 56*4882a593Smuzhiyun 57