nRF MDKMicrocontroller development kit

Microcontroller development kit for nRF51, nRF52, nRF53 and nRF91 Series devices

The nRF MDK is the microcontroller development kit needed to interact with Nordic Semiconductor's SoCs and SIPs from a 3rd-party IDE.

The nRF MDK provides device support in the form of register header files and startup code to get you started developing with nRF51, nRF52, nRF53 and nRF91 Series devices faster.

It also handles configuration of the supported IDE's built-in programming and debugging tools.

Currently supporting GCC (GNU), IAR Systems, Keil and SEGGER Embedded Studio.

Since version 8.12.0 the nRF MDK has been available under two licenses:

  • 3-clause BSD. This is the same license as used for previous MDK releases.
  • 5-clause Nordic. This is intended for those who would like to align licenses introduced with nRF5 SDK v13.0 and MDK with their products.

GCC support

Keil support

IAR support

Segger Embedded Studio support

Init code for target device

Register header .h and .c files

Flash and debug config

Choose platform, license type and version

Choose your IDE/development platform, license type and version (latest released version recommended)

Selected version
8.52.0 GCC 3-clause BSD license

Changelog:

8.52.0 GCC 3-clause BSD license

No change breaks existing code or compliation.

Changelog:

  • Updated erratas.h for nrf53 and nrf91 families.
  • In system_nrf91.c, make UICR HFXO fixup optional by setting NRF_SKIP_UICR_HFXO_WORKAROUND.
  • Fixed issue with missing symbols for name changes for serial boxes in nrf9160_name_change.h
  • Added MPU_REGION_NUM to nrf9160_peripehrals.h

For a full overview of all changes, please read the release notes located in the installation directory.

8.51.0 GCC 3-clause BSD license

No change breaks existing code or compilation.

Changelog:

  • Updated svd and header files for nrf5340
  • Updated nrf52_erratas.h
  • Updated nrf53_erratas.h

8.50.0 GCC 3-clause BSD license

No change breaks existing code or compilation.

Changelog:

  • Updated svd and header files for nrf9160
  • Replaced device specific system_nrf*.h files with family specific system_nrf*.h files
  • Renamed DPPI* to DPPIC* in nrf5340*_peripherals.h

8.49.0 GCC 3-clause BSD license

No change breaks existing code or compilation.

SHA256: D41B2640F90160E18414DACA6570893BF4B92668EFAD20E858E830E9C18CFF5B

Changelog:

  • Updated errata files for nRF53 and nRF91

8.47.0 GCC 3-clause BSD license

No change breaks existing code or compilation.

SHA256: fa29ef2bb95cd3082a816b25b90b0aa6f7adea344ed1f9f92cf33647971f4bd3

Changelog:

  • Updated nrf52.svd

8.46.0 GCC 3-clause BSD license

No change breaks existing code or compilation.

SHA256: 985421a5802f2e6f2061f40c68e6a21b5592809bed74e11865b8f9b7af2d7e79

Changelog:

  • Updated erratas*.h
  • For nrf53, fixed bug where errata 135, 136 and 137 were declared twice

8.45.0 GCC 3-clause BSD license

No change breaks existing code or compilation.

SHA256: 9a3d2d143ce5da8462a092cd4896649be0a2d141bb033afe5da2fbe993500fbc

Changelog:

  • Updated nrf52832 files to handle hardened AP-protect
  • Updated erratas*.h for all devices

8.44.2 GCC 3-clause BSD license

No change breaks existing code or compilation.

SHA256: FA10DCA9947AEE21395CA3C1DAA2FAC862C074B13DF847380B2CF485FC2E2090

Changelog:

  • Fixed issue where errata functions gave the wrong answer for nRF52833 rev2.

8.44.1 GCC 3-clause BSD license

No change breaks existing code or compilation.

SHA256: 6FF0FD3E860416EF99FFCC6E8C41AAAF7CD96BD27880B6141D6727C6DFC37275

Changelog:

  • Added missing nrf*_erratas.h files to the IAR installer.
  • In system_nrf52.c, fixed APPROTECT handling for nrf52805, nrf52810, and nrf52811 devices.
  • Updated gcc linker scripts.

8.43.0 GCC 3-clause BSD license

No change breaks existing code or compilation.

Changelog:

  • Support hardened ap-protect for nrf52805, nrf52810, nrf52811.
  • Update SVD/header files for nrf52805, and nRF52810.
  • Update errata headers.
  • In system_nrf9160.c, include correct errata header. Previously included nrf53_erratas.h.
  • In system_nrf9160.c, make all uint32_t * pointer accesses in trace setup volatile.
  • In nrf9160_peripehrals.h and nrf5340_application_peripherals.h, add macro SPU_RAMREGION_SIZE.
  • In system_nrf5340.c, and system_nrf9160.c use macro SPU_RAMREGION_SIZE from peripherals header.

8.42.0 GCC 3-clause BSD license

Changelog:

- Updated svd and header files for nRF52832, nRF52820, nRF52833, nRF52840, and nRF5340.
- Updated nrf*_erratas.h
- For nrf9160 and nrf5340, allow errata detector functions to be called also from nonsecure contexts.

8.40.3 GCC 3-clause BSD license

Changelog:

- Added errata function nrf52_errata_254 to nrf52_erratas.h
- Add back support for INITIALIZE_USER_SECTIONS in ses_startup_nrf_common.s

8.40.2 GCC 3-clause BSD license

Changelog:

- Update errata functions
- Fix issue where not all files required for devices with hardened app protect were bundled.
- Fix issue where compiler macro DEVELOP_IN_NRF52832 would cause compile issues for nRF52810 targets.
- Fix issue where compiler macro DEVELOP_IN_NRF52840 would cause compile issues for nRF52811 targets.

8.38.0 GCC 3-clause BSD license

Changelog:

- Update errata functions

- Update nrf5340 svd and header files

- nRF5340 serial interrupt names have been modified. Preprocessor macros that maintain backwards compatibility are provided by default

- New: SERIAL0, SERIAL1

- Deprecated SPIM0_SPIS0_TWIM0_TWIS0_UARTE0, SPIM1_SPIS1_TWIM1_TWIS1_UARTE1

- In nrf5340_application_peripherals.h add macro CLOCK_FEATURE_HFCLK_DIVIDE_PRESENT to indicate support for variable clock frequency

- See release notes for more details

8.37.0 GCC 3-clause BSD license

Changelog:

- Update errata functions

8.35.0 GCC 3-clause BSD license

Changelog:

  • Bugfixing and minor feature updates
  • Added and updated erratas
  • Ensure errata workarounds added also for newer HW revisions than present at MDK release
  • See release notes for full update

8.34.1 GCC 3-clause BSD license

Changelog:

  • Added RADIO_TXPOWER_TXPOWER_Max macro to *_peripherals.h
  • In nrf52840, added event RADIO->EVENTS_SYNC
  • Update nRF5340 svd and header files.
  • Add errata functions
  • FIXED: Not all products were included as targets for Keil uv5 packs. Introduced in 8.33.0

8.33.0 GCC 3-clause BSD license

Changelog:

  1. In nrf52810_to_nrf52811.h, fix use of nonexistent name in name remapping of TWIM0_TWIS0_IRQHandler
  2. In nrf52820_peripherals.h, removed POWER_FEATURE_VDDH_DCDC_PRESENT macro

8.32.1 GCC 3-clause BSD license

    Changelog for 8.31.0 -> 8.32.1
    1. In Keil pack, set default SWD settings per family.
    2. In Keil pack, set access port for devices with more than one core.
    3. Added device nRF52820
    4. Update license header current year to 2020

8.31.0 GCC 3-clause BSD license

    Changelog for 8.30.2 -> 8.31.0
    1. Added support for new devices in Keil and IAR flashing algorithms
    2. In Segger Embedded Studio, use SEGGER toolchain as default in example projects.
    3. In IAR package, linker scripts have been renamed to iar_%device%.icf to not collide with segger toolchain linker scripts.
    4. In nRF52 series device header files, set macro DSP_PRESENT to 1 if it was not already 1. DSP is a mandatory feature in Cortex-M4.
    5. For nrf5340_xxaa_application and nrf5340_xxaa_network, nrf.h now defines macro NRF5340_XXAA if not already defined.
    6. For nrf5340_xxaa_application, nrf.h now defines macro NRF_APPLICATION if not already defined.
    7. For nrf5340_xxaa_network, nrf.h now defines macro NRF_NETWORK if not already defined.
    8. In system_nrf5340_application.c add workaround for errata 97.
    9. Update nrf53_erratas.h.
    9. Update nrf52_erratas.h.
    10. In nrf5340_application_peripherals.h and nrf5340_network_peripherals.h, corrected IPC_GPMEM_NUM from 4 to 2.
    11. In nrf5340_application_peripherals.h and nrf5340_network_peripherals.h, updated implemented number of pins on P1 from 12 to 16
    12. Update svd files and headers for nRF5340.
    13. In compiler_abstractions.h update gcc_current_sp to use only inline assembly. Function did not work as intended in Clang before this change.

8.30.2 GCC 3-clause BSD license

  • In SEGGER Embedded Studio, renamed first RAM block in memory map for devices with multiple RAM regions to fix linker not finding first RAM block.
  • Updated nrf5340_application_peripherals.h.
  • In nrf*_peripherals.h, P0_FEATURE_PINS_PRESENT macro had undefined behaviour when P0_PIN_NUM was 32. Fixed.
  • In system_nrf5340_application.c, fixed incorrect initialization of SystemCoreClock variable.
  • In system_nrf5340_application.c and system_nrf5340_network.c, updated upper index for TRIMCNF array in FICR trim value loading loop.
  • In nrf9160_peripherals.h, removed OSCILLATORS_PRESENT and OSCILLATORS_COUNT, NRF_OSCILLATORS is not present.

8.30.1 GCC 3-clause BSD license

  • Changed from device specific errata files, to family specific.
  • For nRF52 family, added errata detection function for errata 216, 220, 228, and 230
  • For nRF53 family, added errata detection function for errata 4, 9, 12, 33, 43, 50, 51, 53, 54, 69, 72, 73, 74, 79, 80, 81, 82, 83, and 84
  • For nRF91 family, added errata detection function for errata 28, 29, and 30
  • For devices with support for IEEE 802.15.4 Radio, added RADIO_FEATURE_IEEE_802_15_4_PRESENT macro
  • Updated Segger Embedded Studio packages
  • In GCC startup files, mark section .isr_vector as "ax".
  • In peripherals.h, add P#_FEATURE_PINS_PRESENT. P#_FEATURE_PINS_PRESENT is a bitfield where the available pins in P# are set high.
  • Added macros for new serial boxes in nRF5340
  • Added OSCILLATORS_PRESENT and OSCILLATORS_COUNT macros for nRF5340 and nRF9160
  • 8.29.0 GCC 3-clause BSD license

    Changelog for 8.28.0 -> 8.29.0
    1. Add new header nrf_erratas.h. includes functions to check if an errata affects the device you're running on.
    2. In compiler_abstractions.h, add macro __UNUSED. __UNUSED marks an object as unused for the compiler, see GCC's __attribute__((unused)) for example.
    3. In system_nrf*.c files, use nrf_erratas.h to check for erratas where possible.
    4. Keil flashing algorithm didn't recognize nRF52833. Fixed
    5. Add code ram as new section in applicable processors
    6. For nRF9160, add workaround for errata 31.
    7. Adds support for nRF5340

    8.28.0 GCC 3-clause BSD license

    Changelog for 8.27.0 -> 8.28.0
    1. In nrf9160_peripherals.h, Added IPC_CONF_NUM macro
    2. In nrf9160_peripherals.h, Added SAADC_CH_NUM macro
    3. In device peripherals headers, add NVMC_PRESENT, NVMC_COUNT, and NVMC_FEATURE_CACHE_PRESENT where applicable.
    4. In system_nrf52810.c, remove ENABLE_SWO and ENABLE_TRACE features. Tracing not supported in nRF52810.
    5. In system_nrf52810.c, when developing in nRF52832, make sure NFC pins are mapped as GPIO.
    6. In system_nrf52811.c, when developing in nRF52840, make sure NFC pins are mapped as GPIO.

    8.27.1 GCC 3-clause BSD license

    1. In nrf9160_peripherals.h, Added IPC_CONF_NUM macro

    2. In system_nrf52810.c, remove ENABLE_SWO and ENABLE_TRACE features. Tracing is not supported in nRF52810.

    8.27.0 GCC 3-clause BSD license

    1. Add new device nRF52833

    2. In nrf52840_peripherals.h, add define POWER_FEATURE_VDDH_DCDC_PRESENT

    8.26.0 GCC 3-clause BSD license

    Changelog:

    • Fixed some IDE support file bugs.
    • nRF51 IAR support previously used common files for memory configurations. New device-specific files created. Does not impact device selection.
    • Split common nrf51 IAR support files into separate files per device. Does not impact device selection.
    • Fixed errors in nrf52805_peripherals header file
    • Updated comments in system_nrfxxx.c files with link to infocenter
    • In system_nrf9160.c, fixed ENABLE_TRACE sequence.

    8.25.0 GCC 3-clause BSD license

    Changelog:

    • Updated peripheral header files for every device.
    • Added assert in GCC startup code to check that code and init data do not overflow the flash area.
    • Corrections in nRF52832, nRF52810 and nRF52840 header files.
    • Fixed warning error when debugging with IAR Embedded Workbench for nRF52 devices.
    • Added support package for Segger Embedded Studio.        

    8.24.1 GCC 3-clause BSD license

    • Added new device, nRF52811_xxAA
    • Updated startup files for nRF9160.
    • Updated header files for nRF52810, nRF52811, and nRF52840.
    • Fixed issue where nRF9160_xxAA fpu_type property was not set correctly.
    • Fixed issue where nRF9160_xxAA was missing a flag indicating CMSE instruction support in Segger Embedded Studio Pack.
    • Fixed issue where some files and file references in Segger Embedded Studio Pack were not correct.
    • Fixed issue where Keil programming algorithms failed to identify the device it ran on in nRF91 and nRF52 family devices.
    • Fixed issue where when running nRF52810 code with DEVELOP_IN_NRF52832, some nRF52810 erratas were wrongly applied to nRF52832 devices.
    • In system_nrf52840.c, system_nrf52811.c, system_nrf52810.c, add a note explaining why some errata_x() functions always return true.
    • In system_nrf52810.c, add errata checks for nRF52810_xxAA_REV2.
    • In system_nrf9160.c, add support for ENABLE_SWO and ENABLE_TRACE macros to enable trace when compiling for secure code.
    • In system_nrf9160.c, fix issue where some errata used direct address assignment to registers without a volatile qualifier.
    • In system_nrf9160.c, add workaround for errata 20.



    8.21.1 GCC 3-clause BSD license

    • Mask errata content not used in nonsecure when compiling nonsecure code for nrf9160.
    • Added workaround for NOPAN-6 for nrf9160.
    • Split errata 14 and 15 into two separate errata handlers for nrf9160.
     

    8.17.0 GCC 3-clause BSD license

    • Bugfixes and minor improvements

    8.16.0 GCC 3-clause BSD license

    • For all, replaced nrf51_common.ld, nrf52_common.ld with nrf_common.ld
    • For nrf52840, remove register UICR->DCDCDRIVE0
    • For nrf52840, update enumerator value RADIO->TXPOWER->neg30dBm from 0xD8 to 0xFF to solve value overlap with neg40dBm
    • For nrf52840, add peripheral CC_HOST_RGF

    8.15.4 GCC 3-clause BSD license

    Changelog:

    1. For nRF52810, added registers in header files for support of partial erase mechanism.
    2. For nRF52810, added support for LASTRX to SUSPEND short in TWIM.
    3. For nRF52832, corrected problem in svd file that made serial interfaces awkward to debug. Introduced in 8.15.1
    4. For nRF52832, added back incorrectly removed baudrates.
    5. For nRF52840, corrected problem in svd file that made serial interfaces awkward to debug. Introduced in 8.15.1
    6. For nRF52840, added new registers in FICR for Cryptocell calibration.
    7. For nRF52840, correction of small errors in registers names in header files.
    8. For nRF52840, correction to USBD event registers.
    9. For nRF52840, add support for Rev1 devices.

    8.15.1 GCC 3-clause BSD license

    • Updated peripheral header files for every device.
    • For nRF52840, enable old erratas for new device nRF52840_xxAA_EngB
    • For nRF52832, enable fix for errata 182.

    8.15.0 GCC 3-clause BSD license

  • Updated peripheral header files for every device
  • Added assert in GCC startup code to check that code and init data do not overflow the flash area
  • Corrections in nRF52832, nRF52810 and nRF52840 header files
  • Fixed warning error when debugging with IAR Embedded Workbench for nRF52 devices
  • Added support package for Segger Embedded Studio
  • 8.14.1 GCC 3-clause BSD license

    • Added support for nRF52810 device
    • Small correction in nRF52832 device's header files
    • Fixed RAM size in Keil device database for nRF52832_XXAB
    • Corrections in nRF52840 header files, and moved SPIM3_IRQHandler to its proper location in the Interrupt Vector Table
    • Small corrections in nRF52810 header files