]>
wirehaze git hosting - stm32f411ceu6.git/blob - kernel.c
1 extern unsigned int _sram_end
;
2 extern unsigned int _data_vma_start
;
3 extern unsigned int _data_vma_end
;
4 extern unsigned int _data_lma_start
;
5 extern unsigned int _bss_vma_start
;
6 extern unsigned int _bss_vma_end
;
8 #define RCC_AHB1 ((volatile unsigned int * const) 0x40023830)
9 #define GPIOC_MODER ((volatile unsigned int * const) 0x40020800)
10 #define GPIOC_ODR ((volatile unsigned int * const) 0x40020814)
15 volatile unsigned int i
;
16 for (i
= 0; i
< 500000; i
++);
22 unsigned int *src
, *dst
;
24 /* relocate .data to sram */
25 src
= &_data_lma_start
;
26 dst
= &_data_vma_start
;
28 while (dst
< &_data_vma_end
)
32 dst
= &_bss_vma_start
;
34 while (dst
< &_bss_vma_end
)
38 *RCC_AHB1
|= (1u << 2);
39 *GPIOC_MODER
&= ~(3u << 26);
40 *GPIOC_MODER
|= (1u << 26);
44 *GPIOC_ODR
^= (1u << 13);
49 __attribute__ ((section (".vtbl"), used
))
50 static unsigned long const vector_table
[] = {
51 (unsigned long) &_sram_end
,
52 (unsigned long) reset_handler
,