mirror of
https://github.com/espressif/openthread.git
synced 2026-10-02 13:57:38 +00:00
[doc] update posix app README (#6635)
This commit updates the doc for using posix app. Basically, it updates the instructions to use cmake build posix core and transceiver.
This commit is contained in:
+118
-45
@@ -16,70 +16,143 @@ The figure below shows the architecture of OpenThread running in transceiver mod
|
|||||||
POSIX Chip
|
POSIX Chip
|
||||||
```
|
```
|
||||||
|
|
||||||
## Build
|
## Build POSIX CLI
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# build core for POSIX
|
./script/cmake-build posix
|
||||||
make -f src/posix/Makefile-posix
|
|
||||||
# build transceiver, where xxxx is the platform name, such as cc2538, nrf52840 and so on
|
|
||||||
make -f examples/Makefile-xxxx
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Test
|
If built successfully, the binary should be found at: `build/posix/src/posix/ot-cli`.
|
||||||
|
|
||||||
|
## Transceivers on different platforms
|
||||||
|
|
||||||
|
### Simulation
|
||||||
|
|
||||||
|
OpenThread provides an implemenation on the simulation platform which enables running a simulated transceiver on the host.
|
||||||
|
|
||||||
|
#### Build
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Only build RCP so that it goes faster
|
||||||
|
./script/cmake-build simulation -DOT_APP_CLI=OFF -DOT_APP_NCP=OFF -DOT_FTD=OFF -DOT_MTD=OFF
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Run
|
||||||
|
|
||||||
**NOTE** Assuming the build system is 64bit Linux, you can use the normal OpenThread CLI as described in the [command line document](../../src/cli/README.md). You can also perform radio diagnostics using the command [diag](../../src/core/diags/README.md).
|
**NOTE** Assuming the build system is 64bit Linux, you can use the normal OpenThread CLI as described in the [command line document](../../src/cli/README.md). You can also perform radio diagnostics using the command [diag](../../src/core/diags/README.md).
|
||||||
|
|
||||||
### With Simulation
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make -f examples/Makefile-simulation
|
./build/posix/src/posix/ot-cli 'spinel+hdlc+forkpty://build/simulation/examples/apps/ncp/ot-rcp?forkpty-arg=1'
|
||||||
./output/posix/bin/ot-cli 'spinel+hdlc+forkpty://output/simulation/bin/ot-rcp?forkpty-arg=1'
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### With Real Device
|
### Nordic Semiconductor nRF52840
|
||||||
|
|
||||||
#### nRF52840
|
The nRF example platform driver can be found in the [ot-nrf528xx](https://github.com/openthread/ot-nrf528xx) repo.
|
||||||
|
|
||||||
- USB=0
|
#### Build
|
||||||
|
|
||||||
|
To build and program the device with RCP application, complete the following steps:
|
||||||
|
|
||||||
|
1. Clone the OpenThread nRF528xx platform repository into the current directory:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git clone --recursive https://github.com/openthread/ot-nrf528xx.git
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Enter the `ot-nrf528xx` directory:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd ot-nrf528xx
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Install the OpenThread dependencies:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
./script/bootstrap
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Build the RCP example for the hardware platform and the transport of your choice:
|
||||||
|
|
||||||
|
a. nRF52840 Dongle (USB transport)
|
||||||
|
|
||||||
|
```sh
|
||||||
|
rm -rf build
|
||||||
|
script/build nrf52840 USB_trans -DOT_BOOTLOADER=USB -DOT_THREAD_VERSION=1.2
|
||||||
|
```
|
||||||
|
|
||||||
|
b. For nRF52840 Development Kit
|
||||||
|
|
||||||
|
```sh
|
||||||
|
rm -rf build
|
||||||
|
script/build nrf52840 UART_trans -DOT_THREAD_VERSION=1.2
|
||||||
|
```
|
||||||
|
|
||||||
|
This creates an RCP image at `build/bin/ot-rcp`.
|
||||||
|
|
||||||
|
5. Depending on the hardware platform, complete the following steps to program the device:
|
||||||
|
|
||||||
|
a. nRF52840 Dongle (USB transport)
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Install nRF Util:
|
||||||
|
python3 -m pip install -U nrfutil
|
||||||
|
|
||||||
|
# Generate the RCP firmware package:
|
||||||
|
nrfutil pkg generate --hw-version 52 --sd-req=0x00 \
|
||||||
|
--application build/bin/ot-rcp.hex --application-version 1 build/bin/ot-rcp.zip
|
||||||
|
```
|
||||||
|
|
||||||
|
Connect the nRF52840 Dongle to the USB port and press the **RESET** button on the dongle to put it into the DFU mode. The LED on the dongle starts blinking red.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Install the RCP firmware package onto the dongle
|
||||||
|
nrfutil dfu usb-serial -pkg build/bin/ot-rcp.zip -p /dev/ttyACM0
|
||||||
|
```
|
||||||
|
|
||||||
|
b. nRF52840 Development Kit
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Program the image using the nrfjprog utility.
|
||||||
|
nrfjprog -f nrf52 --chiperase --program build/bin/ot-rcp.hex --reset
|
||||||
|
```
|
||||||
|
|
||||||
|
Disable the Mass Storage feature on the device, so that it does not interfere with the core RCP functionalities:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
JLinkExe -device NRF52840_XXAA -if SWD -speed 4000 -autoconnect 1
|
||||||
|
J-Link>MSDDisable
|
||||||
|
Probe configured successfully.
|
||||||
|
J-Link>exit
|
||||||
|
```
|
||||||
|
|
||||||
|
Power-cycle the device to apply the changes.
|
||||||
|
|
||||||
|
#### Run
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make -f examples/Makefile-nrf52840
|
./build/posix/src/posix/ot-cli 'spinel+hdlc+uart:///dev/ttyACM0?uart-baudrate=115200'
|
||||||
arm-none-eabi-objcopy -O ihex output/nrf52840/bin/ot-rcp ot-rcp.hex
|
|
||||||
nrfjprog -f nrf52 --chiperase --reset --program ot-rcp.hex
|
|
||||||
nrfjprog -f nrf52 --pinresetenable
|
|
||||||
nrfjprog -f nrf52 --reset
|
|
||||||
|
|
||||||
# Disable MSD
|
|
||||||
expect <<EOF
|
|
||||||
spawn JLinkExe
|
|
||||||
expect "J-Link>"
|
|
||||||
send "msddisable\n"
|
|
||||||
expect "Probe configured successfully."
|
|
||||||
exit
|
|
||||||
EOF
|
|
||||||
|
|
||||||
./output/posix/bin/ot-cli 'spinel+hdlc+uart:///dev/ttyACM0?uart-baudrate=115200'
|
|
||||||
```
|
```
|
||||||
|
|
||||||
- USB=1
|
### CC2538
|
||||||
|
|
||||||
```sh
|
#### Build
|
||||||
# without USB=1 may result in failure for serial port issue
|
|
||||||
make -f examples/Makefile-nrf52840 USB=1
|
```
|
||||||
arm-none-eabi-objcopy -O ihex output/nrf52840/bin/ot-rcp ot-rcp.hex
|
./script/cmake-build cc2538 -DOT_APP_CLI=OFF -DOT_APP_NCP=OFF -DOT_FTD=OFF -DOT_MTD=OFF
|
||||||
nrfjprog -f nrf52 --chiperase --reset --program ot-rcp.hex
|
|
||||||
# plug the CDC serial USB port
|
|
||||||
./output/posix/bin/ot-cli 'spinel+hdlc+uart:///dev/ttyACM0?uart-baudrate=115200'
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### CC2538
|
#### Flash
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make -f examples/Makefile-cc2538
|
arm-none-eabi-objcopy -O ihex build/cc2538/examples/apps/ncp/ot-rcp ot-rcp.bin
|
||||||
arm-none-eabi-objcopy -O binary output/cc2538/bin/ot-rcp ot-rcp.bin
|
|
||||||
# see https://github.com/JelmerT/cc2538-bsl
|
# see https://github.com/JelmerT/cc2538-bsl
|
||||||
python cc2538-bsl/cc2538-bsl.py -b 460800 -e -w -v -p /dev/ttyUSB0 ot-rcp.bin
|
python cc2538-bsl/cc2538-bsl.py -b 460800 -e -w -v -p /dev/ttyUSB0 ot-rcp.bin
|
||||||
./output/posix/bin/ot-cli 'spinel+hdlc+uart:///dev/ttyUSB0?uart-baudrate=115200'
|
```
|
||||||
|
|
||||||
|
#### Run
|
||||||
|
|
||||||
|
```sh
|
||||||
|
./build/posix/src/posix/ot-cli 'spinel+hdlc+uart:///dev/ttyUSB0?uart-baudrate=115200'
|
||||||
```
|
```
|
||||||
|
|
||||||
## Daemon Mode
|
## Daemon Mode
|
||||||
@@ -88,11 +161,11 @@ OpenThread Posix Daemon mode uses a unix socket as input and output, so that Ope
|
|||||||
|
|
||||||
```
|
```
|
||||||
# build daemon mode core stack for POSIX
|
# build daemon mode core stack for POSIX
|
||||||
make -f src/posix/Makefile-posix DAEMON=1
|
./script/cmake-build posix -DOT_DAEMON=ON
|
||||||
# Daemon with simulation
|
# Daemon with simulation
|
||||||
./output/posix/bin/ot-daemon 'spinel+hdlc+forkpty://output/simulation/bin/ot-rcp?forkpty-arg=1'
|
./build/posix/src/posix/ot-daemon 'spinel+hdlc+forkpty://build/simulation/examples/apps/ncp/ot-rcp?forkpty-arg=1'
|
||||||
# Daemon with real device
|
# Daemon with real device
|
||||||
./output/posix/bin/ot-daemon 'spinel+hdlc+uart:///dev/ttyACM0?uart-baudrate=115200'
|
./build/posix/src/posix/ot-daemon 'spinel+hdlc+uart:///dev/ttyACM0?uart-baudrate=115200'
|
||||||
# Built-in controller
|
# Built-in controller
|
||||||
./output/posix/bin/ot-ctl
|
./build/posix/src/posix/ot-ctl
|
||||||
```
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user