Skip to content

Latest commit

 

History

History
267 lines (208 loc) · 16.7 KB

silabs_getting_started.md

File metadata and controls

267 lines (208 loc) · 16.7 KB

Silicon Labs Matter Solution Guide

Introduction

The Silabs Matter Solution Guide explains how to use the Silabs Matter offering. It explains how to set up the development environment, build and flash a Silabs sample app.

Silabs logo

NOTE: Silicon Laboratories now maintains a public Matter GitHub repo with frequent releases thoroughly tested and validated. Developers looking to develop matter products with silabs hardware are encouraged to use our latest release with added tools and documentation. Silabs Matter Github

Developers can find more resources on the Silicon Labs Matter Community Page.

Requirements

Hardware Requirements

For the list of hardware requirements, see the official Silicon Labs Matter HW requirements documentation.

Software Requirements

For the list of software requirements, see the official Silicon Labs Matter Software requirements documentation.

Software Artifacts

For pre-built binaries for the latest Silicon Labs Matter release, see the official Silicon Labs Matter Software Artifacts. This includes all necessary binaries to run a Silicon Labs sample app.

Building

Silicon Labs currently supports the following list of sample apps in the main Matter SDK. Every sample has its own documentation explaining its unique features and functionalities. The examples in the CSA Matter Repository column are supported in the main Matter SDK. Additionally, the Silabs Matter Repository offers extra sample applications for different device-types

CSA Matter Repository Silabs Matter Repository

Build Script

To build a Silicon Labs sample apps, we provide the gn_silabs_examples.sh scripts that can be found in the ./scripts/examples directory. The build script can be used to build all of the Silabs supported examples. The command structure is as follows when called from the root of the repository:

./scripts/examples/gn_silabs_example.sh <path_to_sample_app> <output_directory> <board> <args>

To build the lighting app as an OpenThread SoC, the default build command for the BRD4187C DK is

./scripts/examples/gn_silabs_example.sh ./examples/lighting-app/silabs/ ./out/lighting-app BRD4187C

To build the lighting app as an Wi-Fi MG24 + RS9116 NCP, the default build command for the BRD4187C is

./scripts/examples/gn_silabs_example.sh examples/lighting-app/silabs/ out/lighting-app_rs9116 BRD4187C use_external_flash=false chip_enable_ble_rs911x=true --wifi rs9116

Note: The build argument --wifi rs9116 is necessary to build the BRD4187C image with the necessary code for the NCP combo. chip_enable_ble_rs911x=true enables the RS9116 NCP bluetooth. The MG24 + RS9116 NCP combo does not yet support external flash.

To build the lighting app as an Wi-Fi MG24 + SiWx917 NCP, the default build command for the BRD4187C is

./scripts/examples/gn_silabs_example.sh examples/lighting-app/silabs/ out/lighting-app_siwx917 BRD4187C use_external_flash=false chip_enable_ble_rs911x=true --wifi SiWx917

Note: The build argument --wifi SiWx917 is necessary to build BRD4187C image with the necessary code for the NCP combo. chip_enable_ble_rs911x=true enables the RS9116 NCP bluetooth. The MG24 + SiWx917 NCP combo does not yet support external flash.

To build the lighting app as an Wi-Fi MG24 + wf200 NCP, the default build command for the BRD4187C is

$ ./scripts/examples/gn_silabs_example.sh examples/lighting-app/silabs/ out/lighting-app_wf200 BRD4187C --wifi wf200

Note: The build argument --wifi wf200 is necessary to build the BRD4187C image with the necessary code for the NCP combo.

Build Arguments

The ``gn_silabs_examples.sh` script takes two types of build arguments. The first type are macros processed within the script itself and the second are GN arguments. The Macros encapsulate multiple GN arguments to simplify enabling or disabled specific features.

Note: Executing the build script without any arguments will print a helper with the command structure, the list of supported boards, and a list of supported macros and arguments

./scripts/examples/gn_silabs_examples.sh

Here is a list of some the supported macros and their GN argument equivalent.

Macro Name Description GN equivalent
--wifi Configures an sample app as a Wi-Fi devices.
This macro requires rs9116 or SiWx917 or wf200.
--wifi rs9116 : use_rs9116=true
--wifi SiWx917 : use_SiWx917=true
--wifi wf200 : use_wf200=true
--icd Configures the device as an ICD chip_enable_icd_server=true chip_openthread_ftd=false
--low-power Configures the most power efficient build.
This is used in tandem with the --icd macro
chip_build_libshell=false enable_openthread_cli=false show_qr_code=false disable_lcd=true
--chip_enable_wifi_ipv4 Enables IPv4 support on Wi-fi configured builds chip_enable_wifi_ipv4=true chip_inet_config_enable_ipv4=true
--clean Cleans the output directory before building NA
--additional_data_advertising Enable additional data advertising and rotating device ID chip_enable_additional_data_advertising=true chip_enable_rotating_device_id=true
--use_ot_lib Builds the sample app with the Silabs certified OpenThread libraries use_silabs_thread_lib=true chip_openthread_target=$SILABS_THREAD_TARGET openthread_external_platform=""""
--use_ot_coap_lib Builds the sample app with the Silabs certified OpenThread COAP libraries use_silabs_thread_lib=true chip_openthread_target=$SILABS_THREAD_TARGET openthread_external_platform="""" use_thread_coap_lib=true
--release Remove all logs and debugs features (including the LCD).
Yields the smallest image size possible
is_debug=false disable_lcd=true chip_build_libshell=false enable_openthread_cli=false use_external_flash=false chip_logging=false silabs_log_enabled=false
--bootloader Adds a bootloader to the built image NA
--uart_log Forwards logs to uart instead of RTT sl_uart_log_output=true

Here is a list of some of the GN arguments that can be added to the build command.

Note: All GN arguments can be added to the build. gn args --list <output_directory> can be used to list all GN arguments.

GN argument Description Default Value
chip_build_libshell Enables the Matter Shell false
chip_openthread_ftd Defines if the OpenThread device is an FTD (true) or an MTD (false) true
efr32_sdk_root Location for an alternate Gecko SDK ./third_party/silabs/gecko_sdk
enable_heap_monitoring Monitor & log memory usage at runtime false
enable_openthread_cli Enables the OpenThread cli true
kvs_max_entries Set the maximum KVS entries that can be stored in NVM
Thresholds: 30 <= kvs_max_entries <= 255
255
chip_enable_icd_server Configure device as an intermittently connected device
For Thread builds, chip_openthread_ftd must also be set to false.
false
disable_lcd Disable the LCD on devices with an LCD false
show_qr_code Enables QR code on LCD for devices with an LCD true

On top of the GN arguments specified here, each sample app will specify, if need be, the GN arguments specific to it.

Flashing

The Matter SDK provides a standard way of flashing a sample app binary onto hardware. After completing a build, a python script is generated that can be used to flash the binary. The naming structure of the file is

matter-silabs-<sample_name>-example.flash.py

For example, the lighting-app flasher script will be named

matter-silabs-lighting-example.flash.py

To execute the script, the following command can be used:

python3 <path>/matter-silabs-lighting-example.flash.py

where <path> is the path to the output directory used in the build script.

Note: It is also possible to flash the built binary with commander directly. The commander command is commander flash <path>/matter-silabs-lighting-example.<s37/rps>
The .s37 binaries are used with the MGM24 and EFR32 families while the .rps binaries are only used for the SiWx917 SoC family.

Flasher Arguments

The flashing script provides configuration arguments and operation arguments. The configuration arguments are used to configure the operation arguments.

Here is a list of the configuration arguments that can be added to the flasher script.

Argument Description
--verbose, -v Report more verbosely
--commander FILE Path to the commander executable
--device, -d DEVICE Device family or platform to target (EFR32, MGM24, 917)
--serialno, -s SERIAL Serial number of device to flash.
This argument is necessary when multiple boards of the same family are connected.
--ip, -a ADDRESS IP Address of the device to flash

Here is a list of the operations arguments that can be added to the flasher script.

Argument Description Commander equivalent
--erase Erase the devices flash.
This options completely wipes the devices flash including factory data.
commander device masserase
--application FILE Specify which binary to flash.
The flasher script provides a default path to the binary that was just built.
commander flash
--reset Reset device after flashing commander device reset
--skip-reset Do not reset device after flashing commander flash --noreset
--verify-application Verify the image after flashing commander verify

Executing the flasher scripts with the --help / -h arguments will print a help menu with all the possible arguments.

Note: For a wider range of features, the commander tool can be used directly. Running commander --help / -h will list all the available options of the tool.

Standard Application Behavior

See the Standard Application documentation for behaviors that are common to all sample apps.

Silabs CLI

See the Silabs CLI documentation for more information on the provided cli commands.