From da2f84db19c68dc0859e0469ffeb3990fdd8656a Mon Sep 17 00:00:00 2001 From: Piotr Zierhoffer Date: Wed, 1 Nov 2017 21:01:06 +0100 Subject: [PATCH 1/3] Add sample Renode scripts for rpl-udp example This sample allows to run two connected TI CC23538DK nodes, connected via radio, in the Renode Framework. The emulation loads the compiled binaries for client and server nodes. It also fetches a precompiled bootloader. --- examples/rpl-udp/cc2538-node.resc | 30 +++++++++++++++++++++ examples/rpl-udp/rpl-udp.resc | 45 +++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 examples/rpl-udp/cc2538-node.resc create mode 100644 examples/rpl-udp/rpl-udp.resc diff --git a/examples/rpl-udp/cc2538-node.resc b/examples/rpl-udp/cc2538-node.resc new file mode 100644 index 000000000..55a043852 --- /dev/null +++ b/examples/rpl-udp/cc2538-node.resc @@ -0,0 +1,30 @@ +mach create $name +using sysbus +machine LoadPlatformDescription @platforms/cpus/cc2538.repl +machine SetClockSource sysbus.cpu +machine SetSyncDomainFromEmulation $domain +connector Connect radio wireless + +machine PyDevFromFile @scripts/pydev/rolling-bit.py 0x400D2004 0x4 True "sysctrl" + +$id = `next_value 1` + +macro reset +""" + #set node address. 0x00 0x12 0x4B is TI OUI + sysbus WriteByte 0x00280028 $id + sysbus WriteByte 0x0028002C 0x00 + sysbus WriteByte 0x00280030 0xAB + sysbus WriteByte 0x00280034 0x89 + sysbus WriteByte 0x00280038 0x00 + sysbus WriteByte 0x0028003C 0x4B + sysbus WriteByte 0x00280040 0x12 + sysbus WriteByte 0x00280044 0x00 + + sysbus LoadBinary @http://antmicro.com/projects/renode/cc2538_rom_dump.bin-s_524288-0c196cdc21b5397f82e0ff42b206d1cc4b6d7522 0x0 + sysbus LoadELF $bin + + cpu VectorTableOffset 0x200000 +""" + +runMacro $reset diff --git a/examples/rpl-udp/rpl-udp.resc b/examples/rpl-udp/rpl-udp.resc new file mode 100644 index 000000000..828610549 --- /dev/null +++ b/examples/rpl-udp/rpl-udp.resc @@ -0,0 +1,45 @@ +:name: cc2538 range medium 2 nodes + +###################################################################### +# +# Sample script creating 1 server node and 1 client node using a +# range-based medium function - transmission is possible if nodes are +# in range. Nodes are positioned in a 3D space (x,y,z), +# at a distance of 10 (units) from each other (on the X axis). +# +# Differences in SyncUnit values in machines represent the differences +# in their relative speed. This prevents the machines from +# synchronizing in 100%, which is crucial for Contiki network stack +# stability. +# +###################################################################### + +path add $CWD +emulation CreateWirelessMedium "wireless" +$domain = `emulation AddSyncDomain` +wireless SetSyncDomainFromEmulation $domain + +# The radio is using a range-based medium (with the `Range` set to `11`) +# If not set, the default SimpleMediumFunction will be used (where range is not relevant) +wireless SetRangeWirelessFunction 11 + +######################### UDP SERVER - begin ######################### +$bin=@udp-server.cc2538dk +$name="server" +i $ORIGIN/cc2538-node.resc +wireless SetPosition radio 0 0 0 +machine SyncUnit 100 +showAnalyzer sysbus.uart0 +mach clear +########################## UDP SERVER - end ########################## + +######################### UDP CLIENT - begin ######################### +$bin=@udp-client.cc2538dk +$name="client" + +i $ORIGIN/cc2538-node.resc +wireless SetPosition radio 10 0 0 +machine SyncUnit 110 +showAnalyzer sysbus.uart0 +mach clear +########################## UDP CLIENT - end ########################## From 6a70bbe013678d828171a10b146c2211ea45d533 Mon Sep 17 00:00:00 2001 From: Piotr Zierhoffer Date: Wed, 1 Nov 2017 21:02:21 +0100 Subject: [PATCH 2/3] Add renode target in rpl-udp Makefile To run Renode with the rpl-udp demo, run the following command: make renode TARGET=cc2538dk SCRIPT=rpl-udp --- examples/rpl-udp/Makefile | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/examples/rpl-udp/Makefile b/examples/rpl-udp/Makefile index e03221806..e779b1680 100644 --- a/examples/rpl-udp/Makefile +++ b/examples/rpl-udp/Makefile @@ -1,4 +1,19 @@ all: udp-client udp-server +.PHONY: renode +renode: all +ifneq ($(TARGET),cc2538dk) + $(error Only the cc2538dk TARGET is supported for Renode demo scripts) +endif +ifndef SCRIPT + $(warning SCRIPT not defined! Using "rpl-udp.resc" as default) + renode rpl-udp.resc +else +ifeq ($(wildcard $(SCRIPT)),) + $(error SCRIPT "$(SCRIPT)" does not exist!) +endif + renode $(SCRIPT) +endif + CONTIKI=../.. include $(CONTIKI)/Makefile.include From 2e687fe389d80c023587a59e5e5597f4fa5c65b4 Mon Sep 17 00:00:00 2001 From: Piotr Zierhoffer Date: Wed, 1 Nov 2017 21:05:58 +0100 Subject: [PATCH 3/3] Update readme of rpl-udp example to mention Renode --- examples/rpl-udp/README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/examples/rpl-udp/README.md b/examples/rpl-udp/README.md index 79ae86840..a4123553a 100644 --- a/examples/rpl-udp/README.md +++ b/examples/rpl-udp/README.md @@ -8,3 +8,9 @@ When receiving a request, The server sends a response with the same counter back to the originator. The simulation files show example networks, for sky motes and for cooja motes. + +For this example a "renode" make target is available, to run a two node +emulation in the Renode framework. For further instructions on installing and +using Renode please refer to [Contiki-NG wiki][1]. + +[1]: https://github.com/contiki-ng/contiki-ng/wiki/Tutorial:-Running-Contiki%E2%80%90NG-in-Renode