The uicr_bootloader_start_address and .uicr_mbr_params_page have no NOLOAD directive (in all bootloader examples). With objcopy this will generate large object files. Locations like 0x10001014 lead to file sizes of approx. 256 MB.
SECTIONS { . = ALIGN(4); .uicr_bootloader_start_address : { PROVIDE(__start_uicr_bootloader_start_address = .); KEEP(*(SORT(.uicr_bootloader_start_address*))) PROVIDE(__stop_uicr_bootloader_start_address = .); } > uicr_bootloader_start_address . = ALIGN(4); .uicr_mbr_params_page : { PROVIDE(__start_uicr_mbr_params_page = .); KEEP(*(SORT(.uicr_mbr_params_page*))) PROVIDE(__stop_uicr_mbr_params_page = .); } > uicr_mbr_params_page . = ALIGN(4); .mbr_params_page(NOLOAD) : { PROVIDE(__start_mbr_params_page = .); KEEP(*(SORT(.mbr_params_page*))) PROVIDE(__stop_mbr_params_page = .); } > mbr_params_page . = ALIGN(4); .bootloader_settings_page(NOLOAD) : { PROVIDE(__start_bootloader_settings_page = .); KEEP(*(SORT(.bootloader_settings_page*))) PROVIDE(__stop_bootloader_settings_page = .); } > bootloader_settings_page }