This directory contains example platform drivers for Nordic Semiconductor nRF52840 SoC.
To facilitate Thread products development with the nRF52840 platform, Nordic Semiconductor provides nRF5 SDK for Thread and Zigbee. See Nordic Semiconductor's nRF5 SDK for Thread and Zigbee section for more details.
Download and install GNU toolchain for ARM Cortex-M.
In a Bash terminal, follow these instructions to install the GNU toolchain and other dependencies.
$ cd <path-to-openthread> $ ./script/bootstrap
$ cd <path-to-openthread> $ ./bootstrap $ make -f examples/Makefile-nrf52840
After a successful build, the elf
files can be found in <path-to-openthread>/output/nrf52840/bin
. You can convert them to hex
files using arm-none-eabi-objcopy
:
$ arm-none-eabi-objcopy -O ihex ot-cli-ftd ot-cli-ftd.hex
You can build the libraries with support for native USB CDC ACM as a serial transport. To do so, build the libraries with the following parameter:
$ make -f examples/Makefile-nrf52840 USB=1
Note, that if Windows 7 or earlier is used, an additional USB CDC driver has to be loaded. It can be found in third_party/NordicSemiconductor/libraries/usb/nordic_cdc_acm_example.inf
You can build the libraries with support for native SPI Slave. To do so, build the libraries with the following parameter:
$ make -f examples/Makefile-nrf52840 NCP_SPI=1
With this option enabled, SPI communication between the NCP example and wpantund is possible (provided that the wpantund host supports SPI Master). To achieve that, an appropriate SPI device should be chosen in wpantund configuration file, /etc/wpantund.conf
. You can find an example below.
Config:NCP:SocketPath "system:/usr/bin/spi-hdlc-adapter --gpio-int /sys/class/gpio/gpio25 /dev/spidev0.0"
spi-hdlc-adapter is a tool that can be used to perform communication between NCP and wpantund over SPI. In the above example it is assumed that spi-hdlc-adapter
is installed in /usr/bin
.
The default SPI Slave pin configuration for nRF52840 is defined in examples/platforms/nrf52840/platform-config.h
.
Note that the native SPI Slave support is not intended to be used with Engineering sample A of the nRF52840 chip due to single transfer size limitation.
Flash the compiled binaries onto nRF52840 using nrfjprog
which is part of the nRF5x Command Line Tools.
$ nrfjprog -f nrf52 --chiperase --program output/nrf52840/bin/ot-cli-ftd.hex --reset
Prepare two boards with the flashed CLI Example
(as shown above).
The CLI example uses UART connection. To view raw UART output, start a terminal emulator like PuTTY and connect to the used COM port with the following UART settings:
On Linux system a port name should be called e.g. /dev/ttyACM0
or /dev/ttyACM1
.
Open a terminal connection on the first board and start a new Thread network.
> panid 0xabcd Done > ifconfig up Done > thread start Done
> state Leader
> panid 0xabcd Done > ifconfig up Done > thread start Done
> state Child
> ipaddr fdde:ad00:beef:0:0:ff:fe00:fc00 fdde:ad00:beef:0:0:ff:fe00:9c00 fdde:ad00:beef:0:4bcb:73a5:7c28:318e fe80:0:0:0:5c91:c61:b67c:271c
> ping fdde:ad00:beef:0:0:ff:fe00:fc00 16 bytes from fdde:ad00:beef:0:0:ff:fe00:fc00: icmp_seq=1 hlim=64 time=8ms
For a list of all available commands, visit OpenThread CLI Reference README.md.
By default, the OpenThread‘s logging module provides functions to output logging information over SEGGER’s Real Time Transfer (RTT).
RTT output can be viewed in the J-Link RTT Viewer, which is available from SEGGER. The viewer is also included in the nRF Tools. To read or write messages over RTT, connect an nRF5 development board via USB and run the J-Link RTT Viewer.
Select the correct target device (nRF52) and the target interface “SWD”.
The intended log level can be set using OPENTHREAD_CONFIG_LOG_LEVEL
define.
Due to a known issue in Segger’s J-Link firmware, depending on your version, you might experience data corruption or drops if you use the serial port. You can avoid this issue by disabling the Mass Storage Device:
Run the following command: MSDDisable
nRF52840 port extends OpenThread Diagnostics Module.
You can read about all the features here.
The radio driver comes with documentation that describes the operation of state machines in this module. To open the *.uml
sequence diagrams, use PlantUML.
The following toolchains have been used for testing and verification:
The following OpenThread commits have been verified with nRF52840 examples by Nordic Semiconductor:
ec59d7e
- 06.04.2018 (the newest checked)a89eb88
- 16.11.20176a15261
- 29.06.2017030efba
- 22.04.2017de48acf
- 02.03.201750db58d
- 23.01.2017The nRF5 Software Development Kit (SDK) for Thread and Zigbee helps you when developing Thread products with Nordic Semiconductor's advanced nRF52840 System on Chip (SoC).
The nRF5 SDK for Thread and Zigbee includes:
By default, mbedTLS library is built with support for CryptoCell 310 hardware acceleration of cryptographic operations used in OpenThread. You can disable CryptoCell 310 and use software cryptography instead by building OpenThread with the following parameter:
$ make -f examples/Makefile-nrf52840 DISABLE_CC310=1