From aac0081929eea88ca0e2889c424422a25982cd53 Mon Sep 17 00:00:00 2001 From: Alex Dolzhenkov Date: Tue, 29 Nov 2022 21:28:28 +1300 Subject: [PATCH] Fix linker script to prevent using not available flash memory --- gcc_nrf52-mcuboot.ld | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/gcc_nrf52-mcuboot.ld b/gcc_nrf52-mcuboot.ld index 81b318c5..c18875b6 100644 --- a/gcc_nrf52-mcuboot.ld +++ b/gcc_nrf52-mcuboot.ld @@ -1,11 +1,39 @@ -/* Linker script to configure memory regions. */ +/**************************************************************** + * Memory map configuration for using application with MCU-boot * + ****************************************************************/ +/* + * Internal nRF52 flash memory: + * 0x00000000: MCUBoot(28 kB) + * 0x00007000: Reboot logs (4 kB) + * 0x00008000: MCUBoot header (0x20 bytes) + * 0x00008020: Application (463+ kB) + * 0x0007be50: MCUBoot image trailer (432 bytes) + * 0x0007c000: MCUBoot Scratch partition (4 kB) + * 0x0007d000: unused (12 kB) + * + * SPI flash: + * 0x00000000: Bootloader Assets, like Boot Graphic (256 kB) + * 0x00040000: Application 2 (including MCUBoot header) (464 kB) + * 0x000b4000: User files - littlefs (3376 kB) + */ SEARCH_DIR(.) GROUP(-lgcc -lc -lnosys) +MCUBOOT_SIZE = 0x8000; +MCUBOOT_APP_IMAGE_HEADER_SIZE = 0x20; +MCUBOOT_APP_IMAGE_TRAILER_SIZE = 432; +APP_OFFSET = MCUBOOT_SIZE + MCUBOOT_APP_IMAGE_HEADER_SIZE; +APP_SIZE = 464K - MCUBOOT_APP_IMAGE_HEADER_SIZE - MCUBOOT_APP_IMAGE_TRAILER_SIZE; +SCRATCH_OFFSET = 0x7c000; +SCRATCH_SIZE = 4K; + MEMORY { - FLASH (rx) : ORIGIN = 0x08020, LENGTH = 0x78000 + /* MCUBOOT (r) : ORIGIN = 0x0, LENGTH = MCUBOOT_SIZE */ + FLASH (rx) : ORIGIN = APP_OFFSET, LENGTH = APP_SIZE + /* SCRATCH (r) : ORIGIN = SCRATCH_OFFSET, LENGTH = SCRATCH_SIZE */ + SPARE_SPACE (r) : ORIGIN = SCRATCH_OFFSET + SCRATCH_SIZE, LENGTH = 12K RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 64K }