Working with nRF connect SDK 2.7.0 on IAR Embedded Workbench

I am working on a new project which will use nRF Connect SDK 2.7.0. In that most of the code will be ported from legacy project that used IAR Embedded Workbench as IDE (Note: Both new and legacy project uses nRF52840 microcontroller). I could see from the websites that we can use VS code and SEGGER Embedded Studio. But I could not see IAR listed. Is it possible to use IAR for this scenario?

-if yes how?

-if not why?

  • Hi Ruthrapathy, 

    This is mentioned in the documentation for nRF Connect SDK : nRF Connect SDK is IDE agnostic, which means you can use your own IDE if you prefer.

    You can use IAR as the IDE, however you would need to use west build systems to build the application. 
    As for the question why IAR is not supported, we have to focus on one single build system and it's the same system to build Zephyr RTOS. 
    The recommended IDE to be used with NRF Connect is Visual Studio Code. Different from the past with nRF5 SDK that we relied on 3rd party IDEs to support us in developing the IDE and compiler, with VSCode we have a team in Nordic that working on it to build our own build system and integrated in VSCode as the nRF Connect extension. 

  • I also wanted to build under the old SDK for low-level peripheral testing, but this is less than simple. IAR can be run as both compiler and IDE under Visual Code, but that was just too much work. These files from nRFConnect v2.7.0 need to be copied into this directory for the blinky peripheral example to get you started if wanting to build under the old SDK. Note this is not a simple task to work under the old SDK.

    .\nRF5_SDK_17.1.0\modules\nrfx\mdk\

    dir D:\Projects\Nordic\nRF5_SDK_17.1.0\modules\nrfx\mdk\ | find "l15"
    07/17/2024  05:44 PM             1,882 nrf54l15.h
    07/17/2024  05:44 PM            25,544 nrf54l15_application.h
    07/17/2024  05:44 PM         3,726,093 nrf54l15_application.svd
    07/17/2024  05:44 PM           127,343 nrf54l15_application_peripherals.h
    07/17/2024  05:44 PM            24,578 nrf54l15_flpr.h
    07/17/2024  05:44 PM         3,336,785 nrf54l15_flpr.svd
    07/17/2024  05:44 PM           127,000 nrf54l15_flpr_peripherals.h
    07/17/2024  05:44 PM            43,156 nrf54l15_global.h
    07/17/2024  05:44 PM             5,912 nrf54l15_interim.h
    07/17/2024  05:44 PM             1,798 nrf54l15_name_change.h
    07/17/2024  05:44 PM             1,987 nrf54l15_peripherals.h
    07/17/2024  05:44 PM         4,871,932 nrf54l15_types.h
    07/17/2024  05:44 PM             2,181 nrf54l15_version.h
    07/17/2024  05:44 PM             2,607 nrf54l15_xxaa_flpr_memory.h
    07/22/2024  11:32 AM            12,996 startup_nrf54l15.c
    

    This is an example of the .icf link file:

    blinky_pca10156.icf

    This is an example project; note that using secure or non-secure is a major headache (nRFConnect SDK makes this easier):

    <?xml version="1.0" encoding="UTF-8"?>
    <project>
        <fileVersion>3</fileVersion>
        <configuration>
            <name>nrf54L15_xxaa</name>
            <toolchain>
                <name>ARM</name>
            </toolchain>
            <debug>0</debug>
            <settings>
                <name>General</name>
                <archiveVersion>3</archiveVersion>
                <data>
                    <version>34</version>
                    <wantNonLocal>1</wantNonLocal>
                    <debug>0</debug>
                    <option>
                        <name>BrowseInfoPath</name>
                        <state>nrf54L15_xxaa\BrowseInfo</state>
                    </option>
                    <option>
                        <name>ExePath</name>
                        <state>_build</state>
                    </option>
                    <option>
                        <name>ObjPath</name>
                        <state>_build</state>
                    </option>
                    <option>
                        <name>ListPath</name>
                        <state>_build</state>
                    </option>
                    <option>
                        <name>GEndianMode</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>Input description</name>
                        <state>Full formatting, with multibyte support.</state>
                    </option>
                    <option>
                        <name>Output description</name>
                        <state>Full formatting, with multibyte support.</state>
                    </option>
                    <option>
                        <name>GOutputBinary</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>OGCoreOrChip</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>GRuntimeLibSelect</name>
                        <version>0</version>
                        <state>2</state>
                    </option>
                    <option>
                        <name>GRuntimeLibSelectSlave</name>
                        <version>0</version>
                        <state>2</state>
                    </option>
                    <option>
                        <name>RTDescription</name>
                        <state>Use the full configuration of the C/C++ runtime library. Full locale interface, C locale, file descriptor support, multibytes in printf and scanf, and hex floats in strtod.</state>
                    </option>
                    <option>
                        <name>OGProductVersion</name>
                        <state>6.10.3.52260</state>
                    </option>
                    <option>
                        <name>OGLastSavedByProductVersion</name>
                        <state>9.20.4.46976</state>
                    </option>
                    <option>
                        <name>OGChipSelectEditMenu</name>
                        <state>nRF52833_xxAA	NordicSemi nRF52833_xxAA</state>
                    </option>
                    <option>
                        <name>GenLowLevelInterface</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>GEndianModeBE</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>OGBufferedTerminalOutput</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>GenStdoutInterface</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>RTConfigPath2</name>
                        <state>$TOOLKIT_DIR$\inc\c\DLib_Config_Full.h</state>
                    </option>
                    <option>
                        <name>GBECoreSlave</name>
                        <version>31</version>
                        <state>59</state>
                    </option>
                    <option>
                        <name>OGUseCmsis</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>OGUseCmsisDspLib</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>GRuntimeLibThreads</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>CoreVariant</name>
                        <version>31</version>
                        <state>59</state>
                    </option>
                    <option>
                        <name>GFPUDeviceSlave</name>
                        <state>nRF52833_xxAA	NordicSemi nRF52833_xxAA</state>
                    </option>
                    <option>
                        <name>FPU2</name>
                        <version>0</version>
                        <state>0</state>
                    </option>
                    <option>
                        <name>NrRegs</name>
                        <version>0</version>
                        <state>0</state>
                    </option>
                    <option>
                        <name>NEON</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>GFPUCoreSlave2</name>
                        <version>31</version>
                        <state>59</state>
                    </option>
                    <option>
                        <name>OGCMSISPackSelectDevice</name>
                    </option>
                    <option>
                        <name>OgLibHeap</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>OGLibAdditionalLocale</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>OGPrintfVariant</name>
                        <version>0</version>
                        <state>1</state>
                    </option>
                    <option>
                        <name>OGPrintfMultibyteSupport</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>OGScanfVariant</name>
                        <version>0</version>
                        <state>1</state>
                    </option>
                    <option>
                        <name>OGScanfMultibyteSupport</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>GenLocaleTags</name>
                        <state></state>
                    </option>
                    <option>
                        <name>GenLocaleDisplayOnly</name>
                        <state></state>
                    </option>
                    <option>
                        <name>DSPExtension</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>TrustZone</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>TrustZoneModes</name>
                        <version>0</version>
                        <state>0</state>
                    </option>
                    <option>
                        <name>OGAarch64Abi</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>OG_32_64Device</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>BuildFilesPath</name>
                        <state>nrf54L15_xxaa</state>
                    </option>
                </data>
            </settings>
            <settings>
                <name>ICCARM</name>
                <archiveVersion>2</archiveVersion>
                <data>
                    <version>37</version>
                    <wantNonLocal>1</wantNonLocal>
                    <debug>0</debug>
                    <option>
                        <name>CCGuardCalls</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>CCOptimizationNoSizeConstraints</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>CCDefines</name>
                        <state>BOARD_PCA10156</state>
                        <state>__CORTEX_M=33</state>
                        <state>NRF_SKIP_CLOCK_CONFIGURATION</state>
                        <state>__ARM_FPnot</state>
                        <state>DOMAIN_NS</state>
                        <state>NRF_SKIP_TAMPC_SETUP</state>
                        <state>notNRF_SKIP_SAU_CONFIGURATION</state>
                        <state>NRF_HW_INIT_RESET_ON_BOOT</state>
                        <state>notNRF_SKIP_SAU_CONFIGURATION</state>
                        <state>NRF_APPLICATION</state>
                        <state>notNRF_TRUSTZONE_NONSECURE</state>
                        <state>BSP_DEFINES_ONLY</state>
                        <state>CONFIG_GPIO_AS_PINRESET</state>
                        <state>FLOAT_ABI_SOFT</state>
                        <state>NRF54L15_XXAA</state>
                        <state>NRFX_COREDEP_DELAY_US_LOOP_CYCLES=3</state>
                    </option>
                    <option>
                        <name>CCPreprocFile</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>CCPreprocComments</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>CCPreprocLine</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>CCListCFile</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>CCListCMnemonics</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>CCListCMessages</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>CCListAssFile</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>CCListAssSource</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>CCEnableRemarks</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>CCDiagSuppress</name>
                        <state></state>
                    </option>
                    <option>
                        <name>CCDiagRemark</name>
                        <state></state>
                    </option>
                    <option>
                        <name>CCDiagWarning</name>
                        <state></state>
                    </option>
                    <option>
                        <name>CCDiagError</name>
                        <state></state>
                    </option>
                    <option>
                        <name>CCObjPrefix</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>CCAllowList</name>
                        <version>1</version>
                        <state>11111110</state>
                    </option>
                    <option>
                        <name>CCDebugInfo</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>IEndianMode</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>IProcessor</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>IExtraOptionsCheck</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>IExtraOptions</name>
                        <state>--diag_suppress Pe111</state>
                    </option>
                    <option>
                        <name>CCLangConformance</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>CCSignedPlainChar</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>CCRequirePrototypes</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>CCDiagWarnAreErr</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>CCCompilerRuntimeInfo</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IFpuProcessor</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>OutputFile</name>
                        <state>$FILE_BNAME$.o</state>
                    </option>
                    <option>
                        <name>CCLibConfigHeader</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>PreInclude</name>
                        <state></state>
                    </option>
                    <option>
                        <name>CCIncludePath2</name>
                        <state>$PROJ_DIR$\..\..\..\config</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components\boards</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components\drivers_nrf\nrf_soc_nosd</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\atomic</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\balloc</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\bsp</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\delay</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\experimental_section_vars</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\log</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\log\src</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\memobj</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\ringbuf</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\strerror</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\util</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components\toolchain\cmsis\include</state>
                        <state>$PROJ_DIR$\..\..\..</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\external\fprintf</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\integration\nrfx</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\modules\nrfx</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\modules\nrfx\hal</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\modules\nrfx\mdk</state>
                        <state>$PROJ_DIR$\..\config</state>
                    </option>
                    <option>
                        <name>CCStdIncCheck</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>CCCodeSection</name>
                        <state>.text</state>
                    </option>
                    <option>
                        <name>IProcessorMode2</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>CCOptLevel</name>
                        <state>3</state>
                    </option>
                    <option>
                        <name>CCOptStrategy</name>
                        <version>0</version>
                        <state>1</state>
                    </option>
                    <option>
                        <name>CCOptLevelSlave</name>
                        <state>3</state>
                    </option>
                    <option>
                        <name>CCPosIndRopi</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>CCPosIndRwpi</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>CCPosIndNoDynInit</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IccLang</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IccCDialect</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>IccAllowVLA</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IccStaticDestr</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>IccCppInlineSemantics</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IccCmsis</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>IccFloatSemantics</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>CCNoLiteralPool</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>CCOptStrategySlave</name>
                        <version>0</version>
                        <state>1</state>
                    </option>
                    <option>
                        <name>CCEncSource</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>CCEncOutput</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>CCEncOutputBom</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>CCEncInput</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IccExceptions2</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IccRTTI2</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>OICompilerExtraOption</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>CCStackProtection</name>
                        <state>0</state>
                    </option>
                </data>
            </settings>
            <settings>
                <name>AARM</name>
                <archiveVersion>2</archiveVersion>
                <data>
                    <version>11</version>
                    <wantNonLocal>1</wantNonLocal>
                    <debug>0</debug>
                    <option>
                        <name>AObjPrefix</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>AEndian</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>ACaseSensitivity</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>MacroChars</name>
                        <version>0</version>
                        <state>0</state>
                    </option>
                    <option>
                        <name>AWarnEnable</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>AWarnWhat</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>AWarnOne</name>
                        <state></state>
                    </option>
                    <option>
                        <name>AWarnRange1</name>
                        <state></state>
                    </option>
                    <option>
                        <name>AWarnRange2</name>
                        <state></state>
                    </option>
                    <option>
                        <name>ADebug</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>AltRegisterNames</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>ADefines</name>
                        <state>BOARD_PCA10156</state>
                        <state>BSP_DEFINES_ONLY</state>
                        <state>CONFIG_GPIO_AS_PINRESET</state>
                        <state>FLOAT_ABI_SOFT</state>
                        <state>NRF54L15_XXAA</state>
                        <state>NRFX_COREDEP_DELAY_US_LOOP_CYCLES=3</state>
                    </option>
                    <option>
                        <name>AList</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>AListHeader</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>AListing</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>Includes</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>MacDefs</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>MacExps</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>MacExec</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>OnlyAssed</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>MultiLine</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>PageLengthCheck</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>PageLength</name>
                        <state>80</state>
                    </option>
                    <option>
                        <name>TabSpacing</name>
                        <state>8</state>
                    </option>
                    <option>
                        <name>AXRef</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>AXRefDefines</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>AXRefInternal</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>AXRefDual</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>AProcessor</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>AFpuProcessor</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>AOutputFile</name>
                        <state>$FILE_BNAME$.o</state>
                    </option>
                    <option>
                        <name>ALimitErrorsCheck</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>ALimitErrorsEdit</name>
                        <state>100</state>
                    </option>
                    <option>
                        <name>AIgnoreStdInclude</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>AUserIncludes</name>
                        <state>$PROJ_DIR$\..\..\..\config</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components\boards</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components\drivers_nrf\nrf_soc_nosd</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\atomic</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\balloc</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\bsp</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\delay</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\experimental_section_vars</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\log</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\log\src</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\memobj</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\ringbuf</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\strerror</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\util</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\components\toolchain\cmsis\include</state>
                        <state>$PROJ_DIR$\..\..\..</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\external\fprintf</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\integration\nrfx</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\modules\nrfx</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\modules\nrfx\hal</state>
                        <state>$PROJ_DIR$\..\..\..\..\..\..\modules\nrfx\mdk</state>
                        <state>$PROJ_DIR$\..\config</state>
                    </option>
                    <option>
                        <name>AExtraOptionsCheckV2</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>AExtraOptionsV2</name>
                        <state></state>
                    </option>
                    <option>
                        <name>AsmNoLiteralPool</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>PreInclude</name>
                        <state></state>
                    </option>
                </data>
            </settings>
            <settings>
                <name>OBJCOPY</name>
                <archiveVersion>0</archiveVersion>
                <data>
                    <version>1</version>
                    <wantNonLocal>1</wantNonLocal>
                    <debug>0</debug>
                    <option>
                        <name>OOCOutputFormat</name>
                        <version>3</version>
                        <state>1</state>
                    </option>
                    <option>
                        <name>OCOutputOverride</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>OOCOutputFile</name>
                        <state>blinky_pca10156.hex</state>
                    </option>
                    <option>
                        <name>OOCCommandLineProducer</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>OOCObjCopyEnable</name>
                        <state>1</state>
                    </option>
                </data>
            </settings>
            <settings>
                <name>CUSTOM</name>
                <archiveVersion>3</archiveVersion>
                <data>
                    <extensions></extensions>
                    <cmdline></cmdline>
                    <hasPrio>0</hasPrio>
                    <buildSequence>inputOutputBased</buildSequence>
                </data>
            </settings>
            <settings>
                <name>BUILDACTION</name>
                <archiveVersion>1</archiveVersion>
                <data>
                    <prebuild></prebuild>
                    <postbuild></postbuild>
                </data>
            </settings>
            <settings>
                <name>ILINK</name>
                <archiveVersion>0</archiveVersion>
                <data>
                    <version>26</version>
                    <wantNonLocal>1</wantNonLocal>
                    <debug>0</debug>
                    <option>
                        <name>IlinkLibIOConfig</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>IlinkInputFileSlave</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkOutputFile</name>
                        <state>blinky_pca10156e.out</state>
                    </option>
                    <option>
                        <name>IlinkDebugInfoEnable</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>IlinkKeepSymbols</name>
                        <state></state>
                    </option>
                    <option>
                        <name>IlinkRawBinaryFile</name>
                        <state></state>
                    </option>
                    <option>
                        <name>IlinkRawBinarySymbol</name>
                        <state></state>
                    </option>
                    <option>
                        <name>IlinkRawBinarySegment</name>
                        <state></state>
                    </option>
                    <option>
                        <name>IlinkRawBinaryAlign</name>
                        <state></state>
                    </option>
                    <option>
                        <name>IlinkDefines</name>
                        <state></state>
                    </option>
                    <option>
                        <name>IlinkConfigDefines</name>
                        <state></state>
                    </option>
                    <option>
                        <name>IlinkMapFile</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>IlinkLogFile</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkLogInitialization</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkLogModule</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkLogSection</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkLogVeneer</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkIcfOverride</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>IlinkIcfFile</name>
                        <state>D:\Projects\Nordic\nRF5_SDK_17.1.0_ddde560\examples\peripheral\blinky\pca10156\blank\iar\blinky_pca10156.icf</state>
                    </option>
                    <option>
                        <name>IlinkIcfFileSlave</name>
                        <state></state>
                    </option>
                    <option>
                        <name>IlinkEnableRemarks</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkSuppressDiags</name>
                        <state></state>
                    </option>
                    <option>
                        <name>IlinkTreatAsRem</name>
                        <state></state>
                    </option>
                    <option>
                        <name>IlinkTreatAsWarn</name>
                        <state></state>
                    </option>
                    <option>
                        <name>IlinkTreatAsErr</name>
                        <state></state>
                    </option>
                    <option>
                        <name>IlinkWarningsAreErrors</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>IlinkUseExtraOptions</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkExtraOptions</name>
                        <state></state>
                    </option>
                    <option>
                        <name>IlinkLowLevelInterfaceSlave</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>IlinkAutoLibEnable</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>IlinkAdditionalLibs</name>
                        <state></state>
                    </option>
                    <option>
                        <name>IlinkOverrideProgramEntryLabel</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkProgramEntryLabelSelect</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkProgramEntryLabel</name>
                        <state>__iar_program_start</state>
                    </option>
                    <option>
                        <name>DoFill</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>FillerByte</name>
                        <state>0xFF</state>
                    </option>
                    <option>
                        <name>FillerStart</name>
                        <state>0x0</state>
                    </option>
                    <option>
                        <name>FillerEnd</name>
                        <state>0x0</state>
                    </option>
                    <option>
                        <name>CrcSize</name>
                        <version>0</version>
                        <state>1</state>
                    </option>
                    <option>
                        <name>CrcAlign</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>CrcPoly</name>
                        <state>0x11021</state>
                    </option>
                    <option>
                        <name>CrcCompl</name>
                        <version>0</version>
                        <state>0</state>
                    </option>
                    <option>
                        <name>CrcBitOrder</name>
                        <version>0</version>
                        <state>0</state>
                    </option>
                    <option>
                        <name>CrcInitialValue</name>
                        <state>0x0</state>
                    </option>
                    <option>
                        <name>DoCrc</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkBE8Slave</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>IlinkBufferedTerminalOutput</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>IlinkStdoutInterfaceSlave</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>CrcFullSize</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkIElfToolPostProcess</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkLogAutoLibSelect</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkLogRedirSymbols</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkLogUnusedFragments</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkCrcReverseByteOrder</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkCrcUseAsInput</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>IlinkOptInline</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>IlinkOptExceptionsAllow</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>IlinkOptExceptionsForce</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkCmsis</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>IlinkOptMergeDuplSections</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkOptUseVfe</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>IlinkOptForceVfe</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkStackAnalysisEnable</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkStackControlFile</name>
                        <state></state>
                    </option>
                    <option>
                        <name>IlinkStackCallGraphFile</name>
                        <state></state>
                    </option>
                    <option>
                        <name>CrcAlgorithm</name>
                        <version>1</version>
                        <state>1</state>
                    </option>
                    <option>
                        <name>CrcUnitSize</name>
                        <version>0</version>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkThreadsSlave</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>IlinkLogCallGraph</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkIcfFile_AltDefault</name>
                        <state></state>
                    </option>
                    <option>
                        <name>IlinkEncInput</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkEncOutput</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkEncOutputBom</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>IlinkHeapSelect</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>IlinkLocaleSelect</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>IlinkTrustzoneImportLibraryOut</name>
                        <state>blinky_pca10156_import_lib.o</state>
                    </option>
                    <option>
                        <name>OILinkExtraOption</name>
                        <state>1</state>
                    </option>
                    <option>
                        <name>IlinkRawBinaryFile2</name>
                        <state></state>
                    </option>
                    <option>
                        <name>IlinkRawBinarySymbol2</name>
                        <state></state>
                    </option>
                    <option>
                        <name>IlinkRawBinarySegment2</name>
                        <state></state>
                    </option>
                    <option>
                        <name>IlinkRawBinaryAlign2</name>
                        <state></state>
                    </option>
                    <option>
                        <name>IlinkLogCrtRoutineSelection</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkLogFragmentInfo</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkLogInlining</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkLogMerging</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkDemangle</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkWrapperFileEnable</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IlinkWrapperFile</name>
                        <state></state>
                    </option>
                </data>
            </settings>
            <settings>
                <name>IARCHIVE</name>
                <archiveVersion>0</archiveVersion>
                <data>
                    <version>0</version>
                    <wantNonLocal>1</wantNonLocal>
                    <debug>0</debug>
                    <option>
                        <name>IarchiveInputs</name>
                        <state></state>
                    </option>
                    <option>
                        <name>IarchiveOverride</name>
                        <state>0</state>
                    </option>
                    <option>
                        <name>IarchiveOutput</name>
                        <state>###Unitialized###</state>
                    </option>
                </data>
            </settings>
        </configuration>
        <group>
            <name>Application</name>
            <file>
                <name>$PROJ_DIR$\..\..\..\eventLog.c</name>
                <excluded>
                    <configuration>nrf54L15_xxaa</configuration>
                </excluded>
            </file>
            <file>
                <name>$PROJ_DIR$\..\..\..\main.c</name>
            </file>
            <file>
                <name>$PROJ_DIR$\..\config\sdk_config.h</name>
            </file>
        </group>
        <group>
            <name>Board Definition</name>
            <file>
                <name>$PROJ_DIR$\..\..\..\..\..\..\components\boards\boards.c</name>
                <excluded>
                    <configuration>nrf54L15_xxaa</configuration>
                </excluded>
            </file>
        </group>
        <group>
            <name>None</name>
            <file>
                <name>$PROJ_DIR$\..\..\..\..\..\..\modules\nrfx\mdk\iar_startup_nrf54L15.s</name>
                <excluded>
                    <configuration>nrf54L15_xxaa</configuration>
                </excluded>
            </file>
            <file>
                <name>$PROJ_DIR$\..\..\..\..\..\..\modules\nrfx\mdk\startup.c</name>
            </file>
            <file>
                <name>$PROJ_DIR$\..\..\..\..\..\..\modules\nrfx\mdk\startup.h</name>
            </file>
            <file>
                <name>$PROJ_DIR$\..\..\..\..\..\..\modules\nrfx\mdk\startup_nrf54l15.c</name>
            </file>
            <file>
                <name>$PROJ_DIR$\..\..\..\..\..\..\modules\nrfx\mdk\system_nrf54l.c</name>
            </file>
        </group>
        <group>
            <name>nRF_Drivers</name>
            <file>
                <name>$PROJ_DIR$\..\..\..\..\..\..\modules\nrfx\soc\nrfx_atomic.c</name>
            </file>
        </group>
        <group>
            <name>nRF_Libraries</name>
            <file>
                <name>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\util\app_error.c</name>
            </file>
            <file>
                <name>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\util\app_error_handler_iar.c</name>
            </file>
            <file>
                <name>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\util\app_error_weak.c</name>
            </file>
            <file>
                <name>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\util\app_util_platform.c</name>
            </file>
            <file>
                <name>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\util\nrf_assert.c</name>
            </file>
            <file>
                <name>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\atomic\nrf_atomic.c</name>
            </file>
            <file>
                <name>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\balloc\nrf_balloc.c</name>
            </file>
            <file>
                <name>$PROJ_DIR$\..\..\..\..\..\..\external\fprintf\nrf_fprintf.c</name>
            </file>
            <file>
                <name>$PROJ_DIR$\..\..\..\..\..\..\external\fprintf\nrf_fprintf_format.c</name>
            </file>
            <file>
                <name>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\memobj\nrf_memobj.c</name>
            </file>
            <file>
                <name>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\ringbuf\nrf_ringbuf.c</name>
            </file>
            <file>
                <name>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\strerror\nrf_strerror.c</name>
            </file>
        </group>
        <group>
            <name>nRF_Log</name>
            <file>
                <name>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\log\src\nrf_log_frontend.c</name>
            </file>
            <file>
                <name>$PROJ_DIR$\..\..\..\..\..\..\components\libraries\log\src\nrf_log_str_formatter.c</name>
            </file>
        </group>
    </project>
    

    Edit: If using a version of IAR which doesn't know about nRF54L15 use nrfjprog to download the hex and then "debug without downloading":

    D:\Projects\Nordic\nRF5_SDK_17.1.0\examples\peripheral\blinky\pca10156\blank\iar\_build>nrfjprog --recover
    Recovering device. This operation might take 30s.
    Erasing user code and UICR flash areas.
    
    D:\Projects\Nordic\nRF5_SDK_17.1.0\examples\peripheral\blinky\pca10156\blank\iar\_build>nrfjprog --memwr 0x00FFD080 --val 0x00000003
    Parsing parameters.
    Writing.
    
    D:\Projects\Nordic\nRF5_SDK_17.1.0\examples\peripheral\blinky\pca10156\blank\iar\_build>nrfjprog --program blinky_pca10156.hex --chiperase --verify -r --log
    [ #################### ]   0.254s | Erase file - Done erasing
    [ #################### ]   0.060s | Program file - Done programming
    [ #################### ]   0.020s | Verify file - Done verifying
    Applying system reset.
    Run.
    

Related