Updated and Validated
[betaflight.git] / src / link / stm32_flash_h750_128k.ld
blob727da9f001337b62a3bfd1160b57d0f1163c5ed0
1 /*
2 *****************************************************************************
3 **
4 **  File        : stm32_flash_h750_128k.ld
5 **
6 **  Abstract    : Linker script for STM32H750xB Device with
7 **                512K AXI-RAM mapped onto AXI bus on D1 domain
8 **                128K SRAM1 mapped on D2 domain
9 **                128K SRAM2 mapped on D2 domain
10 **                 32K SRAM3 mapped on D2 domain
11 **                 64K SRAM4 mapped on D3 domain
12 **                 64K ITCM
13 **                128K DTCM
15 *****************************************************************************
18 /* Entry Point */
19 ENTRY(Reset_Handler)
22 0x00000000 to 0x0000FFFF   64K ITCM
23 0x20000000 to 0x2001FFFF  128K DTCM
24 0x24000000 to 0x2407FFFF  512K AXI SRAM, D1 domain, main RAM
25 0x30000000 to 0x3001FFFF  128K SRAM1, D2 domain
26 0x30020000 to 0x3003FFFF  128K SRAM2, D2 domain
27 0x30040000 to 0x30047FFF   32K SRAM3, D2 domain, unused
28 0x38000000 to 0x3800FFFF   64K SRAM4, D3 domain, unused
29 0x38800000 to 0x38800FFF    4K BACKUP SRAM, Backup domain, unused
31 0x08000000 to 0x0801FFFF  128K isr vector, startup code, firmware, no config! // FLASH_Sector_0
34 /* Specify the memory areas */
35 MEMORY
37     FLASH (rx)        : ORIGIN = 0x08000000, LENGTH = 128K
39     ITCM_RAM (rwx)    : ORIGIN = 0x00000000, LENGTH = 64K
40     DTCM_RAM (rwx)    : ORIGIN = 0x20000000, LENGTH = 128K
41     RAM (rwx)         : ORIGIN = 0x24000000, LENGTH = 512K
43     D2_RAM (rwx)      : ORIGIN = 0x30000000, LENGTH = 256K /* SRAM1 + SRAM2 */
45     MEMORY_B1 (rx)    : ORIGIN = 0x60000000, LENGTH = 0K
46     QUADSPI (rx)      : ORIGIN = 0x90000000, LENGTH = 0K 
49 REGION_ALIAS("STACKRAM", DTCM_RAM)
50 REGION_ALIAS("FASTRAM", DTCM_RAM)
51 REGION_ALIAS("MAIN", FLASH)
53 INCLUDE "stm32_h750_common.ld"
55 SECTIONS
57   /* used during startup to initialized dmaram_data */
58   _sdmaram_idata = LOADADDR(.dmaram_data);
60   . = ALIGN(32);
61   .dmaram_data :
62   {
63     PROVIDE(dmaram_start = .);
64     _sdmaram = .;
65     _dmaram_start__ = _sdmaram;
66     _sdmaram_data = .;        /* create a global symbol at data start */
67     *(.dmaram_data)           /* .data sections */
68     *(.dmaram_data*)          /* .data* sections */
69     . = ALIGN(32);
70     _edmaram_data = .;        /* define a global symbol at data end */
71   } >RAM AT >FLASH
73   . = ALIGN(32);
74   .dmaram_bss (NOLOAD) :
75   {
76     _sdmaram_bss = .;
77     __dmaram_bss_start__ = _sdmaram_bss;
78     *(.dmaram_bss)
79     *(SORT_BY_ALIGNMENT(.dmaram_bss*))
80     . = ALIGN(32);
81     _edmaram_bss = .;
82     __dmaram_bss_end__ = _edmaram_bss;
83   } >RAM
85   . = ALIGN(32);
86   .DMA_RAM (NOLOAD) :
87   {
88     KEEP(*(.DMA_RAM))
89     PROVIDE(dmaram_end = .);
90     _edmaram = .;
91     _dmaram_end__ = _edmaram;
92   } >RAM
94   .DMA_RW_D2 (NOLOAD) :
95   {
96     . = ALIGN(32);
97     PROVIDE(dmarw_start = .);
98     _sdmarw = .;
99     _dmarw_start__ = _sdmarw;
100     KEEP(*(.DMA_RW))
101     PROVIDE(dmarw_end = .);
102     _edmarw = .;
103     _dmarw_end__ = _edmarw;
104   } >D2_RAM
106   .DMA_RW_AXI (NOLOAD) :
107   {
108     . = ALIGN(32);
109     PROVIDE(dmarwaxi_start = .);
110     _sdmarwaxi = .;
111     _dmarwaxi_start__ = _sdmarwaxi;
112     KEEP(*(.DMA_RW_AXI))
113     PROVIDE(dmarwaxi_end = .);
114     _edmarwaxi = .;
115     _dmarwaxi_end__ = _edmarwaxi;
116   } >RAM
117   }
119 INCLUDE "stm32_h750_common_post.ld"