From ee84e1f83c7418f51310af028be644c1a507f904 Mon Sep 17 00:00:00 2001 From: Xiao Ma Date: Thu, 6 Jul 2017 00:42:20 +0800 Subject: [PATCH] [EFR32] Upgrade to RAIL Lib 1.6.0. (#1946) --- examples/Makefile-efr32 | 10 +++--- examples/apps/cli/Makefile.am | 4 +-- examples/apps/ncp/Makefile.am | 4 +-- examples/platforms/efr32/Makefile.am | 38 +++++++++++------------ examples/platforms/efr32/README.md | 4 +-- examples/platforms/efr32/platform-efr32.h | 6 ---- examples/platforms/efr32/platform.c | 6 ++-- examples/platforms/efr32/radio.c | 28 ++++++++--------- third_party/mbedtls/Makefile.am | 6 ++-- 9 files changed, 51 insertions(+), 55 deletions(-) diff --git a/examples/Makefile-efr32 b/examples/Makefile-efr32 index 5175de8ef..103a1442f 100644 --- a/examples/Makefile-efr32 +++ b/examples/Makefile-efr32 @@ -60,11 +60,11 @@ EFR32_MBEDTLS_CPPFLAGS = -DMBEDTLS_CONFIG_FILE='\"mbedtls-config.h\"' EFR32_MBEDTLS_CPPFLAGS += -DMBEDTLS_USER_CONFIG_FILE='\"efr32-mbedtls-config.h\"' EFR32_MBEDTLS_CPPFLAGS += -DEFR32MG12P432F1024GL125 EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/examples/platforms/efr32/crypto -EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v1.0/util/third_party/mbedtls/configs -EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v1.0/platform/CMSIS/Include -EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v1.0/util/third_party/mbedtls/sl_crypto/include -EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v1.0/platform/Device/SiliconLabs/EFR32MG12P/Include -EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v1.0/platform/emlib/inc +EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v1.1/util/third_party/mbedtls/configs +EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v1.1/platform/CMSIS/Include +EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v1.1/util/third_party/mbedtls/sl_crypto/include +EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v1.1/platform/Device/SiliconLabs/EFR32MG12P/Include +EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v1.1/platform/emlib/inc EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/mbedtls EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/mbedtls/repo/include EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/mbedtls/repo/include/mbedtls diff --git a/examples/apps/cli/Makefile.am b/examples/apps/cli/Makefile.am index 9f09f2239..63c26a0a5 100644 --- a/examples/apps/cli/Makefile.am +++ b/examples/apps/cli/Makefile.am @@ -105,11 +105,11 @@ endif # OPENTHREAD_EXAMPLES_DA15000 if OPENTHREAD_EXAMPLES_EFR32 LDADD_COMMON += \ $(top_builddir)/examples/platforms/efr32/libopenthread-efr32.a \ - $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v1.0/platform/radio/rail_lib/autogen/librail_release/librail_efr32xg12_gcc_release.a \ + $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v1.1/platform/radio/rail_lib/autogen/librail_release/librail_efr32xg12_gcc_release.a \ $(NULL) LDFLAGS_COMMON += \ - -T $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v1.0/platform/Device/SiliconLabs/EFR32MG12P/Source/GCC/efr32mg12p.ld \ + -T $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v1.1/platform/Device/SiliconLabs/EFR32MG12P/Source/GCC/efr32mg12p.ld \ $(NULL) endif # OPENTHREAD_EXAMPLES_EFR32 diff --git a/examples/apps/ncp/Makefile.am b/examples/apps/ncp/Makefile.am index 462e979c3..7ffe39284 100644 --- a/examples/apps/ncp/Makefile.am +++ b/examples/apps/ncp/Makefile.am @@ -105,11 +105,11 @@ endif # OPENTHREAD_EXAMPLES_DA15000 if OPENTHREAD_EXAMPLES_EFR32 LDADD_COMMON += \ $(top_builddir)/examples/platforms/efr32/libopenthread-efr32.a \ - $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v1.0/platform/radio/rail_lib/autogen/librail_release/librail_efr32xg12_gcc_release.a \ + $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v1.1/platform/radio/rail_lib/autogen/librail_release/librail_efr32xg12_gcc_release.a \ $(NULL) LDFLAGS_COMMON += \ - -T $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v1.0/platform/Device/SiliconLabs/EFR32MG12P/Source/GCC/efr32mg12p.ld \ + -T $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v1.1/platform/Device/SiliconLabs/EFR32MG12P/Source/GCC/efr32mg12p.ld \ $(NULL) endif # OPENTHREAD_EXAMPLES_EFR32 diff --git a/examples/platforms/efr32/Makefile.am b/examples/platforms/efr32/Makefile.am index 227c1b3cf..648407100 100644 --- a/examples/platforms/efr32/Makefile.am +++ b/examples/platforms/efr32/Makefile.am @@ -38,7 +38,7 @@ override CXXFLAGS := $(filter-out -Wconversion,$(CXXF override CFLAGS := $(filter-out -pedantic-errors,$(CFLAGS)) override CXXFLAGS := $(filter-out -pedantic-errors,$(CXXFLAGS)) -EFR32MG_SDK_SRCDIR = $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v1.0 +EFR32MG_SDK_SRCDIR = $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v1.1 libopenthread_efr32_a_CPPFLAGS = \ -DEFR32MG12P432F1024GL125 \ @@ -84,24 +84,24 @@ PLATFORM_SOURCES += endif nodist_libopenthread_efr32_a_SOURCES = \ - @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.0/hardware/kit/common/bsp/bsp_bcc.c \ - @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.0/hardware/kit/common/bsp/bsp_stk.c \ - @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.0/platform/Device/SiliconLabs/EFR32MG12P/Source/system_efr32mg12p.c \ - @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.0/platform/Device/SiliconLabs/EFR32MG12P/Source/GCC/startup_efr32mg12p.c \ - @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.0/platform/emdrv/rtcdrv/src/rtcdriver.c \ - @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.0/platform/emdrv/ustimer/src/ustimer.c \ - @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.0/platform/emlib/src/em_adc.c \ - @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.0/platform/emlib/src/em_cmu.c \ - @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.0/platform/emlib/src/em_core.c \ - @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.0/platform/emlib/src/em_emu.c \ - @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.0/platform/emlib/src/em_gpio.c \ - @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.0/platform/emlib/src/em_rmu.c \ - @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.0/platform/emlib/src/em_rtcc.c \ - @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.0/platform/emlib/src/em_system.c \ - @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.0/platform/emlib/src/em_timer.c \ - @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.0/platform/emlib/src/em_usart.c \ - @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.0/platform/emlib/src/em_msc.c \ - @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.0/platform/emlib/src/em_crypto.c \ + @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.1/hardware/kit/common/bsp/bsp_bcc.c \ + @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.1/hardware/kit/common/bsp/bsp_stk.c \ + @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.1/platform/Device/SiliconLabs/EFR32MG12P/Source/system_efr32mg12p.c \ + @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.1/platform/Device/SiliconLabs/EFR32MG12P/Source/GCC/startup_efr32mg12p.c \ + @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.1/platform/emdrv/rtcdrv/src/rtcdriver.c \ + @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.1/platform/emdrv/ustimer/src/ustimer.c \ + @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.1/platform/emlib/src/em_adc.c \ + @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.1/platform/emlib/src/em_cmu.c \ + @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.1/platform/emlib/src/em_core.c \ + @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.1/platform/emlib/src/em_emu.c \ + @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.1/platform/emlib/src/em_gpio.c \ + @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.1/platform/emlib/src/em_rmu.c \ + @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.1/platform/emlib/src/em_rtcc.c \ + @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.1/platform/emlib/src/em_system.c \ + @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.1/platform/emlib/src/em_timer.c \ + @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.1/platform/emlib/src/em_usart.c \ + @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.1/platform/emlib/src/em_msc.c \ + @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.1/platform/emlib/src/em_crypto.c \ $(NULL) noinst_HEADERS = \ diff --git a/examples/platforms/efr32/README.md b/examples/platforms/efr32/README.md index 63dde180a..33f86f7b6 100644 --- a/examples/platforms/efr32/README.md +++ b/examples/platforms/efr32/README.md @@ -185,5 +185,5 @@ The following toolchain has been used for testing and verification: - gcc version 4.9.3 The EFR32 example has been verified with following Flex SDK/RAIL Library version: - - Flex SDK version 1.1.1.0 - - RAIL Library version 1.5.2.2 + - Flex SDK version 1.1.1.0, RAIL Library version 1.5.2 + - Flex SDK version 1.2.0.0, RAIL Library version 1.6.0 diff --git a/examples/platforms/efr32/platform-efr32.h b/examples/platforms/efr32/platform-efr32.h index f1007101f..816d57906 100644 --- a/examples/platforms/efr32/platform-efr32.h +++ b/examples/platforms/efr32/platform-efr32.h @@ -94,10 +94,4 @@ void efr32MiscInit(void); */ void efr32RandomInit(void); -/** - * Initialization of EFR32 Hardware Abstract Layer. - * - */ -void efr32HalInit(void); - #endif // PLATFORM_EFR32_H_ diff --git a/examples/platforms/efr32/platform.c b/examples/platforms/efr32/platform.c index e2fb363a3..75b33976c 100644 --- a/examples/platforms/efr32/platform.c +++ b/examples/platforms/efr32/platform.c @@ -51,13 +51,15 @@ otInstance *sInstance; +void HAL_Init(void); + void PlatformInit(int argc, char *argv[]) { (void)argc; (void)argv; CHIP_Init(); - efr32HalInit(); + HAL_Init(); BSP_Init(BSP_INIT_BCC); otPlatUartEnable(); @@ -142,7 +144,7 @@ void halInitChipSpecific(void) CMU_ClockEnable(cmuClock_CORELE, true); } -void efr32HalInit(void) +void HAL_Init(void) { halInitChipSpecific(); } diff --git a/examples/platforms/efr32/radio.c b/examples/platforms/efr32/radio.c index cf3e5305d..5e82f856c 100644 --- a/examples/platforms/efr32/radio.c +++ b/examples/platforms/efr32/radio.c @@ -315,7 +315,6 @@ otError otPlatRadioTransmit(otInstance *aInstance, otRadioFrame *aFrame) RAIL_TxData_t txData; RAIL_TxOptions_t txOption; uint8_t frame[IEEE802154_MAX_LENGTH + 1]; - bool isAckRequested = (aFrame->mPsdu[0] & IEEE802154_ACK_REQUEST) ? true : false; (void)aInstance; CORE_DECLARE_IRQ_STATE; @@ -330,27 +329,21 @@ otError otPlatRadioTransmit(otInstance *aInstance, otRadioFrame *aFrame) frame[0] = aFrame->mLength; memcpy(frame + 1, aFrame->mPsdu, aFrame->mLength); - txData.dataPtr = frame; txData.dataLength = aFrame->mLength - 1; + + txOption.waitForAck = (aFrame->mPsdu[0] & IEEE802154_ACK_REQUEST) ? true : false; + txOption.removeCrc = false; + txOption.syncWordId = 0; + RAIL_TxPowerSet(aFrame->mPower); setChannel(aFrame->mChannel); RAIL_RfIdleExt(RAIL_IDLE, true); otEXPECT_ACTION(RAIL_TxDataLoad(&txData) == RAIL_STATUS_NO_ERROR, error = OT_ERROR_FAILED); - if (isAckRequested) - { - otEXPECT_ACTION(RAIL_TxStart(aFrame->mChannel, RAIL_CcaCsma, &csmaConfig) == RAIL_STATUS_NO_ERROR, - error = OT_ERROR_FAILED); - } - else - { - txOption.waitForAck = false; - - otEXPECT_ACTION(RAIL_TxStartWithOptions(aFrame->mChannel, &txOption, RAIL_CcaCsma, &csmaConfig) == RAIL_STATUS_NO_ERROR, - error = OT_ERROR_FAILED); - } + otEXPECT_ACTION(RAIL_TxStartWithOptions(aFrame->mChannel, &txOption, RAIL_CcaCsma, &csmaConfig) == RAIL_STATUS_NO_ERROR, + error = OT_ERROR_FAILED); exit: CORE_EXIT_CRITICAL(); @@ -653,6 +646,11 @@ void RAILCb_TxRadioStatus(uint8_t aStatus) sTransmitBusy = false; break; + case RAIL_TX_CONFIG_BUFFER_UNDERFLOW: + sTransmitError = OT_ERROR_ABORT; + sTransmitBusy = false; + break; + default: break; } @@ -685,6 +683,8 @@ void RAILCb_RxPacketReceived(void *aRxPacketHandle) // check the lenght validity of recv packet otEXPECT(length >= IEEE802154_MIN_LENGTH && length <= IEEE802154_MAX_LENGTH); + otLogInfoPlat(sInstance, "Received data:%d", rxPacketInfo->dataLength); + memcpy(sReceiveFrame.mPsdu, rxPacketInfo->dataPtr + 1, rxPacketInfo->dataLength); sReceiveFrame.mPower = rxPacketInfo->appendedInfo.rssiLatch; sReceiveFrame.mLqi = rxPacketInfo->appendedInfo.lqi; diff --git a/third_party/mbedtls/Makefile.am b/third_party/mbedtls/Makefile.am index b27d8324f..b3bf0b258 100644 --- a/third_party/mbedtls/Makefile.am +++ b/third_party/mbedtls/Makefile.am @@ -51,7 +51,7 @@ libmbedcrypto_a_SOURCES = \ if OPENTHREAD_EXAMPLES_EFR32 nodist_libmbedcrypto_a_SOURCES = \ - @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.0/util/third_party/mbedtls/sl_crypto/src/sl_aes.c \ + @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.1/util/third_party/mbedtls/sl_crypto/src/sl_aes.c \ $(NULL) else libmbedcrypto_a_SOURCES += \ @@ -82,8 +82,8 @@ libmbedcrypto_a_SOURCES += \ if OPENTHREAD_EXAMPLES_EFR32 nodist_libmbedcrypto_a_SOURCES += \ - @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.0/util/third_party/mbedtls/library/ecp.c \ - @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.0/util/third_party/mbedtls/sl_crypto/src/sl_ecp.c \ + @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.1/util/third_party/mbedtls/library/ecp.c \ + @top_builddir@/third_party/silabs/gecko_sdk_suite/v1.1/util/third_party/mbedtls/sl_crypto/src/sl_ecp.c \ $(NULL) else libmbedcrypto_a_SOURCES += \