Name | Date | Size | #Lines | LOC | ||
---|---|---|---|---|---|---|
.. | - | - | ||||
platform/ | 11-Mar-2024 | - | 11,987 | 7,541 | ||
CMakeLists.txt | D | 11-Mar-2024 | 3.2 KiB | 92 | 79 | |
Makefile-posix | D | 11-Mar-2024 | 10.1 KiB | 368 | 300 | |
Makefile.am | D | 11-Mar-2024 | 7.9 KiB | 170 | 112 | |
README.md | D | 11-Mar-2024 | 4.8 KiB | 172 | 117 | |
cli.cmake | D | 11-Mar-2024 | 2.1 KiB | 62 | 53 | |
cli_readline.cpp | D | 11-Mar-2024 | 3.7 KiB | 128 | 78 | |
cli_stdio.cpp | D | 11-Mar-2024 | 3.3 KiB | 107 | 60 | |
client.cpp | D | 11-Mar-2024 | 11.3 KiB | 439 | 325 | |
daemon.cmake | D | 11-Mar-2024 | 2.4 KiB | 76 | 65 | |
main.c | D | 11-Mar-2024 | 12.7 KiB | 437 | 301 |
README.md
1# OpenThread POSIX app 2 3OpenThread supports running its core on POSIX and transmits radio frames through a radio transceiver. 4 5Currently most platforms in [examples/platforms](../../examples/platforms) support transceiver mode. 6 7The figure below shows the architecture of OpenThread running in transceiver mode. 8 9``` 10+-------------------------+ 11| MLE TMF UDP IP | 12| MeshForwarder 6LoWPAN | 13| _ _ _ _ _ _ _ _ _ _ _ _ | spinel +------------------+ 14| OpenThread Core | <----------------> | OpenThread Radio | 15+-------------------------+ UART|SPI +------------------+ 16 POSIX Chip 17``` 18 19## Build POSIX CLI 20 21```sh 22./script/cmake-build posix 23``` 24 25If built successfully, the binary should be found at: `build/posix/src/posix/ot-cli`. 26 27## Transceivers on different platforms 28 29### Simulation 30 31OpenThread provides an implemenation on the simulation platform which enables running a simulated transceiver on the host. 32 33#### Build 34 35```sh 36# Only build RCP so that it goes faster 37./script/cmake-build simulation -DOT_APP_CLI=OFF -DOT_APP_NCP=OFF -DOT_FTD=OFF -DOT_MTD=OFF 38``` 39 40#### Run 41 42**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). 43 44```sh 45./build/posix/src/posix/ot-cli 'spinel+hdlc+forkpty://build/simulation/examples/apps/ncp/ot-rcp?forkpty-arg=1' 46``` 47 48### Nordic Semiconductor nRF52840 49 50The nRF example platform driver can be found in the [ot-nrf528xx](https://github.com/openthread/ot-nrf528xx) repo. 51 52#### Build 53 54To build and program the device with RCP application, complete the following steps: 55 561. Clone the OpenThread nRF528xx platform repository into the current directory: 57 58 ```sh 59 git clone --recursive https://github.com/openthread/ot-nrf528xx.git 60 ``` 61 622. Enter the `ot-nrf528xx` directory: 63 64 ```sh 65 cd ot-nrf528xx 66 ``` 67 683. Install the OpenThread dependencies: 69 70 ```sh 71 ./script/bootstrap 72 ``` 73 744. Build the RCP example for the hardware platform and the transport of your choice: 75 76 a. nRF52840 Dongle (USB transport) 77 78 ```sh 79 rm -rf build 80 script/build nrf52840 USB_trans -DOT_BOOTLOADER=USB -DOT_THREAD_VERSION=1.2 81 ``` 82 83 b. For nRF52840 Development Kit 84 85 ```sh 86 rm -rf build 87 script/build nrf52840 UART_trans -DOT_THREAD_VERSION=1.2 88 ``` 89 90 This creates an RCP image at `build/bin/ot-rcp`. 91 925. Depending on the hardware platform, complete the following steps to program the device: 93 94 a. nRF52840 Dongle (USB transport) 95 96 ```sh 97 # Install nRF Util: 98 python3 -m pip install -U nrfutil 99 100 # Generate the RCP firmware package: 101 nrfutil pkg generate --hw-version 52 --sd-req=0x00 \ 102 --application build/bin/ot-rcp.hex --application-version 1 build/bin/ot-rcp.zip 103 ``` 104 105 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. 106 107 ```sh 108 # Install the RCP firmware package onto the dongle 109 nrfutil dfu usb-serial -pkg build/bin/ot-rcp.zip -p /dev/ttyACM0 110 ``` 111 112 b. nRF52840 Development Kit 113 114 ```sh 115 # Program the image using the nrfjprog utility. 116 nrfjprog -f nrf52 --chiperase --program build/bin/ot-rcp.hex --reset 117 ``` 118 119 Disable the Mass Storage feature on the device, so that it does not interfere with the core RCP functionalities: 120 121 ```sh 122 JLinkExe -device NRF52840_XXAA -if SWD -speed 4000 -autoconnect 1 123 J-Link>MSDDisable 124 Probe configured successfully. 125 J-Link>exit 126 ``` 127 128 Power-cycle the device to apply the changes. 129 130#### Run 131 132```sh 133./build/posix/src/posix/ot-cli 'spinel+hdlc+uart:///dev/ttyACM0?uart-baudrate=115200' 134``` 135 136### CC2538 137 138#### Build 139 140``` 141./script/cmake-build cc2538 -DOT_APP_CLI=OFF -DOT_APP_NCP=OFF -DOT_FTD=OFF -DOT_MTD=OFF 142``` 143 144#### Flash 145 146```sh 147arm-none-eabi-objcopy -O ihex build/cc2538/examples/apps/ncp/ot-rcp ot-rcp.bin 148# see https://github.com/JelmerT/cc2538-bsl 149python cc2538-bsl/cc2538-bsl.py -b 460800 -e -w -v -p /dev/ttyUSB0 ot-rcp.bin 150``` 151 152#### Run 153 154```sh 155./build/posix/src/posix/ot-cli 'spinel+hdlc+uart:///dev/ttyUSB0?uart-baudrate=115200' 156``` 157 158## Daemon Mode 159 160OpenThread Posix Daemon mode uses a unix socket as input and output, so that OpenThread core can run as a service. And a client can communicate with it by connecting to the socket. The protocol is OpenThread CLI. 161 162``` 163# build daemon mode core stack for POSIX 164./script/cmake-build posix -DOT_DAEMON=ON 165# Daemon with simulation 166./build/posix/src/posix/ot-daemon 'spinel+hdlc+forkpty://build/simulation/examples/apps/ncp/ot-rcp?forkpty-arg=1' 167# Daemon with real device 168./build/posix/src/posix/ot-daemon 'spinel+hdlc+uart:///dev/ttyACM0?uart-baudrate=115200' 169# Built-in controller 170./build/posix/src/posix/ot-ctl 171``` 172