From ffcceb0cb700ba4879fd4243bc916cba00773e60 Mon Sep 17 00:00:00 2001 From: Lingkai Dong Date: Wed, 29 May 2019 14:59:20 +0100 Subject: [PATCH 1/4] Default to Cordio BLE stack for NRF52* targets The BLE stack from SoftDevice is not actively maintained and has issues when used with Nordic SDK v15. --- targets/targets.json | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/targets/targets.json b/targets/targets.json index 8a525f8fd4..56bddbe805 100644 --- a/targets/targets.json +++ b/targets/targets.json @@ -7088,6 +7088,7 @@ "MBED_TICKLESS", "MBED_MPU_CUSTOM" ], + "features": ["BLE"], "device_has": [ "ANALOGIN", "FLASH", @@ -7115,9 +7116,10 @@ "NRF5x", "NRF52", "SDK_15_0", - "NORDIC_SOFTDEVICE", - "SOFTDEVICE_COMMON", - "SOFTDEVICE_S132_FULL" + "CORDIO", + "CORDIO_LL", + "SOFTDEVICE_NONE", + "NORDIC_CORDIO" ], "config": { "lf_clock_src": { @@ -7213,7 +7215,7 @@ "WSF_MAX_HANDLERS=10", "MBED_MPU_CUSTOM" ], - "features": ["CRYPTOCELL310"], + "features": ["CRYPTOCELL310", "BLE"], "device_has": [ "ANALOGIN", "FLASH", @@ -7242,9 +7244,10 @@ "NRF5x", "NRF52", "SDK_15_0", - "NORDIC_SOFTDEVICE", - "SOFTDEVICE_COMMON", - "SOFTDEVICE_S140_FULL" + "CORDIO", + "CORDIO_LL", + "SOFTDEVICE_NONE", + "NORDIC_CORDIO" ], "config": { "lf_clock_src": { From 977eea44477c9329ed8dd5c13f7f53fd0408ee6d Mon Sep 17 00:00:00 2001 From: Lingkai Dong Date: Tue, 4 Jun 2019 10:42:43 +0100 Subject: [PATCH 2/4] critical_section tests: do not check APP interrupts on NRF52 APP interrupts are masked on SoftDevice BLE stack only, but we have switched to Cordio stack on NRF52 targets. --- TESTS/mbed_hal/critical_section/main.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/TESTS/mbed_hal/critical_section/main.cpp b/TESTS/mbed_hal/critical_section/main.cpp index c3ae160e33..b380972858 100644 --- a/TESTS/mbed_hal/critical_section/main.cpp +++ b/TESTS/mbed_hal/critical_section/main.cpp @@ -28,12 +28,9 @@ using utest::v1::Case; bool test_are_interrupts_enabled(void) { - // NRF5x targets don't disable interrupts when in critical section, instead they mask application interrupts this is due to BLE stack - // (BLE to be operational requires some interrupts to be always enabled) -#if defined(TARGET_NRF52) - // check if APP interrupts are masked for NRF52 boards - return (((NVIC->ISER[0] & __NRF_NVIC_APP_IRQS_0) != 0) || ((NVIC->ISER[1] & __NRF_NVIC_APP_IRQS_1) != 0)); -#elif defined(TARGET_NRF51) + // NRF51 targets don't disable interrupts when in critical section, instead they mask application interrupts. + // This is due to SoftDevice BLE stack (BLE to be operational requires some interrupts to be always enabled) +#if defined(TARGET_NRF51) // check if APP interrupts are masked for other NRF51 boards return ((NVIC->ISER[0] & __NRF_NVIC_APP_IRQS_0) != 0); #else From 3373c5d24acb678e2ffa2ae695a32f8da4e66274 Mon Sep 17 00:00:00 2001 From: Lingkai Dong Date: Wed, 5 Jun 2019 09:43:36 +0100 Subject: [PATCH 3/4] NORDIC_CORDIC pal_crypto: check if cryptocell310 is enabled The config "cryptocell310-acceleration" is set by MCU_NRF52840 but individual targets may have crytocell310 feature disabled. --- .../TARGET_NRF5x/stack/sources/pal_crypto.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x/stack/sources/pal_crypto.c b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x/stack/sources/pal_crypto.c index fb87796ae7..adf87e670d 100644 --- a/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x/stack/sources/pal_crypto.c +++ b/features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NORDIC_CORDIO/TARGET_NRF5x/stack/sources/pal_crypto.c @@ -23,7 +23,7 @@ #include "pal_types.h" #include "pal_bb_ble.h" -#if defined(NRF52840_XXAA) && MBED_CONF_CORDIO_LL_NRF52840_CRYPTOCELL310_ACCELERATION +#if defined(NRF52840_XXAA) && defined(FEATURE_CRYPTOCELL310) && MBED_CONF_CORDIO_LL_NRF52840_CRYPTOCELL310_ACCELERATION #include "crys_rsa_kg.h" #include "crys_dh.h" #include "ssi_pal_types.h" @@ -34,7 +34,7 @@ /* Nordic specific definitions. */ #include "nrf_ecb.h" #include "nrf.h" -#if defined(NRF52840_XXAA) && MBED_CONF_CORDIO_LL_NRF52840_CRYPTOCELL310_ACCELERATION +#if defined(NRF52840_XXAA) && defined(FEATURE_CRYPTOCELL310) && MBED_CONF_CORDIO_LL_NRF52840_CRYPTOCELL310_ACCELERATION #include "nrf52840.h" #endif #include @@ -690,7 +690,7 @@ bool_t PalCryptoAesCcmDecrypt(PalCryptoEnc_t *pEnc, uint8_t *pBuf) return TRUE; } -#if defined(NRF52840_XXAA) && MBED_CONF_CORDIO_LL_NRF52840_CRYPTOCELL310_ACCELERATION +#if defined(NRF52840_XXAA) && defined(FEATURE_CRYPTOCELL310) && MBED_CONF_CORDIO_LL_NRF52840_CRYPTOCELL310_ACCELERATION /*************************************************************************************************/ /*! * \brief Execute the CCM-Mode encryption algorithm. From 1fe06f18c3bff37c6dba71bbfd3a55798f498e6a Mon Sep 17 00:00:00 2001 From: paul-szczepanek-arm <33840200+paul-szczepanek-arm@users.noreply.github.com> Date: Fri, 7 Jun 2019 13:50:30 +0100 Subject: [PATCH 4/4] exculde test --- .../targets/TARGET_CORDIO/TESTS/cordio_hci/transport/main.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/features/FEATURE_BLE/targets/TARGET_CORDIO/TESTS/cordio_hci/transport/main.cpp b/features/FEATURE_BLE/targets/TARGET_CORDIO/TESTS/cordio_hci/transport/main.cpp index 3aaadbb453..e5ee4bc235 100644 --- a/features/FEATURE_BLE/targets/TARGET_CORDIO/TESTS/cordio_hci/transport/main.cpp +++ b/features/FEATURE_BLE/targets/TARGET_CORDIO/TESTS/cordio_hci/transport/main.cpp @@ -33,6 +33,10 @@ using ble::vendor::cordio::CordioHCITransportDriver; extern ble::vendor::cordio::CordioHCIDriver& ble_cordio_get_hci_driver(); +#if CORDIO_ZERO_COPY_HCI +#error [NOT_SUPPORTED] Test not relevant for zero copy hci. +#endif + namespace ble { namespace vendor { namespace cordio {