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.
Key Features
GCC
Support
Keil
Support
IAR
Support
SES
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.35.0 GCC 3-clause BSD license

nRF_MDK_8_35_0_GCC_BSDLicense.zip

Changelog:

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
    • See release notes for more details

    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