Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
README.md@7:0540282551e7, 2016-08-04 (annotated)
- Committer:
- mbed_official
- Date:
- Thu Aug 04 16:00:28 2016 +0100
- Revision:
- 7:0540282551e7
- Parent:
- 6:2e2035344aa6
- Child:
- 8:f02c15c5e51e
Merge pull request #16 from ARMmbed/multi_plat_doc_update
Adding doc section for multiple platforms
Commit copied from https://github.com/ARMmbed/mbed-os-example-mesh-minimal
Who changed what in which revision?
| User | Revision | Line number | New contents of line | 
|---|---|---|---|
| Seppo Takalo | 0:bde1843b9885 | 1 | # Example mesh application for mbed OS | 
| Seppo Takalo | 0:bde1843b9885 | 2 | |
| Seppo Takalo | 0:bde1843b9885 | 3 | This application is the simplest one to utilize our mesh networking stack. It just joins your device to the unsecure *6LoWPAN-ND* network. | 
| Seppo Takalo | 0:bde1843b9885 | 4 | |
| Seppo Takalo | 0:bde1843b9885 | 5 | ## Setup | 
| Seppo Takalo | 0:bde1843b9885 | 6 | |
| Seppo Takalo | 0:bde1843b9885 | 7 | ### Download the application | 
| Seppo Takalo | 0:bde1843b9885 | 8 | |
| Seppo Takalo | 0:bde1843b9885 | 9 | ``` | 
| Seppo Takalo | 0:bde1843b9885 | 10 | mbed import mbed-os-example-mesh-minimal | 
| Seppo Takalo | 0:bde1843b9885 | 11 | cd mbed-os-example-mesh-minimal | 
| Seppo Takalo | 0:bde1843b9885 | 12 | ``` | 
| Seppo Takalo | 0:bde1843b9885 | 13 | |
| Seppo Takalo | 0:bde1843b9885 | 14 | ### Change the channel settings (optional) | 
| Seppo Takalo | 0:bde1843b9885 | 15 | |
| Seppo Takalo | 0:bde1843b9885 | 16 | See the file `mbed_app.json` for an example of defining an IEEE 802.15.4 channel to use. | 
| Seppo Takalo | 0:bde1843b9885 | 17 | |
| Seppo Takalo | 0:bde1843b9885 | 18 | ### Compile the application | 
| Seppo Takalo | 0:bde1843b9885 | 19 | |
| Seppo Takalo | 0:bde1843b9885 | 20 | ``` | 
| Seppo Takalo | 0:bde1843b9885 | 21 | mbed compile -m K64F -t GCC_ARM | 
| Seppo Takalo | 0:bde1843b9885 | 22 | ``` | 
| Seppo Takalo | 0:bde1843b9885 | 23 | |
| Seppo Takalo | 0:bde1843b9885 | 24 | A binary is generated at the end of the build process. | 
| Seppo Takalo | 0:bde1843b9885 | 25 | |
| Seppo Takalo | 0:bde1843b9885 | 26 | ### Connect the RF shield to the board | 
| Seppo Takalo | 0:bde1843b9885 | 27 | |
| Seppo Takalo | 0:bde1843b9885 | 28 | By default, we are using the Atmel AT86RF233 and it can be purchased [here](https://firefly-iot.com/product/firefly-arduino-shield-2-4ghz/). Place the shield on top of your board and power it up. | 
| Seppo Takalo | 0:bde1843b9885 | 29 | |
| Seppo Takalo | 0:bde1843b9885 | 30 | ### Program the target | 
| Seppo Takalo | 0:bde1843b9885 | 31 | |
| Seppo Takalo | 0:bde1843b9885 | 32 | Drag and drop the binary to the target to program the application. | 
| Seppo Takalo | 0:bde1843b9885 | 33 | |
| Seppo Takalo | 0:bde1843b9885 | 34 | ### Update the firmware of the border router | 
| Seppo Takalo | 0:bde1843b9885 | 35 | |
| Seppo Takalo | 0:bde1843b9885 | 36 | You can read the instructions on updating the firmware of your K64F working as 6LoWPAN border router [here](https://github.com/ARMmbed/mbed-os-example-client#mbed-gateway). | 
| Seppo Takalo | 0:bde1843b9885 | 37 | |
| Seppo Takalo | 0:bde1843b9885 | 38 | Please do not forget to connect the Ethernet cable between the border router and your home/office router. Then power up the board. | 
| Seppo Takalo | 0:bde1843b9885 | 39 | |
| Seppo Takalo | 0:bde1843b9885 | 40 | ## Testing | 
| Seppo Takalo | 0:bde1843b9885 | 41 | |
| Seppo Takalo | 0:bde1843b9885 | 42 | As soon as both the border router and the target are up and running you can verify the correct behaviour. Open a serial console and see the IP address obtained by the device. | 
| Seppo Takalo | 0:bde1843b9885 | 43 | |
| Seppo Takalo | 0:bde1843b9885 | 44 | <span class="notes">**Note:** This application uses a baud rate of 115200.</span> | 
| Seppo Takalo | 0:bde1843b9885 | 45 | |
| Seppo Takalo | 0:bde1843b9885 | 46 | ``` | 
| Seppo Takalo | 0:bde1843b9885 | 47 | connected. IP = 2001:db8:a0b:12f0::1 | 
| Seppo Takalo | 0:bde1843b9885 | 48 | ``` | 
| Seppo Takalo | 0:bde1843b9885 | 49 | |
| Seppo Takalo | 0:bde1843b9885 | 50 | You can use this IP address to `ping` from your PC and verify that the connection is working correctly. | 
| Seppo Takalo | 0:bde1843b9885 | 51 | |
| Seppo Takalo | 0:bde1843b9885 | 52 | ### Changing the radio driver (optional) | 
| Seppo Takalo | 0:bde1843b9885 | 53 | |
| Seppo Takalo | 0:bde1843b9885 | 54 | To run a 6LoWPAN-ND network, you need a working RF driver for Nanostack. This example uses the Atmel AT86RF233 by default. | 
| Seppo Takalo | 0:bde1843b9885 | 55 | |
| Seppo Takalo | 0:bde1843b9885 | 56 | To change the RF driver: | 
| Seppo Takalo | 0:bde1843b9885 | 57 | |
| Seppo Takalo | 0:bde1843b9885 | 58 | 1. Uninstall the Atmel RF driver. | 
| Seppo Takalo | 0:bde1843b9885 | 59 | |
| Seppo Takalo | 0:bde1843b9885 | 60 | mbed remove atmel-rf-driver | 
| Seppo Takalo | 0:bde1843b9885 | 61 | |
| Seppo Takalo | 0:bde1843b9885 | 62 | 2. Install the new driver. (For example, for the FRDM-CR20A radio shield based on the MCR20A device.) | 
| Seppo Takalo | 0:bde1843b9885 | 63 | |
| Seppo Takalo | 0:bde1843b9885 | 64 | mbed add mcr20a-rf-driver | 
| Seppo Takalo | 0:bde1843b9885 | 65 | |
| Seppo Takalo | 0:bde1843b9885 | 66 | 3. Recompile your application. | 
| Seppo Takalo | 0:bde1843b9885 | 67 | |
| Seppo Takalo | 0:bde1843b9885 | 68 | mbed compile -m K64F -t GCC_ARM | 
| Seppo Takalo | 0:bde1843b9885 | 69 | |
| mbed_official | 7:0540282551e7 | 70 | ## Important Note (Multi-platform support) | 
| mbed_official | 7:0540282551e7 | 71 | |
| mbed_official | 7:0540282551e7 | 72 | mbed-OS provides the developer with total control of the device. However some defaults are always loaded if the user does not provide proper information regarding them. This becomes evident when a user switches among platforms. On some platforms a particular pin might be reserved for a particular functionality (depending upon the MCU) which thus cannot be used generally. A good example of such phenomenon is the use of atmel-rf-sheild with [Nucleo F401RE platform](https://developer.mbed.org/platforms/ST-Nucleo-F401RE/). | 
| mbed_official | 7:0540282551e7 | 73 | If user do not provide particular pin configuration for the atmel-rf-driver (sometimes a desired behaviour) the driver falls back to a default Arduino form factor, see [atmel-rf-driver pin assignment](https://github.com/ARMmbed/atmel-rf-driver/blob/master/source/driverAtmelRFInterface.h). This fallback mechanism works on most of the platforms, however in the above mentioned case, there is a catch. Fall back mechanism sets the GPIO pin D5 as a designated Reset pin for SPI (SPI_RST) in the radio driver. Whereas this particular pin is assigned by the MCU to debugging in Nucleo F401RE. This will result in hard fault ofcourse. The solution is to map the conflicting pins to a free GPIO pin. For example, the user can add *"atmel-rf.spi-rst": "D4"* to his/her mbed_app.json file. This will set the SPI_RST pin to D4 of the GPIO. | 
| mbed_official | 7:0540282551e7 | 74 | |
| mbed_official | 7:0540282551e7 | 75 | ```json | 
| mbed_official | 7:0540282551e7 | 76 | { | 
| mbed_official | 7:0540282551e7 | 77 | "target_overrides": { | 
| mbed_official | 7:0540282551e7 | 78 | "*": { | 
| mbed_official | 7:0540282551e7 | 79 | "target.features_add": ["IPV6", "COMMON_PAL"], | 
| mbed_official | 7:0540282551e7 | 80 | "atmel-rf.spi-rst": "D4" | 
| mbed_official | 7:0540282551e7 | 81 | } | 
| mbed_official | 7:0540282551e7 | 82 | } | 
| mbed_official | 7:0540282551e7 | 83 | } | 
| mbed_official | 7:0540282551e7 | 84 | ``` | 
| mbed_official | 7:0540282551e7 | 85 | |
| mbed_official | 7:0540282551e7 | 86 | Desired work flow in such situations (if it may arise) should be: | 
| mbed_official | 7:0540282551e7 | 87 | |
| mbed_official | 7:0540282551e7 | 88 | 1. Checking the platform pinmap from [mbed Platforms](https://developer.mbed.org/platforms/). | 
| mbed_official | 7:0540282551e7 | 89 | 2. Making sure that the desired GPIO pin is free by looking at the data sheet of the particular MCU. Most of the data sheets are available on [mbed Platforms](https://developer.mbed.org/platforms/). | 
| mbed_official | 7:0540282551e7 | 90 | 3. If necessary, change the pin or pins by using the mbed -OS config mechanism. You can get more informations about the configuration system in the [documentation](https://github.com/ARMmbed/mbed-os/blob/master/docs/config_system.md) | 
| mbed_official | 6:2e2035344aa6 | 91 | |
| mbed_official | 6:2e2035344aa6 | 92 | ## Known Issues | 
| mbed_official | 6:2e2035344aa6 | 93 | |
| mbed_official | 6:2e2035344aa6 | 94 | If you are using Thread as the network interface, once your device joins the Thread Border Router, i.e., you can see the IP address assigned to your device, and you hard reset the client device using reset button, the client device will not be able to join the network again and you will see a warning: | 
| mbed_official | 6:2e2035344aa6 | 95 | |
| mbed_official | 6:2e2035344aa6 | 96 | ``` | 
| mbed_official | 6:2e2035344aa6 | 97 | [WARN][mleS]: dropping packet because mle frame counter is not higher | 
| mbed_official | 6:2e2035344aa6 | 98 | ``` | 
| mbed_official | 6:2e2035344aa6 | 99 | |
| mbed_official | 6:2e2035344aa6 | 100 | Border router will start dropping packets because of MLE frame counter mismatch. For more information about MLE frame counter feature see the [MLE-05 RFC](https://tools.ietf.org/id/draft-kelsey-intarea-mesh-link-establishment-05.html#rfc.section.7.6). | 
| mbed_official | 6:2e2035344aa6 | 101 | After 240 seconds, the default link timeout triggers the Border router to unregister the lost end device and the BR drops all the counters for that particular device. | 
| mbed_official | 6:2e2035344aa6 | 102 | Now your should should be able to join the network again. | 
| mbed_official | 6:2e2035344aa6 | 103 |