CHIP EFR32 Pigweed Example Application
Contents
CHIP EFR32 Pigweed Example Application#
The EFR32 example demonstrates the usage of Pigweed module functionalities in an application.
The example is based on CHIP, the Pigweed module, which is a collection of libraries that provide different functionalities for embedded systems, and the EFR32 platform.
You can use this example as a training ground for making experiments, testing Pigweed module features and checking what actions are necessary to fully integrate Pigweed in a CHIP project.
Pigweed functionalities are being gradually integrated into CHIP. Currently, the following features are available:
Echo RPC - Creates a Remote Procedure Call server and allows sending commands through the serial port to the device, which makes echo and sends the received commands back.
Building the Example Application#
Download or clone the sdk_support from GitHub
git clone https://github.com/SiliconLabs/sdk_support.git
and export the path with :
export EFR32_SDK_ROOT=<Path to cloned git repo>
Download the Simplicity Commander command line tool, and ensure that
commander
is your shell search path. (For Mac OS X,commander
is located insideCommander.app/Contents/MacOS/
.)export PATH=/Applications/Commander.app/Contents/MacOS:$PATH
Download and install a suitable ARM gcc tool chain: GNU Arm Embedded Toolchain 9-2019-q4-major
Install some additional tools(likely already present for CHIP developers):
Linux
sudo apt-get install git libwebkitgtk-1.0-0 ninja-build
Mac OS X
brew install ninja
Supported hardware:
MG12 boards:
BRD4161A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@19dBm
BRD4162A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm
BRD4163A / SLWSTK6000B / Dual band Wireless Starter Kit / 2.4GHz@19dBm, 868MHz@19dBm
BRD4164A / SLWSTK6000B / Dual band Wireless Starter Kit / 2.4GHz@19dBm, 915MHz@19dBm
BRD4166A / SLTB004A / Thunderboard Sense 2 / 2.4GHz@10dBm
BRD4170A / SLWSTK6000B / Multiband Wireless Starter Kit / 2.4GHz@19dBm, 915MHz@19dBm
BRD4304A / SLWSTK6000B / MGM12P Module / 2.4GHz@19dBm
MG21 boards: Currently not supported due to RAM limitation.
BRD4180A / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@20dBm
MG24 boards :
BRD2601B / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm
BRD2703A / SLWSTK6000B / Wireless Starter Kit / 2.4GHz@10dBm
BRD4186A / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@10dBm
BRD4186C / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@10dBm
BRD4187A / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@20dBm
BRD4187C / SLWSTK6006A / Wireless Starter Kit / 2.4GHz@20dBm
Build the example application:
cd ~/connectedhomeip/examples/pigweed-app/efr32 git submodule update --init source third_party/connectedhomeip/scripts/activate.sh export EFR32_BOARD=BRD4161A gn gen out/debug ninja -C out/debug
To delete generated executable, libraries and object files use:
cd ~/connectedhomeip/examples/pigweed-app/efr32 rm -rf out/
Flashing the Application#
On the command line:
cd ~/connectedhomeip/examples/pigweed-app/efr32 python3 out/debug/chip-efr32-pigweed-example.flash.py
With the Commander app, just load the .s37 file.
Or with the Ozone debugger, just load the .out file.
Testing the Example Application#
Determine the serial port name for the EFR device by checking /dev: ls /dev/tty*
It should look like this : - On Linux /dev/ttyACM0 - On MAC /dev/tty.usbmodem0004401548451
Run the following command to start an interactive Python shell, where the Echo RPC commands can be invoked:
python -m pw_hdlc.rpc_console --device /dev/tty.usbmodem0004401548451 -b 115200 <CHIP_ROOT>/third_party/pigweed/repo/pw_rpc/pw_rpc_protos/echo.proto -o /tmp/pw_rpc.out
To send an Echo RPC message, type the following command, where the actual message is the text in quotation marks after the
msg=
phrase:rpcs.pw.rpc.EchoService.Echo(msg="hi")
Note: Some users might have to install the VCP driver before the device shows up on
/dev/tty
.
Memory settings#
While most of the RAM usage in CHIP is static, allowing easier debugging and
optimization with symbols analysis, we still need some HEAP for the crypto and
OpenThread. Size of the HEAP can be modified by changing the value of the
SL_STACK_SIZE
define inside of the BUILD.gn file of this example. Please take
note that a HEAP size smaller than 5k can and will cause a Mbedtls failure
during the BLE rendez-vous.