[efr32] update for compatibility with GSDK 3.0 (#5529)

This commit includes a relatively minimal set of changes that are
required to allow the efr32 platforms to function with the newly
released Silabs Gecko SDK v3.0.

Change Log:
- Pull in definitions for halInitChipSpecific() and all child
  functions from GSDK v2.7.
  - These will be replaced with a more elegant solution in a future
    commit.
- Switch to the mbedtls that is packaged with GSDK v3.0.
- Allow for mixed casing when specifying BOARD environment variable
This commit is contained in:
Mason Tran
2020-09-17 07:48:16 -07:00
committed by GitHub
parent 0c0e1dfe67
commit 04ed75eb53
43 changed files with 1438 additions and 577 deletions
+16 -14
View File
@@ -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\"'
+19 -18
View File
@@ -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\"'
+15 -13
View File
@@ -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\"'
+16 -16
View File
@@ -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) \
+5 -4
View File
@@ -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 \
@@ -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)
+9 -3
View File
@@ -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
@@ -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
@@ -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 >>>
// <h> TLS/DTLS configuration
// <o MBEDTLS_SSL_CIPHERSUITES> Complete list of ciphersuites to use, in order of preference.
// <i> Default: MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8
// <i> Complete list of ciphersuites to use, in order of preference.
// <i> The value of this configuration should be updated for the application needs.
#define MBEDTLS_SSL_CIPHERSUITES MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8
// <o MBEDTLS_SSL_MAX_CONTENT_LEN> Maximum TLS/DTLS fragment length in bytes.
// <i> Default: 768
// <i> The size configured here determines the size of each of the two
// <i> internal I/O buffers used in mbedTLS when sending and receiving data.
#define MBEDTLS_SSL_MAX_CONTENT_LEN 768
// <q SL_MBEDTLS_SSL_MAX_FRAGMENT_LENGTH> Enable support for RFC 6066 max_fragment_length extension in SSL.
// <i> Default: 1
// <i> Enable support for RFC 6066 max_fragment_length extension in SSL.
#define SL_MBEDTLS_SSL_MAX_FRAGMENT_LENGTH 1
// <q SL_MBEDTLS_SSL_EXPORT_KEYS> Enable support for exporting key block and master secret.
// <i> Default: 1
// <i> Enable support for exporting key block and master secret.
// <i> This is required for certain users of TLS, e.g. EAP-TLS.
#define SL_MBEDTLS_SSL_EXPORT_KEYS 1
// <q SL_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED> Enable the PSK based ciphersuite modes in SSL / TLS.
// <i> Default: 0
// <i> Enable the PSK based ciphersuite modes in SSL / TLS.
#define SL_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED 1
// <q SL_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED> Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS.
// <i> Default: 0
// <i> Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS.
#define SL_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED 0
// <q SL_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED> Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS.
// <i> Default: 0
// <i> Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS.
#define SL_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED 1
// <q SL_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED> Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS.
// <i> Default: 0
// <i> Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS.
#define SL_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED 0
// </h>
// <<< 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
@@ -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
+24
View File
@@ -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
}
+90 -1
View File
@@ -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);
+5 -4
View File
@@ -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 \
@@ -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)
+9 -3
View File
@@ -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
@@ -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
@@ -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 >>>
// <h> TLS/DTLS configuration
// <o MBEDTLS_SSL_CIPHERSUITES> Complete list of ciphersuites to use, in order of preference.
// <i> Default: MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8
// <i> Complete list of ciphersuites to use, in order of preference.
// <i> The value of this configuration should be updated for the application needs.
#define MBEDTLS_SSL_CIPHERSUITES MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8
// <o MBEDTLS_SSL_MAX_CONTENT_LEN> Maximum TLS/DTLS fragment length in bytes.
// <i> Default: 768
// <i> The size configured here determines the size of each of the two
// <i> internal I/O buffers used in mbedTLS when sending and receiving data.
#define MBEDTLS_SSL_MAX_CONTENT_LEN 768
// <q SL_MBEDTLS_SSL_MAX_FRAGMENT_LENGTH> Enable support for RFC 6066 max_fragment_length extension in SSL.
// <i> Default: 1
// <i> Enable support for RFC 6066 max_fragment_length extension in SSL.
#define SL_MBEDTLS_SSL_MAX_FRAGMENT_LENGTH 1
// <q SL_MBEDTLS_SSL_EXPORT_KEYS> Enable support for exporting key block and master secret.
// <i> Default: 1
// <i> Enable support for exporting key block and master secret.
// <i> This is required for certain users of TLS, e.g. EAP-TLS.
#define SL_MBEDTLS_SSL_EXPORT_KEYS 1
// <q SL_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED> Enable the PSK based ciphersuite modes in SSL / TLS.
// <i> Default: 0
// <i> Enable the PSK based ciphersuite modes in SSL / TLS.
#define SL_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED 1
// <q SL_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED> Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS.
// <i> Default: 0
// <i> Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS.
#define SL_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED 0
// <q SL_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED> Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS.
// <i> Default: 0
// <i> Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS.
#define SL_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED 1
// <q SL_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED> Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS.
// <i> Default: 0
// <i> Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS.
#define SL_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED 0
// </h>
// <<< 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
@@ -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
+24
View File
@@ -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
}
@@ -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 \
@@ -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 \
+90 -1
View File
@@ -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);
+5 -4
View File
@@ -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 \
@@ -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)
+9 -3
View File
@@ -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
@@ -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
@@ -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 >>>
// <h> TLS/DTLS configuration
// <o MBEDTLS_SSL_CIPHERSUITES> Complete list of ciphersuites to use, in order of preference.
// <i> Default: MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8
// <i> Complete list of ciphersuites to use, in order of preference.
// <i> The value of this configuration should be updated for the application needs.
#define MBEDTLS_SSL_CIPHERSUITES MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8
// <o MBEDTLS_SSL_MAX_CONTENT_LEN> Maximum TLS/DTLS fragment length in bytes.
// <i> Default: 768
// <i> The size configured here determines the size of each of the two
// <i> internal I/O buffers used in mbedTLS when sending and receiving data.
#define MBEDTLS_SSL_MAX_CONTENT_LEN 768
// <q SL_MBEDTLS_SSL_MAX_FRAGMENT_LENGTH> Enable support for RFC 6066 max_fragment_length extension in SSL.
// <i> Default: 1
// <i> Enable support for RFC 6066 max_fragment_length extension in SSL.
#define SL_MBEDTLS_SSL_MAX_FRAGMENT_LENGTH 1
// <q SL_MBEDTLS_SSL_EXPORT_KEYS> Enable support for exporting key block and master secret.
// <i> Default: 1
// <i> Enable support for exporting key block and master secret.
// <i> This is required for certain users of TLS, e.g. EAP-TLS.
#define SL_MBEDTLS_SSL_EXPORT_KEYS 1
// <q SL_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED> Enable the PSK based ciphersuite modes in SSL / TLS.
// <i> Default: 0
// <i> Enable the PSK based ciphersuite modes in SSL / TLS.
#define SL_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED 1
// <q SL_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED> Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS.
// <i> Default: 0
// <i> Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS.
#define SL_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED 0
// <q SL_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED> Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS.
// <i> Default: 0
// <i> Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS.
#define SL_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED 1
// <q SL_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED> Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS.
// <i> Default: 0
// <i> Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS.
#define SL_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED 0
// </h>
// <<< 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
@@ -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
+24
View File
@@ -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
}
@@ -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 \
@@ -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 \
+90 -2
View File
@@ -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);
+8 -7
View File
@@ -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 \
@@ -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)
+9 -17
View File
@@ -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 <path-to-openthread>/third_party
$ ln -s <path-to-Simplicity-Studio>/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:
```
<path-to-Simplicity-Studio>/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
@@ -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
@@ -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 >>>
// <h> TLS/DTLS configuration
// <o MBEDTLS_SSL_CIPHERSUITES> Complete list of ciphersuites to use, in order of preference.
// <i> Default: MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8
// <i> Complete list of ciphersuites to use, in order of preference.
// <i> The value of this configuration should be updated for the application needs.
#define MBEDTLS_SSL_CIPHERSUITES MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8
// <o MBEDTLS_SSL_MAX_CONTENT_LEN> Maximum TLS/DTLS fragment length in bytes.
// <i> Default: 768
// <i> The size configured here determines the size of each of the two
// <i> internal I/O buffers used in mbedTLS when sending and receiving data.
#define MBEDTLS_SSL_MAX_CONTENT_LEN 768
// <q SL_MBEDTLS_SSL_MAX_FRAGMENT_LENGTH> Enable support for RFC 6066 max_fragment_length extension in SSL.
// <i> Default: 1
// <i> Enable support for RFC 6066 max_fragment_length extension in SSL.
#define SL_MBEDTLS_SSL_MAX_FRAGMENT_LENGTH 1
// <q SL_MBEDTLS_SSL_EXPORT_KEYS> Enable support for exporting key block and master secret.
// <i> Default: 1
// <i> Enable support for exporting key block and master secret.
// <i> This is required for certain users of TLS, e.g. EAP-TLS.
#define SL_MBEDTLS_SSL_EXPORT_KEYS 1
// <q SL_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED> Enable the PSK based ciphersuite modes in SSL / TLS.
// <i> Default: 0
// <i> Enable the PSK based ciphersuite modes in SSL / TLS.
#define SL_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED 1
// <q SL_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED> Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS.
// <i> Default: 0
// <i> Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS.
#define SL_MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED 0
// <q SL_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED> Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS.
// <i> Default: 0
// <i> Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS.
#define SL_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED 1
// <q SL_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED> Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS.
// <i> Default: 0
// <i> Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS.
#define SL_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED 0
// </h>
// <<< 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
@@ -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
+26 -1
View File
@@ -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
}
@@ -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 \
@@ -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 \
+91 -2
View File
@@ -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);
+167 -67
View File
@@ -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