diff --git a/radio/src/boards/generic_stm32/linker/common_sections.ld b/radio/src/boards/generic_stm32/linker/common_sections.ld index 63adae8c6..73cd9e886 100644 --- a/radio/src/boards/generic_stm32/linker/common_sections.ld +++ b/radio/src/boards/generic_stm32/linker/common_sections.ld @@ -1,11 +1,11 @@ /* C/C++ Exception handling (not used) */ -.ARM.extab : +.ARM.extab (READONLY) : { *(.ARM.extab* .gnu.linkonce.armextab.*) } > REGION_TEXT AT> REGION_TEXT_STORAGE -.ARM : +.ARM (READONLY) : { PROVIDE(__exidx_start = .); *(.ARM.exidx* .gnu.linkonce.armexidx.*) @@ -13,7 +13,7 @@ } > REGION_TEXT AT> REGION_TEXT_STORAGE /* Bootstrap code to load ISR vector and code sections */ -.bootstrap : +.bootstrap (READONLY) : { *(.bootstrap) } > REGION_TEXT_STORAGE @@ -32,7 +32,7 @@ _sidata = LOADADDR(.data); /* Uninitialized data section */ -.bss(NOLOAD) : AT (ADDR(.bss)) +.bss (NOLOAD) : AT (ADDR(.bss)) { . = ALIGN(4); /* This is used by the startup in order to initialize the .bss secion */ diff --git a/radio/src/boards/generic_stm32/linker/firmware.ld b/radio/src/boards/generic_stm32/linker/firmware.ld index 41f7f43ce..74ef8cf0d 100644 --- a/radio/src/boards/generic_stm32/linker/firmware.ld +++ b/radio/src/boards/generic_stm32/linker/firmware.ld @@ -15,7 +15,7 @@ SECTIONS } > REGION_BOOTLOADER /* Used only with H7 */ - .firmware_header : + .firmware_header (READONLY) : { KEEP(*(.fwdescription)) } > REGION_TEXT AT> REGION_TEXT_STORAGE @@ -34,7 +34,7 @@ SECTIONS _isr_load = LOADADDR(.isr_vector); /* Main code section */ - .text : + .text (READONLY) : { FILL(0xFFFF) CREATE_OBJECT_SYMBOLS diff --git a/radio/src/boards/generic_stm32/linker/stm32h750_sdram/bootloader/layout.ld b/radio/src/boards/generic_stm32/linker/stm32h750_sdram/bootloader/layout.ld index 5a951ede4..a22051763 100644 --- a/radio/src/boards/generic_stm32/linker/stm32h750_sdram/bootloader/layout.ld +++ b/radio/src/boards/generic_stm32/linker/stm32h750_sdram/bootloader/layout.ld @@ -1,6 +1,6 @@ /* SDRAM definitions */ -SDRAM_START = DEFINED(__SDRAM_START__) ? __SDRAM_START__ : 0xC0000000; -SDRAM_SIZE = DEFINED(__SDRAM_SIZE__) ? __SDRAM_SIZE__ : 8192K; +SDRAM_START = DEFINED(__sdram_start) ? __sdram_start : 0xC0000000; +SDRAM_SIZE = DEFINED(__sdram_size) ? __sdram_size : 8192K; /* Highest heap address */ HEAP_ADDRESS = SDRAM_START + SDRAM_SIZE; @@ -9,7 +9,7 @@ HEAP_ADDRESS = SDRAM_START + SDRAM_SIZE; STACK_ADDRESS = ORIGIN(DTCMRAM) + LENGTH(DTCMRAM) - 16; /* end of RAM */ /* Maximum bootloader code size */ -BOOTLOADER_SIZE = 0x20000; +BOOTLOADER_SIZE = 0x10000; /* Required amount of stack for interrupt stack (Main stack) */ MAIN_STACK_SIZE = 8192; @@ -30,7 +30,8 @@ MEMORY } REGION_ALIAS("REGION_TEXT_STORAGE", FLASH); -REGION_ALIAS("REGION_TEXT", FLASH); -REGION_ALIAS("REGION_DATA", DTCMRAM); -REGION_ALIAS("REGION_BSS", RAM_D1); -REGION_ALIAS("REGION_RAM", RAM_D1); +REGION_ALIAS("REGION_TEXT", ITCMRAM); +REGION_ALIAS("REGION_ISR_VECT", DTCMRAM); +REGION_ALIAS("REGION_DATA", DTCMRAM); +REGION_ALIAS("REGION_BSS", RAM_D1); +REGION_ALIAS("REGION_RAM", RAM_D1); diff --git a/radio/src/boards/generic_stm32/linker/stm32h750_sdram/layout.ld b/radio/src/boards/generic_stm32/linker/stm32h750_sdram/layout.ld index 1a635aad1..7f9454016 100644 --- a/radio/src/boards/generic_stm32/linker/stm32h750_sdram/layout.ld +++ b/radio/src/boards/generic_stm32/linker/stm32h750_sdram/layout.ld @@ -1,6 +1,6 @@ /* SDRAM definitions */ -SDRAM_START = DEFINED(__SDRAM_START__) ? __SDRAM_START__ : 0xC0000000; -SDRAM_SIZE = DEFINED(__SDRAM_SIZE__) ? __SDRAM_SIZE__ : 8192K; +SDRAM_START = DEFINED(__sdram_start) ? __sdram_start : 0xC0000000; +SDRAM_SIZE = DEFINED(__sdram_size) ? __sdram_size : 8192K; /* Highest heap address */ HEAP_ADDRESS = SDRAM_START + SDRAM_SIZE; @@ -9,14 +9,13 @@ HEAP_ADDRESS = SDRAM_START + SDRAM_SIZE; STACK_ADDRESS = ORIGIN(DTCMRAM) + LENGTH(DTCMRAM); /* end of RAM */ /* Maximum bootloader code size */ -BOOTLOADER_SIZE = 0x20000; +BOOTLOADER_SIZE = 0x10000; /* Required amount of stack for interrupt stack (Main stack) */ MAIN_STACK_SIZE = 8192; /* Generate a link error if heap and stack don't fit into RAM */ MIN_HEAP_SIZE = 4096k; /* required amount of heap */ -/*_Min_Stack_Size = 0x400; /* required amount of stack */ /* Specify the memory areas */ MEMORY @@ -28,13 +27,13 @@ MEMORY RAM_D2 (xrw) : ORIGIN = 0x30000000, LENGTH = 288K RAM_D3 (xrw) : ORIGIN = 0x38000000, LENGTH = 64K SDRAM (rwx) : ORIGIN = SDRAM_START, LENGTH = SDRAM_SIZE - QSPIFLASH (rx) : ORIGIN = 0x90000000, LENGTH = 8M + NORFLASH (rx) : ORIGIN = 0x90000000, LENGTH = 8M } REGION_ALIAS("REGION_BOOTLOADER", FLASH); -REGION_ALIAS("REGION_ISR_VECT", DTCMRAM); -REGION_ALIAS("REGION_TEXT_STORAGE", QSPIFLASH); +REGION_ALIAS("REGION_TEXT_STORAGE", NORFLASH); REGION_ALIAS("REGION_TEXT", SDRAM); +REGION_ALIAS("REGION_ISR_VECT", DTCMRAM); REGION_ALIAS("REGION_DATA", DTCMRAM); REGION_ALIAS("REGION_BSS", RAM_D1); REGION_ALIAS("REGION_RAM", RAM_D1);