diff --git a/examples/Makefile-efr32mg1 b/examples/Makefile-efr32mg1
index b46ca8444..e974bcde6 100644
--- a/examples/Makefile-efr32mg1
+++ b/examples/Makefile-efr32mg1
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2017, The OpenThread Authors.
+# Copyright (c) 2020, The OpenThread Authors.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -45,6 +45,7 @@ configure_OPTIONS = \
--enable-ncp \
--enable-radio-only \
--enable-linker-map \
+ --enable-builtin-mbedtls=no \
--with-examples=efr32mg1 \
MBEDTLS_CPPFLAGS="$(EFR32_MBEDTLS_CPPFLAGS)" \
$(NULL)
@@ -56,32 +57,33 @@ endif
TopSourceDir := $(dir $(shell readlink $(firstword $(MAKEFILE_LIST))))..
AbsTopSourceDir := $(dir $(realpath $(firstword $(MAKEFILE_LIST))))..
+# Needed for EFR32_MBEDTLS_CPPFLAGS
+BOARD_LOWERCASE = $(shell echo $(BOARD) | tr A-Z a-z)
#
# Differentiate between boards
#
-ifeq ($(BOARD),BRD4151A)
+ifeq ($(BOARD_LOWERCASE),brd4151a)
MCU = EFR32MG1P232F256GM48
else
$(error Please provide a value for BOARD variable e.g BOARD= BRD4151A (currently supported BRD4151A))
endif
-EFR32_MBEDTLS_CPPFLAGS = -DMBEDTLS_CONFIG_FILE='\"mbedtls-config.h\"'
-EFR32_MBEDTLS_CPPFLAGS += -DMBEDTLS_USER_CONFIG_FILE='\"efr32-mbedtls-config.h\"'
+EFR32_MBEDTLS_CPPFLAGS = -DMBEDTLS_CONFIG_FILE='\"mbedtls_config.h\"'
EFR32_MBEDTLS_CPPFLAGS += -D$(MCU)
EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/examples/platforms/efr32mg1/crypto
-EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v2.7/util/third_party/mbedtls/configs
-EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v2.7/platform/CMSIS/Include
-EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v2.7/util/third_party/mbedtls/sl_crypto/include
-EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v2.7/platform/Device/SiliconLabs/EFR32MG1P/Include
-EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v2.7/platform/emlib/inc
-EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v2.7/platform/radio/rail_lib/chip/efr32/efr32xg1x
-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
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/util/third_party/mbedtls/configs
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/util/third_party/mbedtls/include
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/util/third_party/mbedtls/include/mbedtls
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/util/third_party/mbedtls/sl_crypto/include
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/platform/CMSIS/Include
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/platform/Device/SiliconLabs/EFR32MG1P/Include
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/platform/emlib/inc
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/platform/radio/rail_lib/chip/efr32/efr32xg1x
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/util/silicon_labs/silabs_core/memory_manager
CONFIG_FILE_PATH = $(AbsTopSourceDir)/examples/platforms/efr32mg1/
-HAL_CONF_DIR = $(CONFIG_FILE_PATH)/$(shell echo $(BOARD) | tr A-Z a-z)
+HAL_CONF_DIR = $(CONFIG_FILE_PATH)/$(BOARD_LOWERCASE)
EFR32MG1_CONFIG_FILE_CPPFLAGS = -DOPENTHREAD_PROJECT_CORE_CONFIG_FILE='\"openthread-core-efr32-config.h\"'
EFR32MG1_CONFIG_FILE_CPPFLAGS += -DOPENTHREAD_CORE_CONFIG_PLATFORM_CHECK_FILE='\"openthread-core-efr32-config-check.h\"'
diff --git a/examples/Makefile-efr32mg12 b/examples/Makefile-efr32mg12
index 217b0f036..edc783f86 100644
--- a/examples/Makefile-efr32mg12
+++ b/examples/Makefile-efr32mg12
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2017, The OpenThread Authors.
+# Copyright (c) 2020, The OpenThread Authors.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -48,6 +48,7 @@ configure_OPTIONS = \
--enable-ncp \
--enable-radio-only \
--enable-linker-map \
+ --enable-builtin-mbedtls=no \
--with-examples=efr32mg12 \
MBEDTLS_CPPFLAGS="$(EFR32_MBEDTLS_CPPFLAGS)" \
$(NULL)
@@ -59,6 +60,8 @@ endif
TopSourceDir := $(dir $(shell readlink $(firstword $(MAKEFILE_LIST))))..
AbsTopSourceDir := $(dir $(realpath $(firstword $(MAKEFILE_LIST))))..
+# Needed for EFR32_MBEDTLS_CPPFLAGS
+BOARD_LOWERCASE = $(shell echo $(BOARD) | tr A-Z a-z)
#
# Differentiate between boards
@@ -67,16 +70,16 @@ AbsTopSourceDir := $(dir $(realpath $(firstword $(MAKEFILE_LIST)
# - BRD4166A / SLTB004A / Thunderboard Sense 2 / 2.4GHz@10dBm
# - BRD4170A / SLWSTK6000B / Multiband Wireless Starter Kit / 2.4GHz@19dBm, 915MHz@19dBm, 868MHz@19dBm
#
-ifeq ($(BOARD),BRD4304A)
+ifeq ($(BOARD_LOWERCASE),brd4304a)
MCU = EFR32MG12P432F1024GM48
else
-ifeq ($(BOARD),BRD4161A)
+ifeq ($(BOARD_LOWERCASE),brd4161a)
MCU = EFR32MG12P432F1024GL125
else
-ifeq ($(BOARD),BRD4166A)
+ifeq ($(BOARD_LOWERCASE),brd4166a)
MCU = EFR32MG12P332F1024GL125
else
-ifeq ($(BOARD),BRD4170A)
+ifeq ($(BOARD_LOWERCASE),brd4170a)
MCU = EFR32MG12P433F1024GM68
else
$(error Please provide a value for BOARD variable e.g BOARD=BRD4161A (currently supported BRD4304A, BRD4161A, BRD4166A or BRD4170A))
@@ -84,23 +87,21 @@ endif
endif
endif
endif
-
-EFR32_MBEDTLS_CPPFLAGS = -DMBEDTLS_CONFIG_FILE='\"mbedtls-config.h\"'
-EFR32_MBEDTLS_CPPFLAGS += -DMBEDTLS_USER_CONFIG_FILE='\"efr32-mbedtls-config.h\"'
+EFR32_MBEDTLS_CPPFLAGS = -DMBEDTLS_CONFIG_FILE='\"mbedtls_config.h\"'
EFR32_MBEDTLS_CPPFLAGS += -D$(MCU)
EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/examples/platforms/efr32mg12/crypto
-EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v2.7/util/third_party/mbedtls/configs
-EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v2.7/platform/CMSIS/Include
-EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v2.7/util/third_party/mbedtls/sl_crypto/include
-EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v2.7/platform/Device/SiliconLabs/EFR32MG12P/Include
-EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v2.7/platform/emlib/inc
-EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v2.7/platform/radio/rail_lib/chip/efr32/efr32xg1x
-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
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/util/third_party/mbedtls/configs
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/util/third_party/mbedtls/include
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/util/third_party/mbedtls/include/mbedtls
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/util/third_party/mbedtls/sl_crypto/include
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/platform/CMSIS/Include
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/platform/Device/SiliconLabs/EFR32MG12P/Include
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/platform/emlib/inc
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/platform/radio/rail_lib/chip/efr32/efr32xg1x
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/util/silicon_labs/silabs_core/memory_manager
CONFIG_FILE_PATH = $(AbsTopSourceDir)/examples/platforms/efr32mg12/
-HAL_CONF_DIR = $(CONFIG_FILE_PATH)/$(shell echo $(BOARD) | tr A-Z a-z)
+HAL_CONF_DIR = $(CONFIG_FILE_PATH)/$(BOARD_LOWERCASE)
EFR32MG12_CONFIG_FILE_CPPFLAGS = -DOPENTHREAD_PROJECT_CORE_CONFIG_FILE='\"openthread-core-efr32-config.h\"'
EFR32MG12_CONFIG_FILE_CPPFLAGS += -DOPENTHREAD_CORE_CONFIG_PLATFORM_CHECK_FILE='\"openthread-core-efr32-config-check.h\"'
diff --git a/examples/Makefile-efr32mg13 b/examples/Makefile-efr32mg13
index e1ef7078f..8dc2a09d7 100644
--- a/examples/Makefile-efr32mg13
+++ b/examples/Makefile-efr32mg13
@@ -48,6 +48,7 @@ configure_OPTIONS = \
--enable-ncp \
--enable-radio-only \
--enable-linker-map \
+ --enable-builtin-mbedtls=no \
--with-examples=efr32mg13 \
MBEDTLS_CPPFLAGS="$(EFR32_MBEDTLS_CPPFLAGS)" \
$(NULL)
@@ -59,33 +60,34 @@ endif
TopSourceDir := $(dir $(shell readlink $(firstword $(MAKEFILE_LIST))))..
AbsTopSourceDir := $(dir $(realpath $(firstword $(MAKEFILE_LIST))))..
+# Needed for EFR32_MBEDTLS_CPPFLAGS
+BOARD_LOWERCASE = $(shell echo $(BOARD) | tr A-Z a-z)
#
# Differentiate between boards
# - BRD4168A / SLWSTK6000B / MGM13P Module / 2.4GHz@19dBm
#
-ifeq ($(BOARD),BRD4168A)
+ifeq ($(BOARD_LOWERCASE),brd4168a)
MCU = EFR32MG13P732F512GM48
else
$(error Please provide a value for BOARD variable e.g BOARD=BRD4168A (currently supported BRD4168A))
endif
-EFR32_MBEDTLS_CPPFLAGS = -DMBEDTLS_CONFIG_FILE='\"mbedtls-config.h\"'
-EFR32_MBEDTLS_CPPFLAGS += -DMBEDTLS_USER_CONFIG_FILE='\"efr32-mbedtls-config.h\"'
+EFR32_MBEDTLS_CPPFLAGS = -DMBEDTLS_CONFIG_FILE='\"mbedtls_config.h\"'
EFR32_MBEDTLS_CPPFLAGS += -D$(MCU)
EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/examples/platforms/efr32mg13/crypto
-EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v2.7/util/third_party/mbedtls/configs
-EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v2.7/platform/CMSIS/Include
-EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v2.7/util/third_party/mbedtls/sl_crypto/include
-EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v2.7/platform/Device/SiliconLabs/EFR32MG13P/Include
-EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v2.7/platform/emlib/inc
-EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v2.7/platform/radio/rail_lib/chip/efr32/efr32xg1x
-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
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/util/third_party/mbedtls/configs
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/util/third_party/mbedtls/include
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/util/third_party/mbedtls/include/mbedtls
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/util/third_party/mbedtls/sl_crypto/include
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/platform/CMSIS/Include
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/platform/Device/SiliconLabs/EFR32MG13P/Include
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/platform/emlib/inc
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/platform/radio/rail_lib/chip/efr32/efr32xg1x
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/util/silicon_labs/silabs_core/memory_manager
CONFIG_FILE_PATH = $(AbsTopSourceDir)/examples/platforms/efr32mg13/
-HAL_CONF_DIR = $(CONFIG_FILE_PATH)/$(shell echo $(BOARD) | tr A-Z a-z)
+HAL_CONF_DIR = $(CONFIG_FILE_PATH)/$(BOARD_LOWERCASE)
EFR32MG13_CONFIG_FILE_CPPFLAGS = -DOPENTHREAD_PROJECT_CORE_CONFIG_FILE='\"openthread-core-efr32-config.h\"'
EFR32MG13_CONFIG_FILE_CPPFLAGS += -DOPENTHREAD_CORE_CONFIG_PLATFORM_CHECK_FILE='\"openthread-core-efr32-config-check.h\"'
diff --git a/examples/Makefile-efr32mg21 b/examples/Makefile-efr32mg21
index d670c56a4..ccf41fa2d 100644
--- a/examples/Makefile-efr32mg21
+++ b/examples/Makefile-efr32mg21
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2019, The OpenThread Authors.
+# Copyright (c) 2020, The OpenThread Authors.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -48,6 +48,7 @@ configure_OPTIONS = \
--enable-ncp \
--enable-radio-only \
--enable-linker-map \
+ --enable-builtin-mbedtls=no \
--with-examples=efr32mg21 \
MBEDTLS_CPPFLAGS="$(EFR32_MBEDTLS_CPPFLAGS)" \
$(NULL)
@@ -59,36 +60,36 @@ endif
TopSourceDir := $(dir $(shell readlink $(firstword $(MAKEFILE_LIST))))..
AbsTopSourceDir := $(dir $(realpath $(firstword $(MAKEFILE_LIST))))..
+# Needed for EFR32_MBEDTLS_CPPFLAGS
+BOARD_LOWERCASE = $(shell echo $(BOARD) | tr A-Z a-z)
#
# Differentiate between boards
# - BRD4180A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@20dBm
#
-ifeq ($(BOARD),BRD4180A)
+ifeq ($(BOARD_LOWERCASE),brd4180a)
MCU = EFR32MG21A020F1024IM32
else
$(error Please provide a value for BOARD variable e.g BOARD=BRD4180A (currently supported BRD4180A))
endif
-EFR32_MBEDTLS_CPPFLAGS = -DMBEDTLS_CONFIG_FILE='\"mbedtls-config.h\"'
-EFR32_MBEDTLS_CPPFLAGS += -DMBEDTLS_USER_CONFIG_FILE='\"efr32-mbedtls-config.h\"'
+EFR32_MBEDTLS_CPPFLAGS = -DMBEDTLS_CONFIG_FILE='\"mbedtls_config.h\"'
EFR32_MBEDTLS_CPPFLAGS += -D$(MCU)
EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/examples/platforms/efr32mg21/crypto
-EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v2.7/util/third_party/mbedtls/configs
-EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v2.7/platform/CMSIS/Include
-EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v2.7/util/third_party/mbedtls/sl_crypto/include
-EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v2.7/platform/Device/SiliconLabs/EFR32MG21/Include
-EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v2.7/platform/emlib/inc
-EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v2.7/platform/radio/rail_lib/chip/efr32/efr32xg2x
-EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v2.7/hardware/kit/common/drivers
-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
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/util/third_party/mbedtls/configs
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/util/third_party/mbedtls/include
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/util/third_party/mbedtls/include/mbedtls
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/util/third_party/mbedtls/sl_crypto/include
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/platform/CMSIS/Include
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/platform/Device/SiliconLabs/EFR32MG21/Include
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/platform/emlib/inc
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/platform/radio/rail_lib/chip/efr32/efr32xg2x
+EFR32_MBEDTLS_CPPFLAGS += -I$(AbsTopSourceDir)/third_party/silabs/gecko_sdk_suite/v3.0/util/silicon_labs/silabs_core/memory_manager
EFR32_MBEDTLS_CPPFLAGS += -Wno-unused-function
EFR32_MBEDTLS_CPPFLAGS += -Wno-unused-parameter
CONFIG_FILE_PATH = $(AbsTopSourceDir)/examples/platforms/efr32mg21/
-HAL_CONF_DIR = $(CONFIG_FILE_PATH)/$(shell echo $(BOARD) | tr A-Z a-z)
+HAL_CONF_DIR = $(CONFIG_FILE_PATH)/$(BOARD_LOWERCASE)
EFR32MG21_CONFIG_FILE_CPPFLAGS = -DOPENTHREAD_PROJECT_CORE_CONFIG_FILE='\"openthread-core-efr32-config.h\"'
EFR32MG21_CONFIG_FILE_CPPFLAGS += -DOPENTHREAD_CORE_CONFIG_PLATFORM_CHECK_FILE='\"openthread-core-efr32-config-check.h\"'
@@ -100,7 +101,6 @@ COMMONCFLAGS := \
-Os \
-g \
-I$(HAL_CONF_DIR) \
- -DNVM3_DEFAULT_NVM_SIZE=40960 \
-D__START=main \
-D$(MCU) \
$(EFR32MG21_CONFIG_FILE_CPPFLAGS) \
diff --git a/examples/platforms/efr32mg1/Makefile.am b/examples/platforms/efr32mg1/Makefile.am
index c50b01a2c..55c8169dc 100644
--- a/examples/platforms/efr32mg1/Makefile.am
+++ b/examples/platforms/efr32mg1/Makefile.am
@@ -42,9 +42,10 @@ override CXXFLAGS := $(filter-out -pedantic-errors,$(CXXFLAGS))
override CFLAGS := $(filter-out -Wundef,$(CFLAGS))
override CXXFLAGS := $(filter-out -Wundef,$(CXXFLAGS))
-EFR32_BOARD_DIR = $(shell echo $(BOARD) | tr A-Z a-z)
+BOARD_LOWERCASE = $(shell echo $(BOARD) | tr A-Z a-z)
+BOARD_UPPERCASE = $(shell echo $(BOARD) | tr a-z A-Z)
-SDK_SRC_DIR = $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v2.7
+SDK_SRC_DIR = $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v3.0
libopenthread_efr32mg1_a_CPPFLAGS = \
-DPLATFORM_HEADER=\"platform/base/hal/micro/cortexm3/compiler/gcc.h\" \
@@ -56,14 +57,14 @@ libopenthread_efr32mg1_a_CPPFLAGS =
-DCORTEXM3_EFM32_MICRO \
-DPLAT=EMBER_PLATFORM_CORTEXM3 \
-I$(top_srcdir)/examples/platforms \
- -I$(top_srcdir)/examples/platforms/efr32mg1/$(EFR32_BOARD_DIR) \
+ -I$(top_srcdir)/examples/platforms/efr32mg1/$(BOARD_LOWERCASE) \
-I$(top_srcdir)/include \
-I$(top_srcdir)/src/core \
-I$(top_srcdir)/third_party/silabs/rail_config \
-I$(SDK_SRC_DIR) \
-I$(SDK_SRC_DIR)/hardware/kit/common/bsp \
-I$(SDK_SRC_DIR)/hardware/kit/common/drivers \
- -I$(SDK_SRC_DIR)/hardware/kit/EFR32MG1_$(BOARD)/config \
+ -I$(SDK_SRC_DIR)/hardware/kit/EFR32MG1_$(BOARD_UPPERCASE)/config \
-I$(SDK_SRC_DIR)/platform/base/hal/micro/cortexm3/efm32 \
-I$(SDK_SRC_DIR)/platform/base/hal/micro/cortexm3/efm32/config \
-I$(SDK_SRC_DIR)/platform/bootloader/api \
diff --git a/examples/platforms/efr32mg1/Makefile.platform.am b/examples/platforms/efr32mg1/Makefile.platform.am
index d7920a832..247cf0a39 100644
--- a/examples/platforms/efr32mg1/Makefile.platform.am
+++ b/examples/platforms/efr32mg1/Makefile.platform.am
@@ -30,6 +30,11 @@
# efr32mg1 platform-specific Makefile
#
+
+# Do not enable -Wundef for rail
+override CFLAGS := $(filter-out -Wundef,$(CFLAGS))
+override CXXFLAGS := $(filter-out -Wundef,$(CXXFLAGS))
+
LIBRAIL = $(shell \
if [ "$(DMP)" = "1" ]; then \
echo "librail_multiprotocol_efr32xg1_gcc_release.a"; \
@@ -40,10 +45,20 @@ fi )
LDADD_COMMON += \
$(top_builddir)/examples/platforms/efr32mg1/libopenthread-efr32mg1.a \
$(top_builddir)/third_party/silabs/libsilabs-efr32mg1-sdk.a \
- $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v2.7/platform/radio/rail_lib/autogen/librail_release/$(LIBRAIL) \
- $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v2.7/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a \
+ $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v3.0/platform/radio/rail_lib/autogen/librail_release/$(LIBRAIL) \
+ $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v3.0/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a \
$(NULL)
+if OPENTHREAD_ENABLE_BUILTIN_MBEDTLS
+LDADD_COMMON += \
+ $(top_builddir)/third_party/mbedtls/libmbedcrypto.a \
+ $(NULL)
+else
+LDADD_COMMON += \
+ $(top_builddir)/third_party/silabs/libsilabs-mbedtls.a \
+ $(NULL)
+endif # OPENTHREAD_ENABLE_BUILTIN_MBEDTLS
+
LDFLAGS_COMMON += \
-T $(top_srcdir)/examples/platforms/efr32mg1/efr32mg1.ld \
$(NULL)
diff --git a/examples/platforms/efr32mg1/README.md b/examples/platforms/efr32mg1/README.md
index f6064ee3f..4cc416ff5 100644
--- a/examples/platforms/efr32mg1/README.md
+++ b/examples/platforms/efr32mg1/README.md
@@ -28,8 +28,14 @@ $ ./script/bootstrap
2. Install Flex (Gecko) SDK including RAIL Library from Simplicity Studio.
- Connect EFR32MG1P Wireless Starter Kit to Simplicity Studio.
- - Find Flex SDK v2.7 in the Software Update page and click Install.
- - Flex SDK v2.7 will be installed in the path: `/SimplicityStudio_v4/developer/sdks/gecko_sdk_suite`.
+ - Find Flex SDK v3.0 in the Software Update page and click Install.
+ - Flex SDK v3.0 will be installed in the path:
+ - Mac
+ - `/Applications/Simplicity\ Studio.app/Contents/Eclipse/developer/sdks/gecko_sdk_suite`
+ - Windows
+ - `C:\SiliconLabs\SimplicityStudio\v5\developer\sdks\gecko_sdk_suite`
+ - Linux
+ - `./SimplicityStudio_v5/developer/sdks/gecko_sdk_suite`
For more information on configuring, building, and installing applications for the Wireless Gecko (EFR32) portfolio using FLEX, see [Getting Started with the Silicon Labs Flex Software Development Kit for the Wireless Gecko (EFR32™) Portfolio][qsg138]. For more information on RAIL, see [Radio Abstraction Interface Layer][rail].
@@ -238,4 +244,4 @@ The following toolchain has been used for testing and verification:
The EFR32 example has been verified with following Flex SDK/RAIL Library version:
-- Flex SDK version 2.7.0.0
+- Flex SDK version 3.0.x
diff --git a/examples/platforms/efr32mg1/crypto/efr32-mbedtls-config.h b/examples/platforms/efr32mg1/crypto/efr32-mbedtls-config.h
deleted file mode 100644
index 14f1d1c82..000000000
--- a/examples/platforms/efr32mg1/crypto/efr32-mbedtls-config.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 2020, The OpenThread Authors.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the copyright holder nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef EFR32_MBEDTLS_CONFIG_H
-#define EFR32_MBEDTLS_CONFIG_H
-
-#include "em_device.h"
-
-/**
- * \def MBEDTLS_AES_ALT
- *
- * Enable hardware acceleration for the AES block cipher
- *
- * Module: sl_crypto/src/crypto_aes.c for devices with CRYPTO
- * sl_crypto/src/aes_aes.c for devices with AES
- *
- * See MBEDTLS_AES_C for more information.
- */
-#define MBEDTLS_AES_ALT
-
-/**
- * \def MBEDTLS_ECP_INTERNAL_ALT
- * \def ECP_SHORTWEIERSTRASS
- * \def MBEDTLS_ECP_ADD_MIXED_ALT
- * \def MBEDTLS_ECP_DOUBLE_JAC_ALT
- * \def MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT
- * \def MBEDTLS_ECP_NORMALIZE_JAC_ALT
- *
- * Enable hardware acceleration for the elliptic curve over GF(p) library.
- *
- * Module: sl_crypto/src/crypto_ecp.c
- * Caller: library/ecp.c
- *
- * Requires: MBEDTLS_BIGNUM_C, MBEDTLS_ECP_C and at least one
- * MBEDTLS_ECP_DP_XXX_ENABLED and (CRYPTO_COUNT > 0)
- */
-#if defined(CRYPTO_COUNT) && (CRYPTO_COUNT > 0)
-#define MBEDTLS_ECP_INTERNAL_ALT
-#define ECP_SHORTWEIERSTRASS
-#define MBEDTLS_ECP_ADD_MIXED_ALT
-#define MBEDTLS_ECP_DOUBLE_JAC_ALT
-#define MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT
-#define MBEDTLS_ECP_NORMALIZE_JAC_ALT
-#define MBEDTLS_ECP_RANDOMIZE_JAC_ALT
-#endif
-
-/**
- * \def MBEDTLS_SHA256_ALT
- *
- * Enable hardware acceleration for the SHA-224 and SHA-256 cryptographic
- * hash algorithms.
- *
- * Module: sl_crypto/src/crypto_sha.c
- * Caller: library/entropy.c
- * library/mbedtls_md.c
- * library/ssl_cli.c
- * library/ssl_srv.c
- * library/ssl_tls.c
- *
- * Requires: MBEDTLS_SHA256_C and (CRYPTO_COUNT > 0)
- * See MBEDTLS_SHA256_C for more information.
- */
-#if defined(CRYPTO_COUNT) && (CRYPTO_COUNT > 0)
-#define MBEDTLS_SHA256_ALT
-#endif
-
-#endif // EFR32_MBEDTLS_CONFIG_H
diff --git a/examples/platforms/efr32mg1/crypto/mbedtls_config.h b/examples/platforms/efr32mg1/crypto/mbedtls_config.h
new file mode 100644
index 000000000..95f829ffb
--- /dev/null
+++ b/examples/platforms/efr32mg1/crypto/mbedtls_config.h
@@ -0,0 +1,79 @@
+#ifndef MBEDTLS_CONFIG_H
+#define MBEDTLS_CONFIG_H
+
+// Include the autogenerated mbedtls configuration file
+#include "mbedtls_config_autogen.h"
+
+// <<< Use Configuration Wizard in Context Menu >>>
+// TLS/DTLS configuration
+
+// Complete list of ciphersuites to use, in order of preference.
+// Default: MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8
+// Complete list of ciphersuites to use, in order of preference.
+// The value of this configuration should be updated for the application needs.
+#define MBEDTLS_SSL_CIPHERSUITES MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8
+
+// Maximum TLS/DTLS fragment length in bytes.
+// Default: 768
+// The size configured here determines the size of each of the two
+// internal I/O buffers used in mbedTLS when sending and receiving data.
+#define MBEDTLS_SSL_MAX_CONTENT_LEN 768
+
+// Enable support for RFC 6066 max_fragment_length extension in SSL.
+// Default: 1
+// Enable support for RFC 6066 max_fragment_length extension in SSL.
+#define SL_MBEDTLS_SSL_MAX_FRAGMENT_LENGTH 1
+
+// Enable support for exporting key block and master secret.
+// Default: 1
+// Enable support for exporting key block and master secret.
+// This is required for certain users of TLS, e.g. EAP-TLS.
+#define SL_MBEDTLS_SSL_EXPORT_KEYS 1
+
+// Enable the PSK based ciphersuite modes in SSL / TLS.
+// Default: 0
+// Enable the PSK based ciphersuite modes in SSL / TLS.
+#define SL_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED 1
+
+// Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS.
+// Default: 0
+// Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS.
+#define SL_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED 0
+
+// Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS.
+// Default: 0
+// Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS.
+#define SL_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED 1
+
+// Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS.
+// Default: 0
+// Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS.
+#define SL_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED 0
+
+//
+// <<< end of configuration section >>>
+
+// Convert CMSIS Markup config defines to mbedTLS specific config defines
+#if SL_MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
+#define MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
+#endif
+#if SL_MBEDTLS_SSL_EXPORT_KEYS
+#define MBEDTLS_SSL_EXPORT_KEYS
+#endif
+#if SL_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
+#define MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
+#endif
+#if SL_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED
+#define MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED
+#endif
+#if SL_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
+#define MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
+#endif
+#if SL_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED
+#define MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED
+#endif
+
+// Custom defines can be placed here before check_config.h is included.
+#include "mbedtls/check_config.h"
+
+#endif
diff --git a/examples/platforms/efr32mg1/crypto/mbedtls_config_autogen.h b/examples/platforms/efr32mg1/crypto/mbedtls_config_autogen.h
new file mode 100644
index 000000000..0104fdfcd
--- /dev/null
+++ b/examples/platforms/efr32mg1/crypto/mbedtls_config_autogen.h
@@ -0,0 +1,66 @@
+// This is an autogenerated config file, any changes to this file will be overwritten
+
+#ifndef MBEDTLS_CONFIG_AUTOGEN_H
+#define MBEDTLS_CONFIG_AUTOGEN_H
+
+#define MBEDTLS_ECP_MAX_BITS 256
+
+#define MBEDTLS_MPI_MAX_SIZE 32
+
+#define MBEDTLS_AES_C
+#define MBEDTLS_CIPHER_MODE_CTR
+#define MBEDTLS_CIPHER_MODE_CBC
+#define MBEDTLS_CIPHER_MODE_CFB
+#define MBEDTLS_ASN1_PARSE_C
+#define MBEDTLS_ASN1_WRITE_C
+#define MBEDTLS_BASE64_C
+#define MBEDTLS_CCM_C
+#define MBEDTLS_CIPHER_C
+#define MBEDTLS_CMAC_C
+#define MBEDTLS_SSL_PROTO_DTLS
+#define MBEDTLS_SSL_DTLS_ANTI_REPLAY
+#define MBEDTLS_SSL_DTLS_HELLO_VERIFY
+#define MBEDTLS_SSL_COOKIE_C
+#define MBEDTLS_ECP_C
+#define MBEDTLS_ECP_DP_SECP256R1_ENABLED
+#define MBEDTLS_ECDH_C
+#define MBEDTLS_ECDSA_C
+#define MBEDTLS_ENTROPY_ADC_C
+#define MBEDTLS_ENTROPY_RAIL_C
+#define MBEDTLS_ENTROPY_HARDWARE_ALT_RAIL
+#define MBEDTLS_MD_C
+#define MBEDTLS_ECJPAKE_C
+#define MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
+#define MBEDTLS_BIGNUM_C
+#define MBEDTLS_PEM_PARSE_C
+#define MBEDTLS_ENTROPY_C
+#define MBEDTLS_ENTROPY_FORCE_SHA256
+#define MBEDTLS_ENTROPY_MAX_SOURCES 2
+#define MBEDTLS_NO_PLATFORM_ENTROPY
+#define MBEDTLS_ENTROPY_HARDWARE_ALT
+#define MBEDTLS_CTR_DRBG_C
+#define MBEDTLS_SHA1_C
+#define MBEDTLS_SHA256_C
+#define MBEDTLS_SHA512_C
+#define MBEDTLS_SSL_TLS_C
+#define MBEDTLS_SSL_CLI_C
+#define MBEDTLS_SSL_PROTO_TLS1_2
+#define MBEDTLS_SSL_SRV_C
+#define MBEDTLS_X509_USE_C
+#define MBEDTLS_X509_CRT_PARSE_C
+#define MBEDTLS_X509_CRL_PARSE_C
+#define MBEDTLS_X509_CSR_PARSE_C
+#define MBEDTLS_OID_C
+#define MBEDTLS_PK_C
+#define MBEDTLS_PK_PARSE_C
+
+#include "config-device-acceleration.h"
+
+#include "sl_malloc.h"
+
+#define MBEDTLS_PLATFORM_FREE_MACRO sl_free
+#define MBEDTLS_PLATFORM_CALLOC_MACRO sl_calloc
+#define MBEDTLS_PLATFORM_MEMORY
+#define MBEDTLS_PLATFORM_C
+
+#endif
diff --git a/examples/platforms/efr32mg1/radio.c b/examples/platforms/efr32mg1/radio.c
index ad2ce7991..ac350bc06 100644
--- a/examples/platforms/efr32mg1/radio.c
+++ b/examples/platforms/efr32mg1/radio.c
@@ -1173,3 +1173,27 @@ int8_t otPlatRadioGetReceiveSensitivity(otInstance *aInstance)
return EFR32_RECEIVE_SENSITIVITY;
}
+
+RAIL_AntennaConfig_t halAntennaConfig;
+
+void initAntenna(void)
+{
+#if (HAL_ANTDIV_ENABLE && defined(BSP_ANTDIV_SEL_PORT) && defined(BSP_ANTDIV_SEL_PIN) && defined(BSP_ANTDIV_SEL_LOC))
+ halAntennaConfig.ant0PinEn = true;
+ halAntennaConfig.ant0Port = (uint8_t)BSP_ANTDIV_SEL_PORT;
+ halAntennaConfig.ant0Pin = BSP_ANTDIV_SEL_PIN;
+ halAntennaConfig.ant0Loc = BSP_ANTDIV_SEL_LOC;
+#endif
+#ifdef _SILICON_LABS_32B_SERIES_2
+ halAntennaConfig.defaultPath = BSP_ANTDIV_SEL_LOC;
+#endif
+#if (HAL_ANTDIV_ENABLE && defined(BSP_ANTDIV_NSEL_PORT) && defined(BSP_ANTDIV_NSEL_PIN) && defined(BSP_ANTDIV_NSEL_LOC))
+ halAntennaConfig.ant1PinEn = true;
+ halAntennaConfig.ant1Port = (uint8_t)BSP_ANTDIV_NSEL_PORT;
+ halAntennaConfig.ant1Pin = BSP_ANTDIV_NSEL_PIN;
+ halAntennaConfig.ant1Loc = BSP_ANTDIV_NSEL_LOC;
+#endif
+#if (HAL_ANTDIV_ENABLE || defined(_SILICON_LABS_32B_SERIES_2))
+ (void)RAIL_ConfigAntenna(RAIL_EFR32_HANDLE, &halAntennaConfig);
+#endif
+}
diff --git a/examples/platforms/efr32mg1/system.c b/examples/platforms/efr32mg1/system.c
index 2b5087bb6..b33c543f7 100644
--- a/examples/platforms/efr32mg1/system.c
+++ b/examples/platforms/efr32mg1/system.c
@@ -44,6 +44,9 @@
#include "common/logging.hpp"
#include "bsp.h"
+#include "bsp_init.h"
+#include "dmadrv.h"
+#include "ecode.h"
#include "em_chip.h"
#include "em_cmu.h"
#include "em_core.h"
@@ -63,7 +66,93 @@
#define USE_EFR32_LOG (OPENTHREAD_CONFIG_LOG_OUTPUT == OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED)
-void halInitChipSpecific(void);
+void initAntenna(void);
+
+static void boardDisableSpiFlash(void)
+{
+#if defined(BSP_EXTFLASH_USART) && !defined(HAL_DISABLE_EXTFLASH)
+#include "mx25flash_spi.h"
+ MX25_init();
+ MX25_DP();
+#endif
+}
+
+static void boardLowPowerInit(void)
+{
+ boardDisableSpiFlash();
+}
+
+static void halInitChipSpecific(void)
+{
+#if defined(BSP_DK) && !defined(RAIL_IC_SIM_BUILD)
+ BSP_Init(BSP_INIT_DK_SPI);
+#endif
+ BSP_initDevice();
+
+#if !defined(RAIL_IC_SIM_BUILD)
+ BSP_initBoard();
+#endif
+
+#if HAL_PTI_ENABLE
+ RAIL_PtiConfig_t railPtiConfig = {
+#if HAL_PTI_MODE == HAL_PTI_MODE_SPI
+ .mode = RAIL_PTI_MODE_SPI,
+#elif HAL_PTI_MODE == HAL_PTI_MODE_UART
+ .mode = RAIL_PTI_MODE_UART,
+#elif HAL_PTI_MODE == HAL_PTI_MODE_UART_ONEWIRE
+ .mode = RAIL_PTI_MODE_UART_ONEWIRE,
+#else
+ .mode = RAIL_PTI_MODE_DISABLED,
+#endif
+ .baud = HAL_PTI_BAUD_RATE,
+#ifdef BSP_PTI_DOUT_LOC
+ .doutLoc = BSP_PTI_DOUT_LOC,
+#endif
+ .doutPort = (uint8_t)BSP_PTI_DOUT_PORT,
+ .doutPin = BSP_PTI_DOUT_PIN,
+#if HAL_PTI_MODE == HAL_PTI_MODE_SPI
+#ifdef BSP_PTI_DCLK_LOC
+ .dclkLoc = BSP_PTI_DCLK_LOC,
+#endif
+ .dclkPort = (uint8_t)BSP_PTI_DCLK_PORT,
+ .dclkPin = BSP_PTI_DCLK_PIN,
+#endif
+#if HAL_PTI_MODE != HAL_PTI_MODE_UART_ONEWIRE
+#ifdef BSP_PTI_DFRAME_LOC
+ .dframeLoc = BSP_PTI_DFRAME_LOC,
+#endif
+ .dframePort = (uint8_t)BSP_PTI_DFRAME_PORT,
+ .dframePin = BSP_PTI_DFRAME_PIN
+#endif
+ };
+
+ RAIL_ConfigPti(RAIL_EFR32_HANDLE, &railPtiConfig);
+#endif // HAL_PTI_ENABLE
+
+#if !defined(RAIL_IC_SIM_BUILD)
+ initAntenna();
+
+ // Disable any unused peripherals to ensure we enter a low power mode
+ boardLowPowerInit();
+#endif
+
+#if RAIL_DMA_CHANNEL == DMA_CHANNEL_DMADRV
+ Ecode_t dmaError = DMADRV_Init();
+ if ((dmaError == ECODE_EMDRV_DMADRV_ALREADY_INITIALIZED) || (dmaError == ECODE_EMDRV_DMADRV_OK))
+ {
+ unsigned int channel;
+ dmaError = DMADRV_AllocateChannel(&channel, NULL);
+ if (dmaError == ECODE_EMDRV_DMADRV_OK)
+ {
+ RAIL_UseDma(channel);
+ }
+ }
+#elif defined(RAIL_DMA_CHANNEL) && (RAIL_DMA_CHANNEL != DMA_CHANNEL_INVALID)
+ LDMA_Init_t ldmaInit = LDMA_INIT_DEFAULT;
+ LDMA_Init(&ldmaInit);
+ RAIL_UseDma(RAIL_DMA_CHANNEL);
+#endif
+}
otInstance *sInstance;
static bool (*sCanSleepCallback)(void);
diff --git a/examples/platforms/efr32mg12/Makefile.am b/examples/platforms/efr32mg12/Makefile.am
index 6243d9e9a..770f4b81f 100644
--- a/examples/platforms/efr32mg12/Makefile.am
+++ b/examples/platforms/efr32mg12/Makefile.am
@@ -42,9 +42,10 @@ override CXXFLAGS := $(filter-out -pedantic-errors,$(CXXFLAGS))
override CFLAGS := $(filter-out -Wundef,$(CFLAGS))
override CXXFLAGS := $(filter-out -Wundef,$(CXXFLAGS))
-EFR32_BOARD_DIR = $(shell echo $(BOARD) | tr A-Z a-z)
+BOARD_LOWERCASE = $(shell echo $(BOARD) | tr A-Z a-z)
+BOARD_UPPERCASE = $(shell echo $(BOARD) | tr a-z A-Z)
-SDK_SRC_DIR = $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v2.7
+SDK_SRC_DIR = $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v3.0
libopenthread_efr32mg12_a_CPPFLAGS = \
-DPLATFORM_HEADER=\"platform/base/hal/micro/cortexm3/compiler/gcc.h\" \
@@ -56,14 +57,14 @@ libopenthread_efr32mg12_a_CPPFLAGS =
-DCORTEXM3_EFM32_MICRO \
-DPLAT=EMBER_PLATFORM_CORTEXM3 \
-I$(top_srcdir)/examples/platforms \
- -I$(top_srcdir)/examples/platforms/efr32mg12/$(EFR32_BOARD_DIR) \
+ -I$(top_srcdir)/examples/platforms/efr32mg12/$(BOARD_LOWERCASE) \
-I$(top_srcdir)/include \
-I$(top_srcdir)/src/core \
-I$(top_srcdir)/third_party/silabs/rail_config \
-I$(SDK_SRC_DIR) \
-I$(SDK_SRC_DIR)/hardware/kit/common/bsp \
-I$(SDK_SRC_DIR)/hardware/kit/common/drivers \
- -I$(SDK_SRC_DIR)/hardware/kit/EFR32MG12_$(BOARD)/config \
+ -I$(SDK_SRC_DIR)/hardware/kit/EFR32MG12_$(BOARD_UPPERCASE)/config \
-I$(SDK_SRC_DIR)/platform/base/hal/micro/cortexm3/efm32 \
-I$(SDK_SRC_DIR)/platform/base/hal/micro/cortexm3/efm32/config \
-I$(SDK_SRC_DIR)/platform/common/inc \
diff --git a/examples/platforms/efr32mg12/Makefile.platform.am b/examples/platforms/efr32mg12/Makefile.platform.am
index fc310526c..51f14f2fb 100644
--- a/examples/platforms/efr32mg12/Makefile.platform.am
+++ b/examples/platforms/efr32mg12/Makefile.platform.am
@@ -30,6 +30,11 @@
# efr32mg12 platform-specific Makefile
#
+
+# Do not enable -Wundef for rail
+override CFLAGS := $(filter-out -Wundef,$(CFLAGS))
+override CXXFLAGS := $(filter-out -Wundef,$(CXXFLAGS))
+
LIBRAIL = $(shell \
if [ "$(DMP)" = "1" ]; then \
echo "librail_multiprotocol_efr32xg12_gcc_release.a"; \
@@ -40,10 +45,20 @@ fi )
LDADD_COMMON += \
$(top_builddir)/examples/platforms/efr32mg12/libopenthread-efr32mg12.a \
$(top_builddir)/third_party/silabs/libsilabs-efr32mg12-sdk.a \
- $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v2.7/platform/radio/rail_lib/autogen/librail_release/$(LIBRAIL) \
- $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v2.7/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a \
+ $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v3.0/platform/radio/rail_lib/autogen/librail_release/$(LIBRAIL) \
+ $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v3.0/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a \
$(NULL)
+if OPENTHREAD_ENABLE_BUILTIN_MBEDTLS
+LDADD_COMMON += \
+ $(top_builddir)/third_party/mbedtls/libmbedcrypto.a \
+ $(NULL)
+else
+LDADD_COMMON += \
+ $(top_builddir)/third_party/silabs/libsilabs-mbedtls.a \
+ $(NULL)
+endif # OPENTHREAD_ENABLE_BUILTIN_MBEDTLS
+
LDFLAGS_COMMON += \
-T $(top_srcdir)/examples/platforms/efr32mg12/efr32mg12.ld \
$(NULL)
diff --git a/examples/platforms/efr32mg12/README.md b/examples/platforms/efr32mg12/README.md
index b4e0f35e0..726632d6f 100644
--- a/examples/platforms/efr32mg12/README.md
+++ b/examples/platforms/efr32mg12/README.md
@@ -33,8 +33,14 @@ $ ./script/bootstrap
2. Install Flex (Gecko) SDK including RAIL Library from Simplicity Studio.
- Connect EFR32MG12P Wireless Starter Kit to Simplicity Studio.
- - Find Flex SDK v2.7 in the Software Update page and click Install.
- - Flex SDK v2.7 will be installed in the path: `/SimplicityStudio_v4/developer/sdks/gecko_sdk_suite`.
+ - Find Flex SDK v3.0 in the Software Update page and click Install.
+ - Flex SDK v3.0 will be installed in the path:
+ - Mac
+ - `/Applications/Simplicity\ Studio.app/Contents/Eclipse/developer/sdks/gecko_sdk_suite`
+ - Windows
+ - `C:\SiliconLabs\SimplicityStudio\v5\developer\sdks\gecko_sdk_suite`
+ - Linux
+ - `./SimplicityStudio_v5/developer/sdks/gecko_sdk_suite`
For more information on configuring, building, and installing applications for the Wireless Gecko (EFR32) portfolio using FLEX, see [Getting Started with the Silicon Labs Flex Software Development Kit for the Wireless Gecko (EFR32™) Portfolio][qsg138]. For more information on RAIL, see [Radio Abstraction Interface Layer][rail].
@@ -251,4 +257,4 @@ The following toolchain has been used for testing and verification:
The EFR32 example has been verified with following Flex SDK/RAIL Library version:
-- Flex SDK version 2.7.0.0
+- Flex SDK version 3.0.x
diff --git a/examples/platforms/efr32mg12/crypto/efr32-mbedtls-config.h b/examples/platforms/efr32mg12/crypto/efr32-mbedtls-config.h
deleted file mode 100644
index 14f1d1c82..000000000
--- a/examples/platforms/efr32mg12/crypto/efr32-mbedtls-config.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 2020, The OpenThread Authors.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the copyright holder nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef EFR32_MBEDTLS_CONFIG_H
-#define EFR32_MBEDTLS_CONFIG_H
-
-#include "em_device.h"
-
-/**
- * \def MBEDTLS_AES_ALT
- *
- * Enable hardware acceleration for the AES block cipher
- *
- * Module: sl_crypto/src/crypto_aes.c for devices with CRYPTO
- * sl_crypto/src/aes_aes.c for devices with AES
- *
- * See MBEDTLS_AES_C for more information.
- */
-#define MBEDTLS_AES_ALT
-
-/**
- * \def MBEDTLS_ECP_INTERNAL_ALT
- * \def ECP_SHORTWEIERSTRASS
- * \def MBEDTLS_ECP_ADD_MIXED_ALT
- * \def MBEDTLS_ECP_DOUBLE_JAC_ALT
- * \def MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT
- * \def MBEDTLS_ECP_NORMALIZE_JAC_ALT
- *
- * Enable hardware acceleration for the elliptic curve over GF(p) library.
- *
- * Module: sl_crypto/src/crypto_ecp.c
- * Caller: library/ecp.c
- *
- * Requires: MBEDTLS_BIGNUM_C, MBEDTLS_ECP_C and at least one
- * MBEDTLS_ECP_DP_XXX_ENABLED and (CRYPTO_COUNT > 0)
- */
-#if defined(CRYPTO_COUNT) && (CRYPTO_COUNT > 0)
-#define MBEDTLS_ECP_INTERNAL_ALT
-#define ECP_SHORTWEIERSTRASS
-#define MBEDTLS_ECP_ADD_MIXED_ALT
-#define MBEDTLS_ECP_DOUBLE_JAC_ALT
-#define MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT
-#define MBEDTLS_ECP_NORMALIZE_JAC_ALT
-#define MBEDTLS_ECP_RANDOMIZE_JAC_ALT
-#endif
-
-/**
- * \def MBEDTLS_SHA256_ALT
- *
- * Enable hardware acceleration for the SHA-224 and SHA-256 cryptographic
- * hash algorithms.
- *
- * Module: sl_crypto/src/crypto_sha.c
- * Caller: library/entropy.c
- * library/mbedtls_md.c
- * library/ssl_cli.c
- * library/ssl_srv.c
- * library/ssl_tls.c
- *
- * Requires: MBEDTLS_SHA256_C and (CRYPTO_COUNT > 0)
- * See MBEDTLS_SHA256_C for more information.
- */
-#if defined(CRYPTO_COUNT) && (CRYPTO_COUNT > 0)
-#define MBEDTLS_SHA256_ALT
-#endif
-
-#endif // EFR32_MBEDTLS_CONFIG_H
diff --git a/examples/platforms/efr32mg12/crypto/mbedtls_config.h b/examples/platforms/efr32mg12/crypto/mbedtls_config.h
new file mode 100644
index 000000000..95f829ffb
--- /dev/null
+++ b/examples/platforms/efr32mg12/crypto/mbedtls_config.h
@@ -0,0 +1,79 @@
+#ifndef MBEDTLS_CONFIG_H
+#define MBEDTLS_CONFIG_H
+
+// Include the autogenerated mbedtls configuration file
+#include "mbedtls_config_autogen.h"
+
+// <<< Use Configuration Wizard in Context Menu >>>
+// TLS/DTLS configuration
+
+// Complete list of ciphersuites to use, in order of preference.
+// Default: MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8
+// Complete list of ciphersuites to use, in order of preference.
+// The value of this configuration should be updated for the application needs.
+#define MBEDTLS_SSL_CIPHERSUITES MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8
+
+// Maximum TLS/DTLS fragment length in bytes.
+// Default: 768
+// The size configured here determines the size of each of the two
+// internal I/O buffers used in mbedTLS when sending and receiving data.
+#define MBEDTLS_SSL_MAX_CONTENT_LEN 768
+
+// Enable support for RFC 6066 max_fragment_length extension in SSL.
+// Default: 1
+// Enable support for RFC 6066 max_fragment_length extension in SSL.
+#define SL_MBEDTLS_SSL_MAX_FRAGMENT_LENGTH 1
+
+// Enable support for exporting key block and master secret.
+// Default: 1
+// Enable support for exporting key block and master secret.
+// This is required for certain users of TLS, e.g. EAP-TLS.
+#define SL_MBEDTLS_SSL_EXPORT_KEYS 1
+
+// Enable the PSK based ciphersuite modes in SSL / TLS.
+// Default: 0
+// Enable the PSK based ciphersuite modes in SSL / TLS.
+#define SL_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED 1
+
+// Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS.
+// Default: 0
+// Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS.
+#define SL_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED 0
+
+// Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS.
+// Default: 0
+// Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS.
+#define SL_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED 1
+
+// Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS.
+// Default: 0
+// Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS.
+#define SL_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED 0
+
+//
+// <<< end of configuration section >>>
+
+// Convert CMSIS Markup config defines to mbedTLS specific config defines
+#if SL_MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
+#define MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
+#endif
+#if SL_MBEDTLS_SSL_EXPORT_KEYS
+#define MBEDTLS_SSL_EXPORT_KEYS
+#endif
+#if SL_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
+#define MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
+#endif
+#if SL_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED
+#define MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED
+#endif
+#if SL_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
+#define MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
+#endif
+#if SL_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED
+#define MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED
+#endif
+
+// Custom defines can be placed here before check_config.h is included.
+#include "mbedtls/check_config.h"
+
+#endif
diff --git a/examples/platforms/efr32mg12/crypto/mbedtls_config_autogen.h b/examples/platforms/efr32mg12/crypto/mbedtls_config_autogen.h
new file mode 100644
index 000000000..42240ccc7
--- /dev/null
+++ b/examples/platforms/efr32mg12/crypto/mbedtls_config_autogen.h
@@ -0,0 +1,69 @@
+// This is an autogenerated config file, any changes to this file will be overwritten
+
+#ifndef MBEDTLS_CONFIG_AUTOGEN_H
+#define MBEDTLS_CONFIG_AUTOGEN_H
+
+#define MBEDTLS_ECP_MAX_BITS 256
+
+#define MBEDTLS_MPI_MAX_SIZE 32
+
+#define MBEDTLS_AES_C
+#define MBEDTLS_CIPHER_MODE_CTR
+#define MBEDTLS_CIPHER_MODE_CBC
+#define MBEDTLS_CIPHER_MODE_CFB
+#define MBEDTLS_ASN1_PARSE_C
+#define MBEDTLS_ASN1_WRITE_C
+#define MBEDTLS_BASE64_C
+#define MBEDTLS_CCM_C
+#define MBEDTLS_CIPHER_C
+#define MBEDTLS_CMAC_C
+#define MBEDTLS_SSL_PROTO_DTLS
+#define MBEDTLS_SSL_DTLS_ANTI_REPLAY
+#define MBEDTLS_SSL_DTLS_HELLO_VERIFY
+#define MBEDTLS_SSL_COOKIE_C
+#define MBEDTLS_ECP_C
+#define MBEDTLS_ECP_DP_SECP256R1_ENABLED
+#define MBEDTLS_ECDH_C
+#define MBEDTLS_ECDSA_C
+#define MBEDTLS_ENTROPY_ADC_C
+#define MBEDTLS_ENTROPY_RAIL_C
+#define MBEDTLS_MD_C
+#define MBEDTLS_ECJPAKE_C
+#define MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
+#define MBEDTLS_BIGNUM_C
+#define MBEDTLS_PEM_PARSE_C
+#define MBEDTLS_ENTROPY_C
+#define MBEDTLS_ENTROPY_FORCE_SHA256
+#define MBEDTLS_ENTROPY_MAX_SOURCES 2
+#define MBEDTLS_NO_PLATFORM_ENTROPY
+#define MBEDTLS_ENTROPY_HARDWARE_ALT
+#define MBEDTLS_CTR_DRBG_C
+#define MBEDTLS_SHA1_C
+#define MBEDTLS_SHA256_C
+#define MBEDTLS_SHA512_C
+#define MBEDTLS_SSL_TLS_C
+#define MBEDTLS_SSL_CLI_C
+#define MBEDTLS_SSL_PROTO_TLS1_2
+#define MBEDTLS_SSL_SRV_C
+#define MBEDTLS_X509_USE_C
+#define MBEDTLS_X509_CRT_PARSE_C
+#define MBEDTLS_X509_CRL_PARSE_C
+#define MBEDTLS_X509_CSR_PARSE_C
+#define MBEDTLS_OID_C
+#define MBEDTLS_PK_C
+#define MBEDTLS_PK_PARSE_C
+
+#include "config-device-acceleration.h"
+
+#if defined(MBEDTLS_TRNG_PRESENT)
+#define MBEDTLS_TRNG_C
+#endif
+
+#include "sl_malloc.h"
+
+#define MBEDTLS_PLATFORM_FREE_MACRO sl_free
+#define MBEDTLS_PLATFORM_CALLOC_MACRO sl_calloc
+#define MBEDTLS_PLATFORM_MEMORY
+#define MBEDTLS_PLATFORM_C
+
+#endif
diff --git a/examples/platforms/efr32mg12/radio.c b/examples/platforms/efr32mg12/radio.c
index ad2ce7991..ac350bc06 100644
--- a/examples/platforms/efr32mg12/radio.c
+++ b/examples/platforms/efr32mg12/radio.c
@@ -1173,3 +1173,27 @@ int8_t otPlatRadioGetReceiveSensitivity(otInstance *aInstance)
return EFR32_RECEIVE_SENSITIVITY;
}
+
+RAIL_AntennaConfig_t halAntennaConfig;
+
+void initAntenna(void)
+{
+#if (HAL_ANTDIV_ENABLE && defined(BSP_ANTDIV_SEL_PORT) && defined(BSP_ANTDIV_SEL_PIN) && defined(BSP_ANTDIV_SEL_LOC))
+ halAntennaConfig.ant0PinEn = true;
+ halAntennaConfig.ant0Port = (uint8_t)BSP_ANTDIV_SEL_PORT;
+ halAntennaConfig.ant0Pin = BSP_ANTDIV_SEL_PIN;
+ halAntennaConfig.ant0Loc = BSP_ANTDIV_SEL_LOC;
+#endif
+#ifdef _SILICON_LABS_32B_SERIES_2
+ halAntennaConfig.defaultPath = BSP_ANTDIV_SEL_LOC;
+#endif
+#if (HAL_ANTDIV_ENABLE && defined(BSP_ANTDIV_NSEL_PORT) && defined(BSP_ANTDIV_NSEL_PIN) && defined(BSP_ANTDIV_NSEL_LOC))
+ halAntennaConfig.ant1PinEn = true;
+ halAntennaConfig.ant1Port = (uint8_t)BSP_ANTDIV_NSEL_PORT;
+ halAntennaConfig.ant1Pin = BSP_ANTDIV_NSEL_PIN;
+ halAntennaConfig.ant1Loc = BSP_ANTDIV_NSEL_LOC;
+#endif
+#if (HAL_ANTDIV_ENABLE || defined(_SILICON_LABS_32B_SERIES_2))
+ (void)RAIL_ConfigAntenna(RAIL_EFR32_HANDLE, &halAntennaConfig);
+#endif
+}
diff --git a/examples/platforms/efr32mg12/sleepy-demo/sleepy-demo-ftd/Makefile.am b/examples/platforms/efr32mg12/sleepy-demo/sleepy-demo-ftd/Makefile.am
index 2443898c7..ce90b4bed 100644
--- a/examples/platforms/efr32mg12/sleepy-demo/sleepy-demo-ftd/Makefile.am
+++ b/examples/platforms/efr32mg12/sleepy-demo/sleepy-demo-ftd/Makefile.am
@@ -32,9 +32,10 @@ include $(top_srcdir)/examples/platforms/Makefile.platform.am
override CFLAGS := $(filter-out -Wconversion,$(CFLAGS))
override CXXFLAGS := $(filter-out -Wconversion,$(CXXFLAGS))
-EFR32_BOARD_DIR = $(shell echo $(BOARD) | tr A-Z a-z)
+BOARD_LOWERCASE = $(shell echo $(BOARD) | tr A-Z a-z)
+BOARD_UPPERCASE = $(shell echo $(BOARD) | tr a-z A-Z)
-SDK_SRC_DIR = $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v2.7
+SDK_SRC_DIR = $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v3.0
$(top_builddir)/examples/platforms/efr32mg12/libopenthread-efr32mg12.a:
(cd $(top_builddir)/examples/platforms/efr32mg12/ && $(MAKE) $(AM_MAKEFLAGS) libopenthread-efr32mg12.a )
@@ -52,13 +53,13 @@ CPPFLAGS_COMMON +=
-DCORTEXM3_EFM32_MICRO \
-DPLAT=EMBER_PLATFORM_CORTEXM3 \
-I$(top_srcdir)/examples/platforms \
- -I$(top_srcdir)/examples/platforms/efr32mg12/$(EFR32_BOARD_DIR) \
+ -I$(top_srcdir)/examples/platforms/efr32mg12/$(BOARD_LOWERCASE) \
-I$(top_srcdir)/include \
-I$(top_srcdir)/src/core \
-I$(top_srcdir)/third_party/silabs/rail_config \
-I$(SDK_SRC_DIR)/hardware/kit/common/bsp \
-I$(SDK_SRC_DIR)/hardware/kit/common/drivers \
- -I$(SDK_SRC_DIR)/hardware/kit/EFR32MG12_$(BOARD)/config \
+ -I$(SDK_SRC_DIR)/hardware/kit/EFR32MG12_$(BOARD_UPPERCASE)/config \
-I$(SDK_SRC_DIR)/platform/base/hal/micro/cortexm3/efm32 \
-I$(SDK_SRC_DIR)/platform/base/hal/micro/cortexm3/efm32/config \
-I$(SDK_SRC_DIR)/platform/common/inc \
diff --git a/examples/platforms/efr32mg12/sleepy-demo/sleepy-demo-mtd/Makefile.am b/examples/platforms/efr32mg12/sleepy-demo/sleepy-demo-mtd/Makefile.am
index c72759b1c..91aba9b59 100644
--- a/examples/platforms/efr32mg12/sleepy-demo/sleepy-demo-mtd/Makefile.am
+++ b/examples/platforms/efr32mg12/sleepy-demo/sleepy-demo-mtd/Makefile.am
@@ -32,9 +32,10 @@ include $(top_srcdir)/examples/platforms/Makefile.platform.am
override CFLAGS := $(filter-out -Wconversion,$(CFLAGS))
override CXXFLAGS := $(filter-out -Wconversion,$(CXXFLAGS))
-EFR32_BOARD_DIR = $(shell echo $(BOARD) | tr A-Z a-z)
+BOARD_LOWERCASE = $(shell echo $(BOARD) | tr A-Z a-z)
+BOARD_UPPERCASE = $(shell echo $(BOARD) | tr a-z A-Z)
-SDK_SRC_DIR = $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v2.7
+SDK_SRC_DIR = $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v3.0
$(top_builddir)/examples/platforms/efr32mg12/libopenthread-efr32mg12.a:
(cd $(top_builddir)/examples/platforms/efr32mg12/ && $(MAKE) $(AM_MAKEFLAGS) libopenthread-efr32mg12.a )
@@ -52,13 +53,13 @@ CPPFLAGS_COMMON +=
-DCORTEXM3_EFM32_MICRO \
-DPLAT=EMBER_PLATFORM_CORTEXM3 \
-I$(top_srcdir)/examples/platforms \
- -I$(top_srcdir)/examples/platforms/efr32mg12/$(EFR32_BOARD_DIR) \
+ -I$(top_srcdir)/examples/platforms/efr32mg12/$(BOARD_LOWERCASE) \
-I$(top_srcdir)/include \
-I$(top_srcdir)/src/core \
-I$(top_srcdir)/third_party/silabs/rail_config \
-I$(SDK_SRC_DIR)/hardware/kit/common/bsp \
-I$(SDK_SRC_DIR)/hardware/kit/common/drivers \
- -I$(SDK_SRC_DIR)/hardware/kit/EFR32MG12_$(BOARD)/config \
+ -I$(SDK_SRC_DIR)/hardware/kit/EFR32MG12_$(BOARD_UPPERCASE)/config \
-I$(SDK_SRC_DIR)/platform/base/hal/micro/cortexm3/efm32 \
-I$(SDK_SRC_DIR)/platform/base/hal/micro/cortexm3/efm32/config \
-I$(SDK_SRC_DIR)/platform/common/inc \
diff --git a/examples/platforms/efr32mg12/system.c b/examples/platforms/efr32mg12/system.c
index 2b5087bb6..b33c543f7 100644
--- a/examples/platforms/efr32mg12/system.c
+++ b/examples/platforms/efr32mg12/system.c
@@ -44,6 +44,9 @@
#include "common/logging.hpp"
#include "bsp.h"
+#include "bsp_init.h"
+#include "dmadrv.h"
+#include "ecode.h"
#include "em_chip.h"
#include "em_cmu.h"
#include "em_core.h"
@@ -63,7 +66,93 @@
#define USE_EFR32_LOG (OPENTHREAD_CONFIG_LOG_OUTPUT == OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED)
-void halInitChipSpecific(void);
+void initAntenna(void);
+
+static void boardDisableSpiFlash(void)
+{
+#if defined(BSP_EXTFLASH_USART) && !defined(HAL_DISABLE_EXTFLASH)
+#include "mx25flash_spi.h"
+ MX25_init();
+ MX25_DP();
+#endif
+}
+
+static void boardLowPowerInit(void)
+{
+ boardDisableSpiFlash();
+}
+
+static void halInitChipSpecific(void)
+{
+#if defined(BSP_DK) && !defined(RAIL_IC_SIM_BUILD)
+ BSP_Init(BSP_INIT_DK_SPI);
+#endif
+ BSP_initDevice();
+
+#if !defined(RAIL_IC_SIM_BUILD)
+ BSP_initBoard();
+#endif
+
+#if HAL_PTI_ENABLE
+ RAIL_PtiConfig_t railPtiConfig = {
+#if HAL_PTI_MODE == HAL_PTI_MODE_SPI
+ .mode = RAIL_PTI_MODE_SPI,
+#elif HAL_PTI_MODE == HAL_PTI_MODE_UART
+ .mode = RAIL_PTI_MODE_UART,
+#elif HAL_PTI_MODE == HAL_PTI_MODE_UART_ONEWIRE
+ .mode = RAIL_PTI_MODE_UART_ONEWIRE,
+#else
+ .mode = RAIL_PTI_MODE_DISABLED,
+#endif
+ .baud = HAL_PTI_BAUD_RATE,
+#ifdef BSP_PTI_DOUT_LOC
+ .doutLoc = BSP_PTI_DOUT_LOC,
+#endif
+ .doutPort = (uint8_t)BSP_PTI_DOUT_PORT,
+ .doutPin = BSP_PTI_DOUT_PIN,
+#if HAL_PTI_MODE == HAL_PTI_MODE_SPI
+#ifdef BSP_PTI_DCLK_LOC
+ .dclkLoc = BSP_PTI_DCLK_LOC,
+#endif
+ .dclkPort = (uint8_t)BSP_PTI_DCLK_PORT,
+ .dclkPin = BSP_PTI_DCLK_PIN,
+#endif
+#if HAL_PTI_MODE != HAL_PTI_MODE_UART_ONEWIRE
+#ifdef BSP_PTI_DFRAME_LOC
+ .dframeLoc = BSP_PTI_DFRAME_LOC,
+#endif
+ .dframePort = (uint8_t)BSP_PTI_DFRAME_PORT,
+ .dframePin = BSP_PTI_DFRAME_PIN
+#endif
+ };
+
+ RAIL_ConfigPti(RAIL_EFR32_HANDLE, &railPtiConfig);
+#endif // HAL_PTI_ENABLE
+
+#if !defined(RAIL_IC_SIM_BUILD)
+ initAntenna();
+
+ // Disable any unused peripherals to ensure we enter a low power mode
+ boardLowPowerInit();
+#endif
+
+#if RAIL_DMA_CHANNEL == DMA_CHANNEL_DMADRV
+ Ecode_t dmaError = DMADRV_Init();
+ if ((dmaError == ECODE_EMDRV_DMADRV_ALREADY_INITIALIZED) || (dmaError == ECODE_EMDRV_DMADRV_OK))
+ {
+ unsigned int channel;
+ dmaError = DMADRV_AllocateChannel(&channel, NULL);
+ if (dmaError == ECODE_EMDRV_DMADRV_OK)
+ {
+ RAIL_UseDma(channel);
+ }
+ }
+#elif defined(RAIL_DMA_CHANNEL) && (RAIL_DMA_CHANNEL != DMA_CHANNEL_INVALID)
+ LDMA_Init_t ldmaInit = LDMA_INIT_DEFAULT;
+ LDMA_Init(&ldmaInit);
+ RAIL_UseDma(RAIL_DMA_CHANNEL);
+#endif
+}
otInstance *sInstance;
static bool (*sCanSleepCallback)(void);
diff --git a/examples/platforms/efr32mg13/Makefile.am b/examples/platforms/efr32mg13/Makefile.am
index 2a54b242c..4673b9935 100644
--- a/examples/platforms/efr32mg13/Makefile.am
+++ b/examples/platforms/efr32mg13/Makefile.am
@@ -42,9 +42,10 @@ override CXXFLAGS := $(filter-out -pedantic-errors,$(CXXFLAGS))
override CFLAGS := $(filter-out -Wundef,$(CFLAGS))
override CXXFLAGS := $(filter-out -Wundef,$(CXXFLAGS))
-EFR32_BOARD_DIR = $(shell echo $(BOARD) | tr A-Z a-z)
+BOARD_LOWERCASE = $(shell echo $(BOARD) | tr A-Z a-z)
+BOARD_UPPERCASE = $(shell echo $(BOARD) | tr a-z A-Z)
-SDK_SRC_DIR = $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v2.7
+SDK_SRC_DIR = $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v3.0
libopenthread_efr32mg13_a_CPPFLAGS = \
-DPLATFORM_HEADER=\"platform/base/hal/micro/cortexm3/compiler/gcc.h\" \
@@ -56,14 +57,14 @@ libopenthread_efr32mg13_a_CPPFLAGS =
-DCORTEXM3_EFM32_MICRO \
-DPLAT=EMBER_PLATFORM_CORTEXM3 \
-I$(top_srcdir)/examples/platforms \
- -I$(top_srcdir)/examples/platforms/efr32mg13/$(EFR32_BOARD_DIR) \
+ -I$(top_srcdir)/examples/platforms/efr32mg13/$(BOARD_LOWERCASE) \
-I$(top_srcdir)/include \
-I$(top_srcdir)/src/core \
-I$(top_srcdir)/third_party/silabs/rail_config \
-I$(SDK_SRC_DIR) \
-I$(SDK_SRC_DIR)/hardware/kit/common/bsp \
-I$(SDK_SRC_DIR)/hardware/kit/common/drivers \
- -I$(SDK_SRC_DIR)/hardware/kit/EFR32MG13_$(BOARD)/config \
+ -I$(SDK_SRC_DIR)/hardware/kit/EFR32MG13_$(BOARD_UPPERCASE)/config \
-I$(SDK_SRC_DIR)/platform/base/hal/micro/cortexm3/efm32 \
-I$(SDK_SRC_DIR)/platform/base/hal/micro/cortexm3/efm32/config \
-I$(SDK_SRC_DIR)/platform/common/inc \
diff --git a/examples/platforms/efr32mg13/Makefile.platform.am b/examples/platforms/efr32mg13/Makefile.platform.am
index 5addd35d9..cacef197e 100644
--- a/examples/platforms/efr32mg13/Makefile.platform.am
+++ b/examples/platforms/efr32mg13/Makefile.platform.am
@@ -30,6 +30,11 @@
# efr32mg13 platform-specific Makefile
#
+
+# Do not enable -Wundef for rail
+override CFLAGS := $(filter-out -Wundef,$(CFLAGS))
+override CXXFLAGS := $(filter-out -Wundef,$(CXXFLAGS))
+
LIBRAIL = $(shell \
if [ "$(DMP)" = "1" ]; then \
echo "librail_multiprotocol_efr32xg13_gcc_release.a"; \
@@ -40,10 +45,20 @@ fi )
LDADD_COMMON += \
$(top_builddir)/examples/platforms/efr32mg13/libopenthread-efr32mg13.a \
$(top_builddir)/third_party/silabs/libsilabs-efr32mg13-sdk.a \
- $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v2.7/platform/radio/rail_lib/autogen/librail_release/$(LIBRAIL) \
- $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v2.7/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a \
+ $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v3.0/platform/radio/rail_lib/autogen/librail_release/$(LIBRAIL) \
+ $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v3.0/platform/emdrv/nvm3/lib/libnvm3_CM4_gcc.a \
$(NULL)
+if OPENTHREAD_ENABLE_BUILTIN_MBEDTLS
+LDADD_COMMON += \
+ $(top_builddir)/third_party/mbedtls/libmbedcrypto.a \
+ $(NULL)
+else
+LDADD_COMMON += \
+ $(top_builddir)/third_party/silabs/libsilabs-mbedtls.a \
+ $(NULL)
+endif # OPENTHREAD_ENABLE_BUILTIN_MBEDTLS
+
LDFLAGS_COMMON += \
-T $(top_srcdir)/examples/platforms/efr32mg13/efr32mg13.ld \
$(NULL)
diff --git a/examples/platforms/efr32mg13/README.md b/examples/platforms/efr32mg13/README.md
index 2f787dd08..fe5058f13 100644
--- a/examples/platforms/efr32mg13/README.md
+++ b/examples/platforms/efr32mg13/README.md
@@ -32,8 +32,14 @@ $ ./script/bootstrap
2. Install Flex (Gecko) SDK including RAIL Library from Simplicity Studio.
- Connect EFR32MG13P Wireless Starter Kit to Simplicity Studio.
- - Find Flex SDK v2.7 in the Software Update page and click Install.
- - Flex SDK v2.7 will be installed in the path: `/SimplicityStudio_v4/developer/sdks/gecko_sdk_suite`.
+ - Find Flex SDK v3.0 in the Software Update page and click Install.
+ - Flex SDK v3.0 will be installed in the path:
+ - Mac
+ - `/Applications/Simplicity\ Studio.app/Contents/Eclipse/developer/sdks/gecko_sdk_suite`
+ - Windows
+ - `C:\SiliconLabs\SimplicityStudio\v5\developer\sdks\gecko_sdk_suite`
+ - Linux
+ - `./SimplicityStudio_v5/developer/sdks/gecko_sdk_suite`
For more information on configuring, building, and installing applications for the Wireless Gecko (EFR32) portfolio using FLEX, see [Getting Started with the Silicon Labs Flex Software Development Kit for the Wireless Gecko (EFR32™) Portfolio][qsg138]. For more information on RAIL, see [Radio Abstraction Interface Layer][rail].
@@ -244,4 +250,4 @@ The following toolchain has been used for testing and verification:
The EFR32 example has been verified with following Flex SDK/RAIL Library version:
-- Flex SDK version 2.7.0.0
+- Flex SDK version 3.0.x
diff --git a/examples/platforms/efr32mg13/crypto/efr32-mbedtls-config.h b/examples/platforms/efr32mg13/crypto/efr32-mbedtls-config.h
deleted file mode 100644
index 14f1d1c82..000000000
--- a/examples/platforms/efr32mg13/crypto/efr32-mbedtls-config.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 2020, The OpenThread Authors.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the copyright holder nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef EFR32_MBEDTLS_CONFIG_H
-#define EFR32_MBEDTLS_CONFIG_H
-
-#include "em_device.h"
-
-/**
- * \def MBEDTLS_AES_ALT
- *
- * Enable hardware acceleration for the AES block cipher
- *
- * Module: sl_crypto/src/crypto_aes.c for devices with CRYPTO
- * sl_crypto/src/aes_aes.c for devices with AES
- *
- * See MBEDTLS_AES_C for more information.
- */
-#define MBEDTLS_AES_ALT
-
-/**
- * \def MBEDTLS_ECP_INTERNAL_ALT
- * \def ECP_SHORTWEIERSTRASS
- * \def MBEDTLS_ECP_ADD_MIXED_ALT
- * \def MBEDTLS_ECP_DOUBLE_JAC_ALT
- * \def MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT
- * \def MBEDTLS_ECP_NORMALIZE_JAC_ALT
- *
- * Enable hardware acceleration for the elliptic curve over GF(p) library.
- *
- * Module: sl_crypto/src/crypto_ecp.c
- * Caller: library/ecp.c
- *
- * Requires: MBEDTLS_BIGNUM_C, MBEDTLS_ECP_C and at least one
- * MBEDTLS_ECP_DP_XXX_ENABLED and (CRYPTO_COUNT > 0)
- */
-#if defined(CRYPTO_COUNT) && (CRYPTO_COUNT > 0)
-#define MBEDTLS_ECP_INTERNAL_ALT
-#define ECP_SHORTWEIERSTRASS
-#define MBEDTLS_ECP_ADD_MIXED_ALT
-#define MBEDTLS_ECP_DOUBLE_JAC_ALT
-#define MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT
-#define MBEDTLS_ECP_NORMALIZE_JAC_ALT
-#define MBEDTLS_ECP_RANDOMIZE_JAC_ALT
-#endif
-
-/**
- * \def MBEDTLS_SHA256_ALT
- *
- * Enable hardware acceleration for the SHA-224 and SHA-256 cryptographic
- * hash algorithms.
- *
- * Module: sl_crypto/src/crypto_sha.c
- * Caller: library/entropy.c
- * library/mbedtls_md.c
- * library/ssl_cli.c
- * library/ssl_srv.c
- * library/ssl_tls.c
- *
- * Requires: MBEDTLS_SHA256_C and (CRYPTO_COUNT > 0)
- * See MBEDTLS_SHA256_C for more information.
- */
-#if defined(CRYPTO_COUNT) && (CRYPTO_COUNT > 0)
-#define MBEDTLS_SHA256_ALT
-#endif
-
-#endif // EFR32_MBEDTLS_CONFIG_H
diff --git a/examples/platforms/efr32mg13/crypto/mbedtls_config.h b/examples/platforms/efr32mg13/crypto/mbedtls_config.h
new file mode 100644
index 000000000..95f829ffb
--- /dev/null
+++ b/examples/platforms/efr32mg13/crypto/mbedtls_config.h
@@ -0,0 +1,79 @@
+#ifndef MBEDTLS_CONFIG_H
+#define MBEDTLS_CONFIG_H
+
+// Include the autogenerated mbedtls configuration file
+#include "mbedtls_config_autogen.h"
+
+// <<< Use Configuration Wizard in Context Menu >>>
+// TLS/DTLS configuration
+
+// Complete list of ciphersuites to use, in order of preference.
+// Default: MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8
+// Complete list of ciphersuites to use, in order of preference.
+// The value of this configuration should be updated for the application needs.
+#define MBEDTLS_SSL_CIPHERSUITES MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8
+
+// Maximum TLS/DTLS fragment length in bytes.
+// Default: 768
+// The size configured here determines the size of each of the two
+// internal I/O buffers used in mbedTLS when sending and receiving data.
+#define MBEDTLS_SSL_MAX_CONTENT_LEN 768
+
+// Enable support for RFC 6066 max_fragment_length extension in SSL.
+// Default: 1
+// Enable support for RFC 6066 max_fragment_length extension in SSL.
+#define SL_MBEDTLS_SSL_MAX_FRAGMENT_LENGTH 1
+
+// Enable support for exporting key block and master secret.
+// Default: 1
+// Enable support for exporting key block and master secret.
+// This is required for certain users of TLS, e.g. EAP-TLS.
+#define SL_MBEDTLS_SSL_EXPORT_KEYS 1
+
+// Enable the PSK based ciphersuite modes in SSL / TLS.
+// Default: 0
+// Enable the PSK based ciphersuite modes in SSL / TLS.
+#define SL_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED 1
+
+// Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS.
+// Default: 0
+// Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS.
+#define SL_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED 0
+
+// Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS.
+// Default: 0
+// Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS.
+#define SL_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED 1
+
+// Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS.
+// Default: 0
+// Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS.
+#define SL_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED 0
+
+//
+// <<< end of configuration section >>>
+
+// Convert CMSIS Markup config defines to mbedTLS specific config defines
+#if SL_MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
+#define MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
+#endif
+#if SL_MBEDTLS_SSL_EXPORT_KEYS
+#define MBEDTLS_SSL_EXPORT_KEYS
+#endif
+#if SL_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
+#define MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
+#endif
+#if SL_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED
+#define MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED
+#endif
+#if SL_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
+#define MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
+#endif
+#if SL_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED
+#define MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED
+#endif
+
+// Custom defines can be placed here before check_config.h is included.
+#include "mbedtls/check_config.h"
+
+#endif
diff --git a/examples/platforms/efr32mg13/crypto/mbedtls_config_autogen.h b/examples/platforms/efr32mg13/crypto/mbedtls_config_autogen.h
new file mode 100644
index 000000000..c0a738c94
--- /dev/null
+++ b/examples/platforms/efr32mg13/crypto/mbedtls_config_autogen.h
@@ -0,0 +1,70 @@
+// This is an autogenerated config file, any changes to this file will be overwritten
+
+#ifndef MBEDTLS_CONFIG_AUTOGEN_H
+#define MBEDTLS_CONFIG_AUTOGEN_H
+
+#define MBEDTLS_ECP_MAX_BITS 256
+
+#define MBEDTLS_MPI_MAX_SIZE 32
+
+#define MBEDTLS_AES_C
+#define MBEDTLS_CIPHER_MODE_CTR
+#define MBEDTLS_CIPHER_MODE_CBC
+#define MBEDTLS_CIPHER_MODE_CFB
+#define MBEDTLS_ASN1_PARSE_C
+#define MBEDTLS_ASN1_WRITE_C
+#define MBEDTLS_BASE64_C
+#define MBEDTLS_CCM_C
+#define MBEDTLS_CIPHER_C
+#define MBEDTLS_CMAC_C
+#define MBEDTLS_SSL_PROTO_DTLS
+#define MBEDTLS_SSL_DTLS_ANTI_REPLAY
+#define MBEDTLS_SSL_DTLS_HELLO_VERIFY
+#define MBEDTLS_SSL_COOKIE_C
+#define MBEDTLS_ECP_C
+#define MBEDTLS_ECP_DP_SECP256R1_ENABLED
+#define MBEDTLS_ECDH_C
+#define MBEDTLS_ECDSA_C
+#define MBEDTLS_ENTROPY_ADC_C
+#define MBEDTLS_ENTROPY_RAIL_C
+#define MBEDTLS_ENTROPY_HARDWARE_ALT_RAIL
+#define MBEDTLS_MD_C
+#define MBEDTLS_ECJPAKE_C
+#define MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
+#define MBEDTLS_BIGNUM_C
+#define MBEDTLS_PEM_PARSE_C
+#define MBEDTLS_ENTROPY_C
+#define MBEDTLS_ENTROPY_FORCE_SHA256
+#define MBEDTLS_ENTROPY_MAX_SOURCES 2
+#define MBEDTLS_NO_PLATFORM_ENTROPY
+#define MBEDTLS_ENTROPY_HARDWARE_ALT
+#define MBEDTLS_CTR_DRBG_C
+#define MBEDTLS_SHA1_C
+#define MBEDTLS_SHA256_C
+#define MBEDTLS_SHA512_C
+#define MBEDTLS_SSL_TLS_C
+#define MBEDTLS_SSL_CLI_C
+#define MBEDTLS_SSL_PROTO_TLS1_2
+#define MBEDTLS_SSL_SRV_C
+#define MBEDTLS_X509_USE_C
+#define MBEDTLS_X509_CRT_PARSE_C
+#define MBEDTLS_X509_CRL_PARSE_C
+#define MBEDTLS_X509_CSR_PARSE_C
+#define MBEDTLS_OID_C
+#define MBEDTLS_PK_C
+#define MBEDTLS_PK_PARSE_C
+
+#include "config-device-acceleration.h"
+
+#if defined(MBEDTLS_TRNG_PRESENT)
+#define MBEDTLS_TRNG_C
+#endif
+
+#include "sl_malloc.h"
+
+#define MBEDTLS_PLATFORM_FREE_MACRO sl_free
+#define MBEDTLS_PLATFORM_CALLOC_MACRO sl_calloc
+#define MBEDTLS_PLATFORM_MEMORY
+#define MBEDTLS_PLATFORM_C
+
+#endif
diff --git a/examples/platforms/efr32mg13/radio.c b/examples/platforms/efr32mg13/radio.c
index e104d810c..ad7cc4b14 100644
--- a/examples/platforms/efr32mg13/radio.c
+++ b/examples/platforms/efr32mg13/radio.c
@@ -1173,3 +1173,27 @@ int8_t otPlatRadioGetReceiveSensitivity(otInstance *aInstance)
return EFR32_RECEIVE_SENSITIVITY;
}
+
+RAIL_AntennaConfig_t halAntennaConfig;
+
+void initAntenna(void)
+{
+#if (HAL_ANTDIV_ENABLE && defined(BSP_ANTDIV_SEL_PORT) && defined(BSP_ANTDIV_SEL_PIN) && defined(BSP_ANTDIV_SEL_LOC))
+ halAntennaConfig.ant0PinEn = true;
+ halAntennaConfig.ant0Port = (uint8_t)BSP_ANTDIV_SEL_PORT;
+ halAntennaConfig.ant0Pin = BSP_ANTDIV_SEL_PIN;
+ halAntennaConfig.ant0Loc = BSP_ANTDIV_SEL_LOC;
+#endif
+#ifdef _SILICON_LABS_32B_SERIES_2
+ halAntennaConfig.defaultPath = BSP_ANTDIV_SEL_LOC;
+#endif
+#if (HAL_ANTDIV_ENABLE && defined(BSP_ANTDIV_NSEL_PORT) && defined(BSP_ANTDIV_NSEL_PIN) && defined(BSP_ANTDIV_NSEL_LOC))
+ halAntennaConfig.ant1PinEn = true;
+ halAntennaConfig.ant1Port = (uint8_t)BSP_ANTDIV_NSEL_PORT;
+ halAntennaConfig.ant1Pin = BSP_ANTDIV_NSEL_PIN;
+ halAntennaConfig.ant1Loc = BSP_ANTDIV_NSEL_LOC;
+#endif
+#if (HAL_ANTDIV_ENABLE || defined(_SILICON_LABS_32B_SERIES_2))
+ (void)RAIL_ConfigAntenna(RAIL_EFR32_HANDLE, &halAntennaConfig);
+#endif
+}
diff --git a/examples/platforms/efr32mg13/sleepy-demo/sleepy-demo-ftd/Makefile.am b/examples/platforms/efr32mg13/sleepy-demo/sleepy-demo-ftd/Makefile.am
index 10b31df15..4b77ae195 100644
--- a/examples/platforms/efr32mg13/sleepy-demo/sleepy-demo-ftd/Makefile.am
+++ b/examples/platforms/efr32mg13/sleepy-demo/sleepy-demo-ftd/Makefile.am
@@ -32,9 +32,10 @@ include $(top_srcdir)/examples/platforms/Makefile.platform.am
override CFLAGS := $(filter-out -Wconversion,$(CFLAGS))
override CXXFLAGS := $(filter-out -Wconversion,$(CXXFLAGS))
-EFR32_BOARD_DIR = $(shell echo $(BOARD) | tr A-Z a-z)
+BOARD_LOWERCASE = $(shell echo $(BOARD) | tr A-Z a-z)
+BOARD_UPPERCASE = $(shell echo $(BOARD) | tr a-z A-Z)
-SDK_SRC_DIR = $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v2.7
+SDK_SRC_DIR = $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v3.0
$(top_builddir)/examples/platforms/efr32mg13/libopenthread-efr32mg13.a:
(cd $(top_builddir)/examples/platforms/efr32mg13/ && $(MAKE) $(AM_MAKEFLAGS) libopenthread-efr32mg13.a )
@@ -52,13 +53,13 @@ CPPFLAGS_COMMON +=
-DCORTEXM3_EFM32_MICRO \
-DPLAT=EMBER_PLATFORM_CORTEXM3 \
-I$(top_srcdir)/examples/platforms \
- -I$(top_srcdir)/examples/platforms/efr32mg13/$(EFR32_BOARD_DIR) \
+ -I$(top_srcdir)/examples/platforms/efr32mg13/$(BOARD_LOWERCASE) \
-I$(top_srcdir)/include \
-I$(top_srcdir)/src/core \
-I$(top_srcdir)/third_party/silabs/rail_config \
-I$(SDK_SRC_DIR)/hardware/kit/common/bsp \
-I$(SDK_SRC_DIR)/hardware/kit/common/drivers \
- -I$(SDK_SRC_DIR)/hardware/kit/EFR32MG13_$(BOARD)/config \
+ -I$(SDK_SRC_DIR)/hardware/kit/EFR32MG13_$(BOARD_UPPERCASE)/config \
-I$(SDK_SRC_DIR)/platform/base/hal/micro/cortexm3/efm32 \
-I$(SDK_SRC_DIR)/platform/base/hal/micro/cortexm3/efm32/config \
-I$(SDK_SRC_DIR)/platform/common/inc \
diff --git a/examples/platforms/efr32mg13/sleepy-demo/sleepy-demo-mtd/Makefile.am b/examples/platforms/efr32mg13/sleepy-demo/sleepy-demo-mtd/Makefile.am
index d3ad8adfa..f8053bf15 100644
--- a/examples/platforms/efr32mg13/sleepy-demo/sleepy-demo-mtd/Makefile.am
+++ b/examples/platforms/efr32mg13/sleepy-demo/sleepy-demo-mtd/Makefile.am
@@ -32,9 +32,10 @@ include $(top_srcdir)/examples/platforms/Makefile.platform.am
override CFLAGS := $(filter-out -Wconversion,$(CFLAGS))
override CXXFLAGS := $(filter-out -Wconversion,$(CXXFLAGS))
-EFR32_BOARD_DIR = $(shell echo $(BOARD) | tr A-Z a-z)
+BOARD_LOWERCASE = $(shell echo $(BOARD) | tr A-Z a-z)
+BOARD_UPPERCASE = $(shell echo $(BOARD) | tr a-z A-Z)
-SDK_SRC_DIR = $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v2.7
+SDK_SRC_DIR = $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v3.0
$(top_builddir)/examples/platforms/efr32mg13/libopenthread-efr32mg13.a:
(cd $(top_builddir)/examples/platforms/efr32mg13/ && $(MAKE) $(AM_MAKEFLAGS) libopenthread-efr32mg13.a )
@@ -52,13 +53,13 @@ CPPFLAGS_COMMON +=
-DCORTEXM3_EFM32_MICRO \
-DPLAT=EMBER_PLATFORM_CORTEXM3 \
-I$(top_srcdir)/examples/platforms \
- -I$(top_srcdir)/examples/platforms/efr32mg13/$(EFR32_BOARD_DIR) \
+ -I$(top_srcdir)/examples/platforms/efr32mg13/$(BOARD_LOWERCASE) \
-I$(top_srcdir)/include \
-I$(top_srcdir)/src/core \
-I$(top_srcdir)/third_party/silabs/rail_config \
-I$(SDK_SRC_DIR)/hardware/kit/common/bsp \
-I$(SDK_SRC_DIR)/hardware/kit/common/drivers \
- -I$(SDK_SRC_DIR)/hardware/kit/EFR32MG13_$(BOARD)/config \
+ -I$(SDK_SRC_DIR)/hardware/kit/EFR32MG13_$(BOARD_UPPERCASE)/config \
-I$(SDK_SRC_DIR)/platform/base/hal/micro/cortexm3/efm32 \
-I$(SDK_SRC_DIR)/platform/base/hal/micro/cortexm3/efm32/config \
-I$(SDK_SRC_DIR)/platform/common/inc \
diff --git a/examples/platforms/efr32mg13/system.c b/examples/platforms/efr32mg13/system.c
index 815e29cc2..b33c543f7 100644
--- a/examples/platforms/efr32mg13/system.c
+++ b/examples/platforms/efr32mg13/system.c
@@ -44,6 +44,9 @@
#include "common/logging.hpp"
#include "bsp.h"
+#include "bsp_init.h"
+#include "dmadrv.h"
+#include "ecode.h"
#include "em_chip.h"
#include "em_cmu.h"
#include "em_core.h"
@@ -55,7 +58,6 @@
#include "sl_mpu.h"
#include "sl_sleeptimer.h"
-#include "openthread-core-efr32-config.h"
#include "platform-efr32.h"
#if (HAL_FEM_ENABLE)
@@ -64,7 +66,93 @@
#define USE_EFR32_LOG (OPENTHREAD_CONFIG_LOG_OUTPUT == OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED)
-void halInitChipSpecific(void);
+void initAntenna(void);
+
+static void boardDisableSpiFlash(void)
+{
+#if defined(BSP_EXTFLASH_USART) && !defined(HAL_DISABLE_EXTFLASH)
+#include "mx25flash_spi.h"
+ MX25_init();
+ MX25_DP();
+#endif
+}
+
+static void boardLowPowerInit(void)
+{
+ boardDisableSpiFlash();
+}
+
+static void halInitChipSpecific(void)
+{
+#if defined(BSP_DK) && !defined(RAIL_IC_SIM_BUILD)
+ BSP_Init(BSP_INIT_DK_SPI);
+#endif
+ BSP_initDevice();
+
+#if !defined(RAIL_IC_SIM_BUILD)
+ BSP_initBoard();
+#endif
+
+#if HAL_PTI_ENABLE
+ RAIL_PtiConfig_t railPtiConfig = {
+#if HAL_PTI_MODE == HAL_PTI_MODE_SPI
+ .mode = RAIL_PTI_MODE_SPI,
+#elif HAL_PTI_MODE == HAL_PTI_MODE_UART
+ .mode = RAIL_PTI_MODE_UART,
+#elif HAL_PTI_MODE == HAL_PTI_MODE_UART_ONEWIRE
+ .mode = RAIL_PTI_MODE_UART_ONEWIRE,
+#else
+ .mode = RAIL_PTI_MODE_DISABLED,
+#endif
+ .baud = HAL_PTI_BAUD_RATE,
+#ifdef BSP_PTI_DOUT_LOC
+ .doutLoc = BSP_PTI_DOUT_LOC,
+#endif
+ .doutPort = (uint8_t)BSP_PTI_DOUT_PORT,
+ .doutPin = BSP_PTI_DOUT_PIN,
+#if HAL_PTI_MODE == HAL_PTI_MODE_SPI
+#ifdef BSP_PTI_DCLK_LOC
+ .dclkLoc = BSP_PTI_DCLK_LOC,
+#endif
+ .dclkPort = (uint8_t)BSP_PTI_DCLK_PORT,
+ .dclkPin = BSP_PTI_DCLK_PIN,
+#endif
+#if HAL_PTI_MODE != HAL_PTI_MODE_UART_ONEWIRE
+#ifdef BSP_PTI_DFRAME_LOC
+ .dframeLoc = BSP_PTI_DFRAME_LOC,
+#endif
+ .dframePort = (uint8_t)BSP_PTI_DFRAME_PORT,
+ .dframePin = BSP_PTI_DFRAME_PIN
+#endif
+ };
+
+ RAIL_ConfigPti(RAIL_EFR32_HANDLE, &railPtiConfig);
+#endif // HAL_PTI_ENABLE
+
+#if !defined(RAIL_IC_SIM_BUILD)
+ initAntenna();
+
+ // Disable any unused peripherals to ensure we enter a low power mode
+ boardLowPowerInit();
+#endif
+
+#if RAIL_DMA_CHANNEL == DMA_CHANNEL_DMADRV
+ Ecode_t dmaError = DMADRV_Init();
+ if ((dmaError == ECODE_EMDRV_DMADRV_ALREADY_INITIALIZED) || (dmaError == ECODE_EMDRV_DMADRV_OK))
+ {
+ unsigned int channel;
+ dmaError = DMADRV_AllocateChannel(&channel, NULL);
+ if (dmaError == ECODE_EMDRV_DMADRV_OK)
+ {
+ RAIL_UseDma(channel);
+ }
+ }
+#elif defined(RAIL_DMA_CHANNEL) && (RAIL_DMA_CHANNEL != DMA_CHANNEL_INVALID)
+ LDMA_Init_t ldmaInit = LDMA_INIT_DEFAULT;
+ LDMA_Init(&ldmaInit);
+ RAIL_UseDma(RAIL_DMA_CHANNEL);
+#endif
+}
otInstance *sInstance;
static bool (*sCanSleepCallback)(void);
diff --git a/examples/platforms/efr32mg21/Makefile.am b/examples/platforms/efr32mg21/Makefile.am
index ef1eab658..b629eda02 100644
--- a/examples/platforms/efr32mg21/Makefile.am
+++ b/examples/platforms/efr32mg21/Makefile.am
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2019, The OpenThread Authors.
+# Copyright (c) 2020, The OpenThread Authors.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -42,29 +42,30 @@ override CXXFLAGS := $(filter-out -pedantic-errors,$(CXXFLAGS))
override CFLAGS := $(filter-out -Wundef,$(CFLAGS))
override CXXFLAGS := $(filter-out -Wundef,$(CXXFLAGS))
-EFR32_BOARD_DIR = $(shell echo $(BOARD) | tr A-Z a-z)
+BOARD_LOWERCASE = $(shell echo $(BOARD) | tr A-Z a-z)
+BOARD_UPPERCASE = $(shell echo $(BOARD) | tr a-z A-Z)
-SDK_SRC_DIR = $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v2.7
+SDK_SRC_DIR = $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v3.0
libopenthread_efr32mg21_a_CPPFLAGS = \
- -DEFR32_SERIES2_CONFIG1_MICRO \
-DNVIC_CONFIG=\"platform/base/hal/micro/cortexm3/efm32/nvic-config.h\" \
-DPLATFORM_HEADER=\"platform/base/hal/micro/cortexm3/compiler/gcc.h\" \
-Wno-sign-compare \
-I$(top_srcdir)/examples/platforms \
- -I$(top_srcdir)/examples/platforms/efr32mg21/$(EFR32_BOARD_DIR) \
+ -I$(top_srcdir)/examples/platforms/efr32mg21/$(BOARD_LOWERCASE) \
-I$(top_srcdir)/include \
-I$(top_srcdir)/src/core \
-I$(top_srcdir)/third_party/silabs/rail_config \
-I$(SDK_SRC_DIR) \
-I$(SDK_SRC_DIR)/hardware/kit/common/bsp \
-I$(SDK_SRC_DIR)/hardware/kit/common/drivers \
- -I$(SDK_SRC_DIR)/hardware/kit/EFR32MG21_$(BOARD)/config \
+ -I$(SDK_SRC_DIR)/hardware/kit/EFR32MG21_$(BOARD_UPPERCASE)/config \
-I$(SDK_SRC_DIR)/platform/base/hal/micro/cortexm3/efm32 \
-I$(SDK_SRC_DIR)/platform/base/hal/micro/cortexm3/efm32/config \
+ -I$(SDK_SRC_DIR)/platform/base/hal/plugin/antenna/ \
-I$(SDK_SRC_DIR)/platform/common/inc \
-I$(SDK_SRC_DIR)/platform/CMSIS/Include \
- -I$(SDK_SRC_DIR)/platform/Device/SiliconLabs/EFR32MG21P/Include \
+ -I$(SDK_SRC_DIR)/platform/Device/SiliconLabs/EFR32MG21/Include \
-I$(SDK_SRC_DIR)/platform/emdrv/common/inc \
-I$(SDK_SRC_DIR)/platform/emdrv/gpiointerrupt/inc \
-I$(SDK_SRC_DIR)/platform/emdrv/uartdrv/inc \
diff --git a/examples/platforms/efr32mg21/Makefile.platform.am b/examples/platforms/efr32mg21/Makefile.platform.am
index 03a85ae19..a7049a595 100644
--- a/examples/platforms/efr32mg21/Makefile.platform.am
+++ b/examples/platforms/efr32mg21/Makefile.platform.am
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2019, The OpenThread Authors.
+# Copyright (c) 2020, The OpenThread Authors.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -30,6 +30,11 @@
# efr32mg21 platform-specific Makefile
#
+
+# Do not enable -Wundef for rail
+override CFLAGS := $(filter-out -Wundef,$(CFLAGS))
+override CXXFLAGS := $(filter-out -Wundef,$(CXXFLAGS))
+
LIBRAIL = $(shell \
if [ "$(DMP)" = "1" ]; then \
echo "librail_multiprotocol_efr32xg21_gcc_release.a"; \
@@ -40,10 +45,20 @@ fi )
LDADD_COMMON += \
$(top_builddir)/examples/platforms/efr32mg21/libopenthread-efr32mg21.a \
$(top_builddir)/third_party/silabs/libsilabs-efr32mg21-sdk.a \
- $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v2.7/platform/radio/rail_lib/autogen/librail_release/$(LIBRAIL) \
- $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v2.7/platform/emdrv/nvm3/lib/libnvm3_CM33_gcc.a \
+ $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v3.0/platform/radio/rail_lib/autogen/librail_release/$(LIBRAIL) \
+ $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v3.0/platform/emdrv/nvm3/lib/libnvm3_CM33_gcc.a \
$(NULL)
-
+
+if OPENTHREAD_ENABLE_BUILTIN_MBEDTLS
+LDADD_COMMON += \
+ $(top_builddir)/third_party/mbedtls/libmbedcrypto.a \
+ $(NULL)
+else
+LDADD_COMMON += \
+ $(top_builddir)/third_party/silabs/libsilabs-mbedtls.a \
+ $(NULL)
+endif # OPENTHREAD_ENABLE_BUILTIN_MBEDTLS
+
LDFLAGS_COMMON += \
-T $(top_srcdir)/examples/platforms/efr32mg21/efr32mg21.ld \
$(NULL)
diff --git a/examples/platforms/efr32mg21/README.md b/examples/platforms/efr32mg21/README.md
index 3a44648ae..f7ad90815 100644
--- a/examples/platforms/efr32mg21/README.md
+++ b/examples/platforms/efr32mg21/README.md
@@ -30,8 +30,14 @@ $ ./script/bootstrap
2. Install Flex (Gecko) SDK including RAIL Library from Simplicity Studio.
- Connect EFR32MG21 Wireless Starter Kit to Simplicity Studio.
- - Find Flex SDK v2.7 in the Software Update page and click Install.
- - Flex SDK v2.7 will be installed in the path: `/SimplicityStudio_v4/developer/sdks/gecko_sdk_suite`.
+ - Find Flex SDK v3.0 in the Software Update page and click Install.
+ - Flex SDK v3.0 will be installed in the path:
+ - Mac
+ - `/Applications/Simplicity\ Studio.app/Contents/Eclipse/developer/sdks/gecko_sdk_suite`
+ - Windows
+ - `C:\SiliconLabs\SimplicityStudio\v5\developer\sdks\gecko_sdk_suite`
+ - Linux
+ - `./SimplicityStudio_v5/developer/sdks/gecko_sdk_suite`
For more information on configuring, building, and installing applications for the Wireless Gecko (EFR32) portfolio using FLEX, see [Getting Started with the Silicon Labs Flex Software Development Kit for the Wireless Gecko (EFR32™) Portfolio][qsg138]. For more information on RAIL, see [Radio Abstraction Interface Layer][rail].
@@ -52,20 +58,6 @@ $ cd /third_party
$ ln -s /developer/sdks/gecko_sdk_suite silabs/gecko_sdk_suite
```
-Note: Due to an error in the core_cm33.h file provided by ARM, the compiler will throw an error when pedantic option is used on the builds. To avoid this, please add the following lines of code at the top of the file core_cm33.h:
-
-```
-#if defined(__GNUC__)
-#pragma GCC diagnostic ignored "-Wpedantic"
-#endif
-```
-
-core_cm33.h can be found at:
-
-```
-/developer/sdks/gecko_sdk_suite/v2.7/platform/CMSIS/Include
-```
-
4. Build OpenThread Firmware (CLI example) on EFR32 platform.
```bash
@@ -201,4 +193,4 @@ The following toolchain has been used for testing and verification:
The EFR32 example has been verified with following Flex SDK/RAIL Library version:
-- Flex SDK version 2.7.0.0
+- Flex SDK version 3.0.x
diff --git a/examples/platforms/efr32mg21/crypto/efr32-mbedtls-config.h b/examples/platforms/efr32mg21/crypto/efr32-mbedtls-config.h
deleted file mode 100644
index d392df081..000000000
--- a/examples/platforms/efr32mg21/crypto/efr32-mbedtls-config.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright (c) 2019, The OpenThread Authors.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the copyright holder nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef EFR32_MBEDTLS_CONFIG_H
-#define EFR32_MBEDTLS_CONFIG_H
-
-#include "em_device.h"
-#include "em_se.h"
-
-/**
- * \def MBEDTLS_AES_ALT
- *
- * Enable hardware acceleration for the AES block cipher
- *
- * Module: sl_crypto/src/crypto_aes.c for devices with CRYPTO
- * sl_crypto/src/aes_aes.c for devices with AES
- *
- * See MBEDTLS_AES_C for more information.
- */
-#define MBEDTLS_AES_ALT
-
-/**
- * \def MBEDTLS_ENTROPY_HARDWARE_ALT
- *
- * Integrate the provided default entropy source into the mbed
- * TLS entropy infrastructure.
- *
- */
-#define MBEDTLS_ENTROPY_HARDWARE_ALT
-
-/* Turn on all hardware acceleration provided by the EFR32xG21's built-in SE */
-#define MBEDTLS_SHA1_ALT
-#define MBEDTLS_SHA1_PROCESS_ALT
-#define MBEDTLS_SHA256_ALT
-#define MBEDTLS_SHA256_PROCESS_ALT
-#define MBEDTLS_SHA512_ALT
-#define MBEDTLS_SHA512_PROCESS_ALT
-
-#define MBEDTLS_CCM_ALT
-#define MBEDTLS_CMAC_ALT
-
-/* Turning on ECC acceleration is dependant on not requiring curve25519 when
- * running on EFR32xG21A devices */
-#if (defined(_SILICON_LABS_SECURITY_FEATURE) && \
- (_SILICON_LABS_SECURITY_FEATURE == _SILICON_LABS_SECURITY_FEATURE_VAULT)) || \
- !defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED)
-#define MBEDTLS_ECDH_GEN_PUBLIC_ALT
-#define MBEDTLS_ECDSA_GENKEY_ALT
-#define MBEDTLS_ECDH_COMPUTE_SHARED_ALT
-#define MBEDTLS_ECDSA_SIGN_ALT
-#define MBEDTLS_ECDSA_VERIFY_ALT
-/* Incompatibility in header files between mbedTLS version in OT and GSDK means
- * we can't turn on EC-JPAKE acceleration on EFR32xG21 just yet. Will be fixed
- * for the next GSDK update */
-//#define MBEDTLS_ECJPAKE_ALT
-#endif /* EFR32xG21B or curve25519 not enabled */
-
-#endif // EFR32_MBEDTLS_CONFIG_H
diff --git a/examples/platforms/efr32mg21/crypto/mbedtls_config.h b/examples/platforms/efr32mg21/crypto/mbedtls_config.h
new file mode 100644
index 000000000..95f829ffb
--- /dev/null
+++ b/examples/platforms/efr32mg21/crypto/mbedtls_config.h
@@ -0,0 +1,79 @@
+#ifndef MBEDTLS_CONFIG_H
+#define MBEDTLS_CONFIG_H
+
+// Include the autogenerated mbedtls configuration file
+#include "mbedtls_config_autogen.h"
+
+// <<< Use Configuration Wizard in Context Menu >>>
+// TLS/DTLS configuration
+
+// Complete list of ciphersuites to use, in order of preference.
+// Default: MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8
+// Complete list of ciphersuites to use, in order of preference.
+// The value of this configuration should be updated for the application needs.
+#define MBEDTLS_SSL_CIPHERSUITES MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8
+
+// Maximum TLS/DTLS fragment length in bytes.
+// Default: 768
+// The size configured here determines the size of each of the two
+// internal I/O buffers used in mbedTLS when sending and receiving data.
+#define MBEDTLS_SSL_MAX_CONTENT_LEN 768
+
+// Enable support for RFC 6066 max_fragment_length extension in SSL.
+// Default: 1
+// Enable support for RFC 6066 max_fragment_length extension in SSL.
+#define SL_MBEDTLS_SSL_MAX_FRAGMENT_LENGTH 1
+
+// Enable support for exporting key block and master secret.
+// Default: 1
+// Enable support for exporting key block and master secret.
+// This is required for certain users of TLS, e.g. EAP-TLS.
+#define SL_MBEDTLS_SSL_EXPORT_KEYS 1
+
+// Enable the PSK based ciphersuite modes in SSL / TLS.
+// Default: 0
+// Enable the PSK based ciphersuite modes in SSL / TLS.
+#define SL_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED 1
+
+// Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS.
+// Default: 0
+// Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS.
+#define SL_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED 0
+
+// Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS.
+// Default: 0
+// Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS.
+#define SL_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED 1
+
+// Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS.
+// Default: 0
+// Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS.
+#define SL_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED 0
+
+//
+// <<< end of configuration section >>>
+
+// Convert CMSIS Markup config defines to mbedTLS specific config defines
+#if SL_MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
+#define MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
+#endif
+#if SL_MBEDTLS_SSL_EXPORT_KEYS
+#define MBEDTLS_SSL_EXPORT_KEYS
+#endif
+#if SL_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
+#define MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
+#endif
+#if SL_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED
+#define MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED
+#endif
+#if SL_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
+#define MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
+#endif
+#if SL_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED
+#define MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED
+#endif
+
+// Custom defines can be placed here before check_config.h is included.
+#include "mbedtls/check_config.h"
+
+#endif
diff --git a/examples/platforms/efr32mg21/crypto/mbedtls_config_autogen.h b/examples/platforms/efr32mg21/crypto/mbedtls_config_autogen.h
new file mode 100644
index 000000000..7f02e60d1
--- /dev/null
+++ b/examples/platforms/efr32mg21/crypto/mbedtls_config_autogen.h
@@ -0,0 +1,64 @@
+// This is an autogenerated config file, any changes to this file will be overwritten
+
+#ifndef MBEDTLS_CONFIG_AUTOGEN_H
+#define MBEDTLS_CONFIG_AUTOGEN_H
+
+#define MBEDTLS_ECP_MAX_BITS 256
+
+#define MBEDTLS_MPI_MAX_SIZE 32
+
+#define MBEDTLS_AES_C
+#define MBEDTLS_CIPHER_MODE_CTR
+#define MBEDTLS_CIPHER_MODE_CBC
+#define MBEDTLS_CIPHER_MODE_CFB
+#define MBEDTLS_ASN1_PARSE_C
+#define MBEDTLS_ASN1_WRITE_C
+#define MBEDTLS_BASE64_C
+#define MBEDTLS_CCM_C
+#define MBEDTLS_CIPHER_C
+#define MBEDTLS_CMAC_C
+#define MBEDTLS_SSL_PROTO_DTLS
+#define MBEDTLS_SSL_DTLS_ANTI_REPLAY
+#define MBEDTLS_SSL_DTLS_HELLO_VERIFY
+#define MBEDTLS_SSL_COOKIE_C
+#define MBEDTLS_ECP_C
+#define MBEDTLS_ECP_DP_SECP256R1_ENABLED
+#define MBEDTLS_ECDH_C
+#define MBEDTLS_ECDSA_C
+#define MBEDTLS_ENTROPY_RAIL_C
+#define MBEDTLS_MD_C
+#define MBEDTLS_ECJPAKE_C
+#define MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
+#define MBEDTLS_BIGNUM_C
+#define MBEDTLS_PEM_PARSE_C
+#define MBEDTLS_ENTROPY_C
+#define MBEDTLS_ENTROPY_FORCE_SHA256
+#define MBEDTLS_ENTROPY_MAX_SOURCES 2
+#define MBEDTLS_NO_PLATFORM_ENTROPY
+#define MBEDTLS_ENTROPY_HARDWARE_ALT
+#define MBEDTLS_CTR_DRBG_C
+#define MBEDTLS_SHA1_C
+#define MBEDTLS_SHA256_C
+#define MBEDTLS_SHA512_C
+#define MBEDTLS_SSL_TLS_C
+#define MBEDTLS_SSL_CLI_C
+#define MBEDTLS_SSL_PROTO_TLS1_2
+#define MBEDTLS_SSL_SRV_C
+#define MBEDTLS_X509_USE_C
+#define MBEDTLS_X509_CRT_PARSE_C
+#define MBEDTLS_X509_CRL_PARSE_C
+#define MBEDTLS_X509_CSR_PARSE_C
+#define MBEDTLS_OID_C
+#define MBEDTLS_PK_C
+#define MBEDTLS_PK_PARSE_C
+
+#include "config-device-acceleration.h"
+
+#include "sl_malloc.h"
+
+#define MBEDTLS_PLATFORM_FREE_MACRO sl_free
+#define MBEDTLS_PLATFORM_CALLOC_MACRO sl_calloc
+#define MBEDTLS_PLATFORM_MEMORY
+#define MBEDTLS_PLATFORM_C
+
+#endif
diff --git a/examples/platforms/efr32mg21/radio.c b/examples/platforms/efr32mg21/radio.c
index 9bdd4719e..33047989d 100644
--- a/examples/platforms/efr32mg21/radio.c
+++ b/examples/platforms/efr32mg21/radio.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2019, The OpenThread Authors.
+ * Copyright (c) 2020, The OpenThread Authors.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -47,6 +47,7 @@
#include "utils/soft_source_match_table.h"
+#include "antenna.h"
#include "board_config.h"
#include "em_cmu.h"
#include "em_core.h"
@@ -1048,3 +1049,27 @@ int8_t otPlatRadioGetReceiveSensitivity(otInstance *aInstance)
return EFR32_RECEIVE_SENSITIVITY;
}
+
+RAIL_AntennaConfig_t halAntennaConfig;
+
+void initAntenna(void)
+{
+#if (HAL_ANTDIV_ENABLE && defined(BSP_ANTDIV_SEL_PORT) && defined(BSP_ANTDIV_SEL_PIN) && defined(BSP_ANTDIV_SEL_LOC))
+ halAntennaConfig.ant0PinEn = true;
+ halAntennaConfig.ant0Port = (uint8_t)BSP_ANTDIV_SEL_PORT;
+ halAntennaConfig.ant0Pin = BSP_ANTDIV_SEL_PIN;
+ halAntennaConfig.ant0Loc = BSP_ANTDIV_SEL_LOC;
+#endif
+#ifdef _SILICON_LABS_32B_SERIES_2
+ halAntennaConfig.defaultPath = BSP_ANTDIV_SEL_LOC;
+#endif
+#if (HAL_ANTDIV_ENABLE && defined(BSP_ANTDIV_NSEL_PORT) && defined(BSP_ANTDIV_NSEL_PIN) && defined(BSP_ANTDIV_NSEL_LOC))
+ halAntennaConfig.ant1PinEn = true;
+ halAntennaConfig.ant1Port = (uint8_t)BSP_ANTDIV_NSEL_PORT;
+ halAntennaConfig.ant1Pin = BSP_ANTDIV_NSEL_PIN;
+ halAntennaConfig.ant1Loc = BSP_ANTDIV_NSEL_LOC;
+#endif
+#if (HAL_ANTDIV_ENABLE || defined(_SILICON_LABS_32B_SERIES_2))
+ (void)RAIL_ConfigAntenna(RAIL_EFR32_HANDLE, &halAntennaConfig);
+#endif
+}
diff --git a/examples/platforms/efr32mg21/sleepy-demo/sleepy-demo-ftd/Makefile.am b/examples/platforms/efr32mg21/sleepy-demo/sleepy-demo-ftd/Makefile.am
index 93849672f..7199bac80 100644
--- a/examples/platforms/efr32mg21/sleepy-demo/sleepy-demo-ftd/Makefile.am
+++ b/examples/platforms/efr32mg21/sleepy-demo/sleepy-demo-ftd/Makefile.am
@@ -32,9 +32,10 @@ include $(top_srcdir)/examples/platforms/Makefile.platform.am
override CFLAGS := $(filter-out -Wconversion,$(CFLAGS))
override CXXFLAGS := $(filter-out -Wconversion,$(CXXFLAGS))
-EFR32_BOARD_DIR = $(shell echo $(BOARD) | tr A-Z a-z)
+BOARD_LOWERCASE = $(shell echo $(BOARD) | tr A-Z a-z)
+BOARD_UPPERCASE = $(shell echo $(BOARD) | tr a-z A-Z)
-SDK_SRC_DIR = $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v2.7
+SDK_SRC_DIR = $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v3.0
$(top_builddir)/examples/platforms/efr32mg21/libopenthread-efr32mg21.a:
(cd $(top_builddir)/examples/platforms/efr32mg21/ && $(MAKE) $(AM_MAKEFLAGS) libopenthread-efr32mg21.a )
@@ -43,23 +44,22 @@ bin_PROGRAMS =
$(NULL)
CPPFLAGS_COMMON += \
- -DEFR32_SERIES2_CONFIG1_MICRO \
-DNVIC_CONFIG=\"platform/base/hal/micro/cortexm3/efm32/nvic-config.h\" \
-DPLATFORM_HEADER=\"platform/base/hal/micro/cortexm3/compiler/gcc.h\" \
-Wno-sign-compare \
-I$(top_srcdir)/examples/platforms \
- -I$(top_srcdir)/examples/platforms/efr32mg21/$(EFR32_BOARD_DIR) \
+ -I$(top_srcdir)/examples/platforms/efr32mg21/$(BOARD_LOWERCASE) \
-I$(top_srcdir)/include \
-I$(top_srcdir)/src/core \
-I$(top_srcdir)/third_party/silabs/rail_config \
-I$(SDK_SRC_DIR)/hardware/kit/common/bsp \
-I$(SDK_SRC_DIR)/hardware/kit/common/drivers \
- -I$(SDK_SRC_DIR)/hardware/kit/EFR32MG21_$(BOARD)/config \
+ -I$(SDK_SRC_DIR)/hardware/kit/EFR32MG21_$(BOARD_UPPERCASE)/config \
-I$(SDK_SRC_DIR)/platform/base/hal/micro/cortexm3/efm32 \
-I$(SDK_SRC_DIR)/platform/base/hal/micro/cortexm3/efm32/config \
-I$(SDK_SRC_DIR)/platform/common/inc \
-I$(SDK_SRC_DIR)/platform/CMSIS/Include \
- -I$(SDK_SRC_DIR)/platform/Device/SiliconLabs/EFR32MG21P/Include \
+ -I$(SDK_SRC_DIR)/platform/Device/SiliconLabs/EFR32MG21/Include \
-I$(SDK_SRC_DIR)/platform/emdrv/common/inc \
-I$(SDK_SRC_DIR)/platform/emdrv/gpiointerrupt/inc \
-I$(SDK_SRC_DIR)/platform/emdrv/uartdrv/inc \
diff --git a/examples/platforms/efr32mg21/sleepy-demo/sleepy-demo-mtd/Makefile.am b/examples/platforms/efr32mg21/sleepy-demo/sleepy-demo-mtd/Makefile.am
index 490317249..4579eb3ba 100644
--- a/examples/platforms/efr32mg21/sleepy-demo/sleepy-demo-mtd/Makefile.am
+++ b/examples/platforms/efr32mg21/sleepy-demo/sleepy-demo-mtd/Makefile.am
@@ -32,9 +32,10 @@ include $(top_srcdir)/examples/platforms/Makefile.platform.am
override CFLAGS := $(filter-out -Wconversion,$(CFLAGS))
override CXXFLAGS := $(filter-out -Wconversion,$(CXXFLAGS))
-EFR32_BOARD_DIR = $(shell echo $(BOARD) | tr A-Z a-z)
+BOARD_LOWERCASE = $(shell echo $(BOARD) | tr A-Z a-z)
+BOARD_UPPERCASE = $(shell echo $(BOARD) | tr a-z A-Z)
-SDK_SRC_DIR = $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v2.7
+SDK_SRC_DIR = $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v3.0
$(top_builddir)/examples/platforms/efr32mg21/libopenthread-efr32mg21.a:
(cd $(top_builddir)/examples/platforms/efr32mg21/ && $(MAKE) $(AM_MAKEFLAGS) libopenthread-efr32mg21.a )
@@ -43,23 +44,22 @@ bin_PROGRAMS =
$(NULL)
CPPFLAGS_COMMON += \
- -DEFR32_SERIES2_CONFIG1_MICRO \
-DNVIC_CONFIG=\"platform/base/hal/micro/cortexm3/efm32/nvic-config.h\" \
-DPLATFORM_HEADER=\"platform/base/hal/micro/cortexm3/compiler/gcc.h\" \
-Wno-sign-compare \
-I$(top_srcdir)/examples/platforms \
- -I$(top_srcdir)/examples/platforms/efr32mg21/$(EFR32_BOARD_DIR) \
+ -I$(top_srcdir)/examples/platforms/efr32mg21/$(BOARD_LOWERCASE) \
-I$(top_srcdir)/include \
-I$(top_srcdir)/src/core \
-I$(top_srcdir)/third_party/silabs/rail_config \
-I$(SDK_SRC_DIR)/hardware/kit/common/bsp \
-I$(SDK_SRC_DIR)/hardware/kit/common/drivers \
- -I$(SDK_SRC_DIR)/hardware/kit/EFR32MG21_$(BOARD)/config \
+ -I$(SDK_SRC_DIR)/hardware/kit/EFR32MG21_$(BOARD_UPPERCASE)/config \
-I$(SDK_SRC_DIR)/platform/base/hal/micro/cortexm3/efm32 \
-I$(SDK_SRC_DIR)/platform/base/hal/micro/cortexm3/efm32/config \
-I$(SDK_SRC_DIR)/platform/common/inc \
-I$(SDK_SRC_DIR)/platform/CMSIS/Include \
- -I$(SDK_SRC_DIR)/platform/Device/SiliconLabs/EFR32MG21P/Include \
+ -I$(SDK_SRC_DIR)/platform/Device/SiliconLabs/EFR32MG21/Include \
-I$(SDK_SRC_DIR)/platform/emdrv/common/inc \
-I$(SDK_SRC_DIR)/platform/emdrv/gpiointerrupt/inc \
-I$(SDK_SRC_DIR)/platform/emdrv/uartdrv/inc \
diff --git a/examples/platforms/efr32mg21/system.c b/examples/platforms/efr32mg21/system.c
index 32f934674..b8e27ef98 100644
--- a/examples/platforms/efr32mg21/system.c
+++ b/examples/platforms/efr32mg21/system.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2019, The OpenThread Authors.
+ * Copyright (c) 2020, The OpenThread Authors.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -44,6 +44,9 @@
#include "common/logging.hpp"
#include "bsp.h"
+#include "bsp_init.h"
+#include "dmadrv.h"
+#include "ecode.h"
#include "em_chip.h"
#include "em_cmu.h"
#include "em_core.h"
@@ -63,7 +66,93 @@
#define USE_EFR32_LOG (OPENTHREAD_CONFIG_LOG_OUTPUT == OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED)
-void halInitChipSpecific(void);
+void initAntenna(void);
+
+static void boardDisableSpiFlash(void)
+{
+#if defined(BSP_EXTFLASH_USART) && !defined(HAL_DISABLE_EXTFLASH)
+#include "mx25flash_spi.h"
+ MX25_init();
+ MX25_DP();
+#endif
+}
+
+static void boardLowPowerInit(void)
+{
+ boardDisableSpiFlash();
+}
+
+static void halInitChipSpecific(void)
+{
+#if defined(BSP_DK) && !defined(RAIL_IC_SIM_BUILD)
+ BSP_Init(BSP_INIT_DK_SPI);
+#endif
+ BSP_initDevice();
+
+#if !defined(RAIL_IC_SIM_BUILD)
+ BSP_initBoard();
+#endif
+
+#if HAL_PTI_ENABLE
+ RAIL_PtiConfig_t railPtiConfig = {
+#if HAL_PTI_MODE == HAL_PTI_MODE_SPI
+ .mode = RAIL_PTI_MODE_SPI,
+#elif HAL_PTI_MODE == HAL_PTI_MODE_UART
+ .mode = RAIL_PTI_MODE_UART,
+#elif HAL_PTI_MODE == HAL_PTI_MODE_UART_ONEWIRE
+ .mode = RAIL_PTI_MODE_UART_ONEWIRE,
+#else
+ .mode = RAIL_PTI_MODE_DISABLED,
+#endif
+ .baud = HAL_PTI_BAUD_RATE,
+#ifdef BSP_PTI_DOUT_LOC
+ .doutLoc = BSP_PTI_DOUT_LOC,
+#endif
+ .doutPort = (uint8_t)BSP_PTI_DOUT_PORT,
+ .doutPin = BSP_PTI_DOUT_PIN,
+#if HAL_PTI_MODE == HAL_PTI_MODE_SPI
+#ifdef BSP_PTI_DCLK_LOC
+ .dclkLoc = BSP_PTI_DCLK_LOC,
+#endif
+ .dclkPort = (uint8_t)BSP_PTI_DCLK_PORT,
+ .dclkPin = BSP_PTI_DCLK_PIN,
+#endif
+#if HAL_PTI_MODE != HAL_PTI_MODE_UART_ONEWIRE
+#ifdef BSP_PTI_DFRAME_LOC
+ .dframeLoc = BSP_PTI_DFRAME_LOC,
+#endif
+ .dframePort = (uint8_t)BSP_PTI_DFRAME_PORT,
+ .dframePin = BSP_PTI_DFRAME_PIN
+#endif
+ };
+
+ RAIL_ConfigPti(RAIL_EFR32_HANDLE, &railPtiConfig);
+#endif // HAL_PTI_ENABLE
+
+#if !defined(RAIL_IC_SIM_BUILD)
+ initAntenna();
+
+ // Disable any unused peripherals to ensure we enter a low power mode
+ boardLowPowerInit();
+#endif
+
+#if RAIL_DMA_CHANNEL == DMA_CHANNEL_DMADRV
+ Ecode_t dmaError = DMADRV_Init();
+ if ((dmaError == ECODE_EMDRV_DMADRV_ALREADY_INITIALIZED) || (dmaError == ECODE_EMDRV_DMADRV_OK))
+ {
+ unsigned int channel;
+ dmaError = DMADRV_AllocateChannel(&channel, NULL);
+ if (dmaError == ECODE_EMDRV_DMADRV_OK)
+ {
+ RAIL_UseDma(channel);
+ }
+ }
+#elif defined(RAIL_DMA_CHANNEL) && (RAIL_DMA_CHANNEL != DMA_CHANNEL_INVALID)
+ LDMA_Init_t ldmaInit = LDMA_INIT_DEFAULT;
+ LDMA_Init(&ldmaInit);
+ RAIL_UseDma(RAIL_DMA_CHANNEL);
+#endif
+}
otInstance *sInstance;
static bool (*sCanSleepCallback)(void);
diff --git a/third_party/silabs/Makefile.am b/third_party/silabs/Makefile.am
index 82087c351..17f155587 100644
--- a/third_party/silabs/Makefile.am
+++ b/third_party/silabs/Makefile.am
@@ -28,26 +28,34 @@
include $(abs_top_nlbuild_autotools_dir)/automake/pre.am
+lib_LIBRARIES = $(NULL)
+
+if !OPENTHREAD_ENABLE_BUILTIN_MBEDTLS
+lib_LIBRARIES += \
+ libsilabs-mbedtls.a \
+ $(NULL)
+endif
+
if OPENTHREAD_EXAMPLES_EFR32MG1
-lib_LIBRARIES = \
+lib_LIBRARIES += \
libsilabs-efr32mg1-sdk.a \
$(NULL)
endif
if OPENTHREAD_EXAMPLES_EFR32MG12
-lib_LIBRARIES = \
+lib_LIBRARIES += \
libsilabs-efr32mg12-sdk.a \
$(NULL)
endif
if OPENTHREAD_EXAMPLES_EFR32MG13
-lib_LIBRARIES = \
+lib_LIBRARIES += \
libsilabs-efr32mg13-sdk.a \
$(NULL)
endif
if OPENTHREAD_EXAMPLES_EFR32MG21
-lib_LIBRARIES = \
+lib_LIBRARIES += \
libsilabs-efr32mg21-sdk.a \
$(NULL)
endif
@@ -72,9 +80,104 @@ override CXXFLAGS := $(filter-out -Wundef,$(CXXFLAGS))
override CFLAGS := $(filter-out -Wcast-align,$(CFLAGS))
override CXXFLAGS := $(filter-out -Wcast-align,$(CXXFLAGS))
-EFR32_BOARD_DIR = $(shell echo $(BOARD) | tr A-Z a-z)
+BOARD_LOWERCASE = $(shell echo $(BOARD) | tr A-Z a-z)
+BOARD_UPPERCASE = $(shell echo $(BOARD) | tr a-z A-Z)
-SDK_SRC_DIR = $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v2.7
+SDK_SRC_DIR = $(top_srcdir)/third_party/silabs/gecko_sdk_suite/v3.0
+
+# =============================================================================
+
+SILABS_MBEDTLS_DIR = $(SDK_SRC_DIR)/util/third_party/mbedtls
+
+SILABS_MBEDTLS_CPPFLAGS = \
+ $(MBEDTLS_CPPFLAGS) \
+ -I$(SILABS_MBEDTLS_DIR)/configs \
+ -I$(SILABS_MBEDTLS_DIR)/include \
+ -I$(SILABS_MBEDTLS_DIR)/sl_crypto/include \
+ -I$(SDK_SRC_DIR)/platform/radio/rail_lib/common \
+ -I$(SDK_SRC_DIR)/util/silicon_labs/silabs_core/memory_manager \
+ -I$(SDK_SRC_DIR)/util/third_party/crypto/sl_component/se_manager/inc/ \
+ -I$(SDK_SRC_DIR)/platform/common/inc/ \
+ $(NULL)
+
+SILABS_MBEDTLS_SOURCES = \
+ gecko_sdk_suite/v3.0/platform/emlib/src/em_crypto.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/aes.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/asn1parse.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/asn1write.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/base64.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/bignum.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/ccm.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/cipher_wrap.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/cipher.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/cmac.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/ctr_drbg.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/des.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/ecdh.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/ecdsa.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/ecjpake.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/ecp_curves.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/ecp.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/entropy.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/error.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/md_wrap.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/md.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/oid.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/pem.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/pk_wrap.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/pk.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/pkparse.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/platform_util.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/rsa_internal.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/rsa.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/sha1.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/sha256.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/sha512.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/ssl_cache.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/ssl_ciphersuites.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/ssl_cli.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/ssl_cookie.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/ssl_srv.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/ssl_ticket.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/ssl_tls.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/threading.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/x509_create.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/x509_crl.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/x509_crt.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/x509_csr.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/x509.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/x509write_crt.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/x509write_csr.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/sl_crypto/src/crypto_aes.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/sl_crypto/src/crypto_ecp.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/sl_crypto/src/crypto_management.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/sl_crypto/src/crypto_sha.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/sl_crypto/src/entropy_adc.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/sl_crypto/src/entropy_rail.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/sl_crypto/src/se_aes.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/sl_crypto/src/se_ccm.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/sl_crypto/src/se_cmac.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/sl_crypto/src/se_ecp.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/sl_crypto/src/se_jpake.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/sl_crypto/src/se_management.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/sl_crypto/src/se_sha.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/sl_crypto/src/se_trng.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/sl_crypto/src/shax.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/sl_crypto/src/sl_mbedtls.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/sl_crypto/src/trng.c \
+ gecko_sdk_suite/v3.0/util/silicon_labs/silabs_core/memory_manager/sl_malloc.c \
+ $(NULL)
+
+libsilabs_mbedtls_a_CPPFLAGS = \
+ $(SILABS_MBEDTLS_CPPFLAGS) \
+ $(NULL)
+
+libsilabs_mbedtls_a_SOURCES = \
+ $(SILABS_MBEDTLS_SOURCES) \
+ $(NULL)
+
+
+# =============================================================================
COMMONCPPFLAGS = \
-D__STARTUP_CLEAR_BSS \
@@ -115,104 +218,101 @@ COMMONCPPFLAGS =
-I$(SDK_SRC_DIR)/platform/service/sleeptimer/config \
-I$(SDK_SRC_DIR)/platform/service/sleeptimer/inc \
-I$(SDK_SRC_DIR)/util/plugin/plugin-common/fem-control \
+ -I$(SDK_SRC_DIR)/util/third_party/mbedtls/configs \
+ -I$(SDK_SRC_DIR)/util/third_party/mbedtls/include \
-I$(SDK_SRC_DIR)/util/third_party/mbedtls/sl_crypto/include \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
$(NULL)
SILABS_EFR32MG1_CPPFLAGS = \
- -I$(SDK_SRC_DIR)/hardware/kit/EFR32MG1_$(BOARD)/config \
+ -I$(SDK_SRC_DIR)/hardware/kit/EFR32MG1_$(BOARD_UPPERCASE)/config \
-I$(SDK_SRC_DIR)/platform/Device/SiliconLabs/EFR32MG1P/Include \
+ -I$(SDK_SRC_DIR)/platform/emdrv/nvm3/config/s1 \
-I$(SDK_SRC_DIR)/platform/radio/rail_lib/chip/efr32/efr32xg1x \
$(NULL)
SILABS_EFR32MG12_CPPFLAGS = \
- -I$(SDK_SRC_DIR)/hardware/kit/EFR32MG12_$(BOARD)/config \
+ -I$(SDK_SRC_DIR)/hardware/kit/EFR32MG12_$(BOARD_UPPERCASE)/config \
-I$(SDK_SRC_DIR)/platform/Device/SiliconLabs/EFR32MG12P/Include \
+ -I$(SDK_SRC_DIR)/platform/emdrv/nvm3/config/s1 \
-I$(SDK_SRC_DIR)/platform/radio/rail_lib/chip/efr32/efr32xg1x \
$(NULL)
SILABS_EFR32MG13_CPPFLAGS = \
- -I$(SDK_SRC_DIR)/hardware/kit/EFR32MG13_$(BOARD)/config \
+ -I$(SDK_SRC_DIR)/hardware/kit/EFR32MG13_$(BOARD_UPPERCASE)/config \
-I$(SDK_SRC_DIR)/platform/Device/SiliconLabs/EFR32MG13P/Include \
+ -I$(SDK_SRC_DIR)/platform/emdrv/nvm3/config/s1 \
-I$(SDK_SRC_DIR)/platform/radio/rail_lib/chip/efr32/efr32xg1x \
$(NULL)
SILABS_EFR32MG21_CPPFLAGS = \
- -I$(SDK_SRC_DIR)/hardware/kit/EFR32MG21_$(BOARD)/config \
- -I$(SDK_SRC_DIR)/platform/Device/SiliconLabs/EFR32MG21P/Include \
+ -I$(SDK_SRC_DIR)/hardware/kit/EFR32MG21_$(BOARD_UPPERCASE)/config \
+ -I$(SDK_SRC_DIR)/platform/Device/SiliconLabs/EFR32MG21/Include \
+ -I$(SDK_SRC_DIR)/platform/emdrv/nvm3/config/s2 \
-I$(SDK_SRC_DIR)/platform/radio/rail_lib/chip/efr32/efr32xg2x \
$(NULL)
SILABS_COMMON_SOURCES = \
rail_config/rail_config.c \
- gecko_sdk_suite/v2.7/hardware/kit/common/bsp/bsp_bcc.c \
- gecko_sdk_suite/v2.7/hardware/kit/common/bsp/bsp_init.c \
- gecko_sdk_suite/v2.7/hardware/kit/common/bsp/bsp_stk.c \
- gecko_sdk_suite/v2.7/hardware/kit/common/bsp/bsp_stk_leds.c \
- gecko_sdk_suite/v2.7/platform/emdrv/dmadrv/src/dmadrv.c \
- gecko_sdk_suite/v2.7/platform/emdrv/gpiointerrupt/src/gpiointerrupt.c \
- gecko_sdk_suite/v2.7/platform/emdrv/nvm3/src/nvm3_default.c \
- gecko_sdk_suite/v2.7/platform/emdrv/nvm3/src/nvm3_hal_flash.c \
- gecko_sdk_suite/v2.7/platform/emdrv/nvm3/src/nvm3_lock.c \
- gecko_sdk_suite/v2.7/platform/emdrv/uartdrv/src/uartdrv.c \
- gecko_sdk_suite/v2.7/platform/emdrv/ustimer/src/ustimer.c \
- gecko_sdk_suite/v2.7/platform/emlib/src/em_adc.c \
- gecko_sdk_suite/v2.7/platform/emlib/src/em_cmu.c \
- gecko_sdk_suite/v2.7/platform/emlib/src/em_core.c \
- gecko_sdk_suite/v2.7/platform/emlib/src/em_crypto.c \
- gecko_sdk_suite/v2.7/platform/emlib/src/em_emu.c \
- gecko_sdk_suite/v2.7/platform/emlib/src/em_gpio.c \
- gecko_sdk_suite/v2.7/platform/emlib/src/em_ldma.c \
- gecko_sdk_suite/v2.7/platform/emlib/src/em_leuart.c \
- gecko_sdk_suite/v2.7/platform/emlib/src/em_msc.c \
- gecko_sdk_suite/v2.7/platform/emlib/src/em_rmu.c \
- gecko_sdk_suite/v2.7/platform/emlib/src/em_rtcc.c \
- gecko_sdk_suite/v2.7/platform/emlib/src/em_system.c \
- gecko_sdk_suite/v2.7/platform/emlib/src/em_timer.c \
- gecko_sdk_suite/v2.7/platform/emlib/src/em_usart.c \
- gecko_sdk_suite/v2.7/platform/radio/rail_lib/hal/efr32/hal_efr.c \
- gecko_sdk_suite/v2.7/platform/radio/rail_lib/hal/hal_common.c \
- gecko_sdk_suite/v2.7/platform/service/mpu/src/sl_mpu.c \
- gecko_sdk_suite/v2.7/platform/service/sleeptimer/src/sl_sleeptimer.c \
- gecko_sdk_suite/v2.7/platform/service/sleeptimer/src/sl_sleeptimer_hal_rtcc.c \
- gecko_sdk_suite/v2.7/util/third_party/mbedtls/library/ecp.c \
- gecko_sdk_suite/v2.7/util/third_party/mbedtls/sl_crypto/src/crypto_aes.c \
- gecko_sdk_suite/v2.7/util/third_party/mbedtls/sl_crypto/src/crypto_ecp.c \
- gecko_sdk_suite/v2.7/util/third_party/mbedtls/sl_crypto/src/crypto_management.c \
- gecko_sdk_suite/v2.7/util/third_party/mbedtls/sl_crypto/src/crypto_sha.c \
- gecko_sdk_suite/v2.7/util/third_party/mbedtls/sl_crypto/src/shax.c \
+ gecko_sdk_suite/v3.0/hardware/kit/common/bsp/bsp_bcc.c \
+ gecko_sdk_suite/v3.0/hardware/kit/common/bsp/bsp_init.c \
+ gecko_sdk_suite/v3.0/hardware/kit/common/bsp/bsp_stk.c \
+ gecko_sdk_suite/v3.0/hardware/kit/common/bsp/bsp_stk_leds.c \
+ gecko_sdk_suite/v3.0/platform/emdrv/dmadrv/src/dmadrv.c \
+ gecko_sdk_suite/v3.0/platform/emdrv/gpiointerrupt/src/gpiointerrupt.c \
+ gecko_sdk_suite/v3.0/platform/emdrv/nvm3/src/nvm3_default_common_linker.c \
+ gecko_sdk_suite/v3.0/platform/emdrv/nvm3/src/nvm3_hal_flash.c \
+ gecko_sdk_suite/v3.0/platform/emdrv/nvm3/src/nvm3_lock.c \
+ gecko_sdk_suite/v3.0/platform/emdrv/uartdrv/src/uartdrv.c \
+ gecko_sdk_suite/v3.0/platform/emdrv/ustimer/src/ustimer.c \
+ gecko_sdk_suite/v3.0/platform/emlib/src/em_adc.c \
+ gecko_sdk_suite/v3.0/platform/emlib/src/em_cmu.c \
+ gecko_sdk_suite/v3.0/platform/emlib/src/em_core.c \
+ gecko_sdk_suite/v3.0/platform/emlib/src/em_emu.c \
+ gecko_sdk_suite/v3.0/platform/emlib/src/em_gpio.c \
+ gecko_sdk_suite/v3.0/platform/emlib/src/em_ldma.c \
+ gecko_sdk_suite/v3.0/platform/emlib/src/em_leuart.c \
+ gecko_sdk_suite/v3.0/platform/emlib/src/em_msc.c \
+ gecko_sdk_suite/v3.0/platform/emlib/src/em_rmu.c \
+ gecko_sdk_suite/v3.0/platform/emlib/src/em_rtcc.c \
+ gecko_sdk_suite/v3.0/platform/emlib/src/em_system.c \
+ gecko_sdk_suite/v3.0/platform/emlib/src/em_timer.c \
+ gecko_sdk_suite/v3.0/platform/emlib/src/em_usart.c \
+ gecko_sdk_suite/v3.0/platform/radio/rail_lib/hal/efr32/hal_efr.c \
+ gecko_sdk_suite/v3.0/platform/radio/rail_lib/hal/hal_common.c \
+ gecko_sdk_suite/v3.0/platform/service/mpu/src/sl_mpu.c \
+ gecko_sdk_suite/v3.0/platform/service/sleeptimer/src/sl_sleeptimer.c \
+ gecko_sdk_suite/v3.0/platform/service/sleeptimer/src/sl_sleeptimer_hal_rtcc.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/library/ecp.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/sl_crypto/src/crypto_aes.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/sl_crypto/src/crypto_ecp.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/sl_crypto/src/crypto_management.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/sl_crypto/src/crypto_sha.c \
+ gecko_sdk_suite/v3.0/util/third_party/mbedtls/sl_crypto/src/shax.c \
$(NULL)
SILABS_EFR32MG1_SOURCES = \
- gecko_sdk_suite/v2.7/platform/Device/SiliconLabs/EFR32MG1P/Source/system_efr32mg1p.c \
- gecko_sdk_suite/v2.7/platform/Device/SiliconLabs/EFR32MG1P/Source/GCC/startup_efr32mg1p.c \
+ gecko_sdk_suite/v3.0/platform/Device/SiliconLabs/EFR32MG1P/Source/system_efr32mg1p.c \
+ gecko_sdk_suite/v3.0/platform/Device/SiliconLabs/EFR32MG1P/Source/GCC/startup_efr32mg1p.c \
$(NULL)
SILABS_EFR32MG12_SOURCES = \
- gecko_sdk_suite/v2.7/platform/Device/SiliconLabs/EFR32MG12P/Source/system_efr32mg12p.c \
- gecko_sdk_suite/v2.7/platform/Device/SiliconLabs/EFR32MG12P/Source/GCC/startup_efr32mg12p.c \
+ gecko_sdk_suite/v3.0/platform/Device/SiliconLabs/EFR32MG12P/Source/system_efr32mg12p.c \
+ gecko_sdk_suite/v3.0/platform/Device/SiliconLabs/EFR32MG12P/Source/GCC/startup_efr32mg12p.c \
$(NULL)
SILABS_EFR32MG13_SOURCES = \
- gecko_sdk_suite/v2.7/hardware/kit/common/drivers/mx25flash_spi.c \
- gecko_sdk_suite/v2.7/hardware/kit/common/drivers/retargetserial.c \
- gecko_sdk_suite/v2.7/platform/Device/SiliconLabs/EFR32MG13P/Source/system_efr32mg13p.c \
- gecko_sdk_suite/v2.7//platform/Device/SiliconLabs/EFR32MG13P/Source/GCC/startup_efr32mg13p.c \
+ gecko_sdk_suite/v3.0/hardware/kit/common/drivers/mx25flash_spi.c \
+ gecko_sdk_suite/v3.0/hardware/kit/common/drivers/retargetserial.c \
+ gecko_sdk_suite/v3.0/platform/Device/SiliconLabs/EFR32MG13P/Source/system_efr32mg13p.c \
+ gecko_sdk_suite/v3.0//platform/Device/SiliconLabs/EFR32MG13P/Source/GCC/startup_efr32mg13p.c \
$(NULL)
SILABS_EFR32MG21_SOURCES = \
- gecko_sdk_suite/v2.7/platform/Device/SiliconLabs/EFR32MG21/Source/system_efr32mg21.c \
- gecko_sdk_suite/v2.7/platform/Device/SiliconLabs/EFR32MG21/Source/GCC/startup_efr32mg21.c \
- gecko_sdk_suite/v2.7/platform/emlib/src/em_se.c \
- gecko_sdk_suite/v2.7/util/third_party/mbedtls/sl_crypto/src/se_aes.c \
- gecko_sdk_suite/v2.7/util/third_party/mbedtls/sl_crypto/src/se_ccm.c \
- gecko_sdk_suite/v2.7/util/third_party/mbedtls/sl_crypto/src/se_cmac.c \
- gecko_sdk_suite/v2.7/util/third_party/mbedtls/sl_crypto/src/se_ecp.c \
- gecko_sdk_suite/v2.7/util/third_party/mbedtls/sl_crypto/src/se_jpake.c \
- gecko_sdk_suite/v2.7/util/third_party/mbedtls/sl_crypto/src/se_management.c \
- gecko_sdk_suite/v2.7/util/third_party/mbedtls/sl_crypto/src/se_sha.c \
- gecko_sdk_suite/v2.7/util/third_party/mbedtls/sl_crypto/src/se_trng.c \
+ gecko_sdk_suite/v3.0/platform/Device/SiliconLabs/EFR32MG21/Source/system_efr32mg21.c \
+ gecko_sdk_suite/v3.0/platform/Device/SiliconLabs/EFR32MG21/Source/GCC/startup_efr32mg21.c \
+ gecko_sdk_suite/v3.0/platform/emlib/src/em_se.c \
$(NULL)
libsilabs_efr32mg1_sdk_a_CPPFLAGS = \
@@ -256,7 +356,7 @@ libsilabs_efr32mg21_sdk_a_SOURCES
$(NULL)
noinst_HEADERS = \
- $(NULL)
+ $(NULL)
include $(abs_top_nlbuild_autotools_dir)/automake/post.am