The image add successfully but it does not work to nRF52832, if I do programming softdevice in nRFGO or command line then everything works fine.
I don't know why softdevice could not be an image file add into IAR. does anyone did try it before?
Actually there is a missing step in previous advice for IAR and using a combined programming action with application and SoftDevice. The build steps are as before, and the Softdevice is added via the following but Flash Loader does not work and so must be unchecked:
Options->Debugger->Images:
Download Extra Image
[
Checked
]
Path:
blah\blah\s132_nrf52_5.1.0_softdevice.hex
Offset:
0
Options->Debugger->Download:
Verify Download [
Checked
]
Use Flash Loader: [
Un-Checked
]
This works as-is with the vanilla linker icf file and standard SoftDevice settings (Nordic Uart example based) which doesn't need editing:
/*###ICF### Section handled by ICF editor, don't touch! ****/
/*-Editor annotation file-*/
/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
/*-Specials-*/
define symbol __ICFEDIT_intvec_start__ = 0x26000;
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__ = 0x26000;
define symbol __ICFEDIT_region_ROM_end__ = 0x7ffff;
define symbol __ICFEDIT_region_RAM_start__ = 0x20002a98;
define symbol __ICFEDIT_region_RAM_end__ = 0x2000ffff;
export symbol __ICFEDIT_region_RAM_start__;
export symbol __ICFEDIT_region_RAM_end__;
/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__ = 8192;
define symbol __ICFEDIT_size_heap__ = 8192;
/**** End of ICF editor section. ###ICF###*/
define memory mem with size = 4G;
define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];
define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };
define block RO_END with alignment = 8, size = 0 { };
initialize by copy { readwrite };
do not initialize { section .noinit };
keep { section .intvec };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place in ROM_region { readonly,
block RO_END };
place in RAM_region { readwrite,
block CSTACK,
block HEAP };