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