nRF5 SDK v15.0.0
------------------------
Release Date: Week 12, 2018
Highlights:
- Full support for nRF52840 and production quality of libraries and examples for this device.
- Support for the new SoftDevices S140, S132, and S112 v6.0.0.
- Peripheral drivers now use nrfx.
- Extensive rework of the DFU functionality.
- Extensive rework of the cryptography library (nrf_crypto).
- USB firmware is now in production quality.
- Serialization of SoftDevices S140, S132, and S112 v6.0.0.
- IEEE 802.15.4 protocol in production quality.
- Included nrf_oberon crypto library with standard Nordic 5-clause license.
The following toolchains/devices have been used for testing and
verification:
- ARM: MDK-ARM version 5.18a
- GCC: GCC ARM Embedded 6.3 2017-q2-update
- IAR: IAR Workbench 7.80.4 (IAR 8 - see note below)
- SES: SES 3.34
- Linux: Ubuntu 17.04, Kernel 4.10.0.
- Jlink: 6.22g
*****
Note for IAR 8 users:
Libraries for IAR 8 require wchar_t to be of size 32 bits while IAR 7 requires 16 bits.
To run a project using IAR 8, follow these intructions:
- Open the IAR project in IAR 8. The IAR workbench will automatically generate an IAR 8 compatible project file.
- If the project contains one of the precompiled libraries listed below, replace it with the IAR 8 compatible alternative
(there are no projects targeting nRF51 in this SDK).
- Save the project.
- When building the project, you might get the warning: "The header file 'cmsis_iar.h' is obsolete and should not be used. ....".
The problem is described in DevZone post: https://devzone.nordicsemi.com/f/nordic-q-a/31123/iar-ewarm-8-22-1-complains-about-cmsis_iar-h
The solution is to remove all occurrences of #include <cmsis_iar.h>.
The affected libraries are
- micro-ecc crypto:
- IAR 7: Includes the library located in the folder named "…_iar\…".
- IAR 8: Switch to using the library from the folder named "…_armgcc\…".
- nrf_cc310, nrf_cc310_bl, and nrf_oberon:
- IAR 7: Includes the library where "_short_wchar_" is part of the file name.
- IAR 8: Switch to using the library with similar naming, but where the "short_wchar" is removed.
- Gazell, NFC Tag, and 802.15.4:
- IAR 7: Includes the library where the file name ends with "_iar".
- IAR 8: Switch to using the library with similar file name that ends with "_gcc".
*****
Supported SoftDevices:
- S112 v6.0.x
- S132 v6.0.x
- S140 v6.0.0
- S212 v5.0.x
Supported boards:
- PCA10040
- PCA10040E (nRF52810 emulation on PCA10040)
- PCA10056
- PCA10059 (support in selected examples)
- Dynastream's D52DK1 (only for ANT examples)
For other devices and boards, see the SDK documentation, section "Using
the SDK with other boards".
*** New features
*****************
** IEEE 802.15.4 **
- Added support for SES toolchain.
** ANT **
- Added support for SES and GCC toolchains in the following examples:
- ANT-FS Client
- ANT Bootloader/DFU
** BLE **
- Added support for the new SoftDevices S140, S132, and S112 v6.0.0. For more information about SoftDevice v6.0.0, refer to the SoftDevice documentation.
- Extended advertising and selection of advertising PHYs can now be configured using the advertising module (ble_advertising).
- Running Speed and Cadence Service Application (ble_app_rscs) now advertises using extended advertising. Note that this makes it incompatible with devices that do not support extended advertising.
- Added multilink support for a selected group of BLE services (including separate GATT context for each connected client).
- Affected services:
- Human Interface Device Service: ble_hids.
- Nordic UART Service: ble_nus.
- Immediate Alert Service: ble_ias.
- Battery Service: ble_bas.
- Added BLE Link Context Manager module
- Modified the Immediate Alert Application to show this feature.
- Added a new application: BLE Interactive Command Line Interface Example.
- Added Device Information Service client. This module can be used to read any characteristic of Device Information Service.
- Modified the Running Speed and Cadence Collector example application (ble_app_rscs) to show the use of this module.
- Immediate Alert Service client example application (ble_app_ias_c) is no longer experimental.
- Immediate Alert Service server example application (ble_app_ias) is no longer experimental.
- GATT Service Client Example Application (ble_app_gatts_c) is no longer experimental.
- GATT Service Server Example Application (ble_app_gatts) is no longer experimental.
- Improved the test description documentation for Continuous Glucose Monitoring Service Example Application (ble_app_cgms). It now showcases more capabilities of the application and how to test them.
- ble_conn_state: Added new function ble_conn_state_for_each_set_user_flag() which calls a function for each flag in a collection that is set.
- Peer Manager:
- Two new configuration parameters to disable functionality to save space:
- PM_SERVICE_CHANGED_ENABLED to enable/disable Service Changed sending. This must be enabled if Service Changed is enabled in the GATT database.
- PM_PEER_RANKS_ENABLED to enable/disable the tracking of peer ranks.
- The relevant APIs have gained the error code NRF_ERROR_NOT_SUPPORTED if the function is called when the configuration is disabled.
- Added NRF_SDH_BLE_GAP_DATA_LENGTH configuration (under nrf_sdh_ble) to configure BLE data length negotiated by the nrf_ble_gatt module.
- Added BLE LESC module as experimental.
** BLE IOT **
- Added support for the nRF52840 (PCA10056 board) with the use of the S140 SoftDevice.
** NFC **
- Added support for SES toolchain in the Adafruit Tag Reader Example.
** Crypto **
- Production quality nrf_crypto interface that supports software and hardware backends (using the CC310 hardware accelarator in nRF52840 devices).
- nrf_crypto API supports the following cryptographic family of algorithms (subject to support in nrf_crypto backends):
- AES (CBC, CTR, CFB, ECB, CBC_MAC, CMAC)
- AEAD (CCM, CCM*, EAX, GCM, ChaCha-Poly)
- ECC (Elliptic Curve Cryptography)
- Key generation
- Key validation
- Key conversions (from/to raw format)
- ECDH (multiple curves)
- ECDSA (multiple curves)
- SHA-2 family hash
- HMAC
- HKDF
- RNG using AES CTR or through dedicated hardware/sofware (on nRF52840)
- Experimental Ed25519 support (available through the nrf_crypto_ecdsa API)
- nrf_crypto API support for dynamic memory management by configuration:
- User-specified macros to NRF_CRYPTO_ALLOC and NRF_CRYPTO_FREE
- Stack allocation (using alloca)
- C dynamic allocation (malloc)
- SDK Memory Manager (nrf_malloc)
- nrf_crypto backends include the following:
- Cifra
- mbed TLS
- micro-ecc
- nrf_cc310
- nrf_cc310_bl (code size optimized, to use in Secure DFU)
- nRF HW (for RNG)
- nrf_oberon
- nRF software (legacy)
- Examples of nrf_crypto usage with the option to change the nrf_crypto backends.
- Test example to verify the cryptographic routines and APIs through standardized test vectors.
** DFU/Bootloader **
- SoftDevice independence:
- Only the BLE bootloader is now dependent on the SoftDevice. The others depend only on the MBR (which is now part of the SDK).
- The DFU now supports updating applications that do not use the SoftDevice. Such an application must be compiled to be placed above the MBR.
- The DFU protocol has been extended to support new message