George Djabarov / Mbed OS mbed-os-example-mesh-minimal
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?

UserRevisionLine numberNew 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