From 1aac14f252232a7029d85a5c2c7c0b0d593d546e Mon Sep 17 00:00:00 2001 From: maralvira Date: Tue, 9 Nov 2010 01:30:01 +0000 Subject: [PATCH] add tutorial explaining how to set up an RPL network of econotags --- cpu/mc1322x/doc/rpl-tutorial.md | 192 ++++++++++++++++++++++++++++++++ 1 file changed, 192 insertions(+) create mode 100644 cpu/mc1322x/doc/rpl-tutorial.md diff --git a/cpu/mc1322x/doc/rpl-tutorial.md b/cpu/mc1322x/doc/rpl-tutorial.md new file mode 100644 index 000000000..6f38db92e --- /dev/null +++ b/cpu/mc1322x/doc/rpl-tutorial.md @@ -0,0 +1,192 @@ +Contiki RPL Quickstart using Econotags +====================================== + +Contiki RPL implements the IETF ROLL working group's RPL: IPv6 Routing +Protocol for Low power and Lossy Networks. This routing standard +enables you to set up a route-over 6LowPAN network. + +This tutorial will show you how to run Contiki's RPL demos on Redwire +Econotags. + +1). Obtain Redwire Econotags, or other mc1322x hardware. +--------------------------------------------------------------- + +See [the mc1322x hardware](http://mc1322x.devl.org/hardware.html) for +an incomplete, but growing list of mc1322x hardware. + +We recommend a few [Econotags](http://www.redwirellc.com/store/node/1) +to get started. In addition to the mc13224v, the Econotag also has the +FT2232H USB dual port controller. One port is connected to UART1 and +all the necessary pins to load, erase, and reset the mc13224v. The +other port is connected to the JTAG pins for run-time debugging. **No +other programming hardware is necessary. Just your computer!** + +2). Get a toolchain, and Contiki source. +---------------------------------------- + +Everything you need is in [Instant Contiki +2.5](http://www.sics.se/contiki/news/contiki-2.5-release-candidate-1-avaliable.html). If +you are going to be working primarily with Contiki then this is the +way to go. + +Instant Contiki contains the +[mc1322x-oe](http://git.devl.org/?p=malvira/mc1322x-oe.git;a=summary) +[[ubuntu]](http://mc1322x.devl.org/ubuntu.html) +[[mac]](http://mc1322x.devl.org/mac.html) toolchain. + +Development of the mc1322x port occurs in a different branch from the +main Contiki CVS repository. The most current mc1322x contiki port can be found here: +[contik-mc1322x.git](http://git.devl.org/?p=malvira/contiki-mc1322x.git) + +3). Build the border-router and rpl-udp +--------------------------------------- + +The RPL demo consists of a "Border router" and at least on other RPL +enabled node. For this tutorial, the border router creates a RPL DAG +and is the ROOT. The other node will be a RPL udp-client. It joins the +RPL network, acts as an RPL router, and sends a UDP datagram to a +hardcoded IPV6 address. This tutorial only handles a two node network, +but can be extended for any number of nodes. + +The general command to make a Contiki binary for the Econotag is: + + make TARGET=redbee-econotag + +To build the border-router: + + cd contiki-2.x/examples/ipv6/rpl-border-router + make TARGET=redbee-econotag + +This will produce the binary image +'border-router_redbee-econotag.bin', which you can load directly on to +an mc1322x and execute. + +To build the udp-client, do: + + cd contiki-2.x/examples/ipv6/udp-client + make TARGET=redbee-econotag + +which will build 'udp-client_redbee-econotag.bin'. + +4). Load the binaries on the the Econotags: +------------------------------------------- + +### a) Run the econotags with randomized MAC addresses (random, but persistent) + +After building border-router_redbee-econotag.bin, you load the code +with: + + mc1322x-load.pl -f border-router_redbee-econotag.bin -t /dev/ttyUSB1 -c 'bbmc -l redbee-econotag reset' + +The econotag will flash itself with a random Redwire MAC address if +you haven't programmed one in: + + address in flash blank, setting to defined IAB with a random extention. + flashing blank address + Rime started with address 00:50:C2:FF:FE:A8:C2:66 + CSMA sicslowmac, channel check rate 100 Hz, radio channel 26 + Tentative link-local IPv6 address + fe80:0000:0000:0000:0250:c2ff:fea8:c266 + Tentative global IPv6 address aaaa:0000:0000:0000:0250:c2ff:fea8:c266 + +This mac address is used to derive it's IPv6 address. In this example, +it's aaaa::0250:c2ff:fea8:c266. + +The border router connects to your computer over a SLIP tunnel formed +by `tunslip6` --- a tool included in Contiki. + +To make tunslip6: + + cd contiki-2.x/tools + make tunslip6 + +You need to run tunslip6 to create this tunnel and SLIP connection: + + tunslip6 -s /dev/ttyUSB1 aaaa::1/64 + +### b) Program the MAC addresses on the Econotag + +To erase the econotag (and the MAC address), first make sure you've +built BBMC: + + cd contiki-2.x/cpu/mc1322x/tool/ftditools + make + +If you have trouble, see the [BBMC +page](http://mc1322x.devl.org/bbmc.html) for details. BBMC controls +the FT2232H over USB through libftdi. It can reset or erase an +mc13224v. To erase: + + bbmc -l redbee-econotag erase + +Then to flash just the MAC address you need to build flasher from +libmc1322x. See: + + http://mc1322x.devl.org/libmc1322x.html + +Then to flash the MAC address you can do: + + mc1322x-load.pl -e -f flasher_redbee-econotag.bin -z -t /dev/ttyUSB1 + -c 'bbmc -l redbee-econotag reset' 0x1e000,0xABC25000,0x010000C0 + ++ -z to indicate you are sending a zero length binary to flasher. ++ -e causes mc1322x-load.pl to exit when it's done, instead of + dropping to a terminal + +The next time you run Contiki you'll get: + + loading rime address from flash. + Rime started with address 00:50:C2:AB:C0:00:00:01 + CSMA sicslowmac, channel check rate 100 Hz, radio channel 26 + Tentative link-local IPv6 address + fe80:0000:0000:0000:0250:c2ab:c000:0001 + Tentative global IPv6 address aaaa:0000:0000:0000:0250:c2ab:c000:0001 + +N.B. for all of the bbmc commands, you'll need to use -i if you have +more than one econotag plugged in. On most systems the indexes are +enumerated backwards from the terminals. E.g. if you have 23 nodes +connected, then /dev/ttyUSB1 will be on ftdi index 22 and the load +command would be: + + mc1322x-load.pl -f foo.bin -t /dev/ttyUSB1 -c 'bbmc -l redbee-econotag -i 22 reset' + +5) Start the udp-client +----------------------- + +Use mc1322x-load.pl to run `udp-client_redbee-econotag.bin` on the +second econotag: + + mc1322x-load.pl -f udp-client_redbee-econotag.bin -t /dev/ttyUSB3 + 'bbmc -l redbee-econotag -i 0' + +6) Check the border router's webpage for status +------------------------------------------------ + +The RPL border-router serves a webpage that displays the known +neighbors and the known routes to all the node on the DAG. In firefox, +you can type in the following to go to a IPv6 address: + + http://[address aaaa:0000:0000:0000:0250:c2ff:fea8:c266] + +#### Neighbors +fe80::250:c2ff:fea8:cbf4 +#### Routes +aaaa::250:c2ff:fea8:cbf4/128 (via fe80::250:c2ff:fea8:cbf4) + +7) Ping6 all the nodes +---------------------- + +After a short time, once the DAG forms to a node, you should see a +route appear on the border-router's status page. You can ping this +node from the computer running 'tunslip6' + + ping6 aaaa::250:c2ff:fea8:cbf4 + +A successful ping shows that both a downward and upward route has +formed. + +8) That's it! +------------- + +Now go mesh and stuff. +