Open beriberikix opened 4 years ago
Integration of Whitefield in Renode will be terrific. Currently, Whitefield does not emulate device archs. I had plans to do it for MSP430 in ways similar to Cooja, but Renode is revolutionary in its design.
I have a few questions:
I will try renode with cc2538 in the near future and check how well it works.
Currently, Whitefield supports 802.15.4 interface and integrates well with native mode Contiki/RIOT/Contiki-NG. OpenThread support is not finished. There is a demo-mode Cytoscape env to visualize the network at runtime.
For Whitefield, my plans for 2020 is:
I brought up the idea to @mgielda in the OSS+ELC conference slack - perhaps he can connect you with someone from the team who might be able to answer your questions!
Great you like Renode and think integration would be a good idea! Adding @PiotrZierhoffer here to elaborate on technical details
This sounds like a really good idea. At the moment Renode is able to simulate wireless network on a basic level, with configurable signal range and random packet loss, but our focus is mainly on simulating full SoCs and not the communication medium.
To answer your questions: 1 In Renode you can create an environment of one or multiple nodes, possibly connected together over different types of wired and wireless connections. Our goal is to enable running exactly the same software you're able to run on hardware. Apart from having internal connections between nodes, you can connect them to your host machine in different ways - via pseudoterminal, TAP interface and others.
The framework itself runs on Linux, macOS and Windows, with Linux having the best support for host-to-guest connections (which I mention as it's probably something that could be used for integration with Whitefield).
If I understand your question correctly, yes. Renode can simulate the whole SoCs, with all the peripherals. We model them on a behavioral, register level, so that the software perceives our models as real devices. Having said that, we usually focus on peripherals that are interesting for us in use cases we have, mocking or ignoring the ones that are not crucial. You can look at https://github.com/renode/renode/tree/master/platforms/cpus to get a broad idea of what platforms and what peripherals in them we support.
Right now we don't do energy consumption, but it would be possible to estimate it by analyzing interactions with specific peripherals etc. People are asking about these kind of estimations, so maybe in future we'll go that path.
If you have any more questions regarding our modelling, integrations or time flow, please let me know.
CC2538 is definitely a good place to start. We have a 3 node sample setup you can run by calling s @scripts/multi-node/cc2538/rpl-udp.resc
in Renode's CLI.
If you open this file you'll find some comments explaining how did we set it up.
Thank you @PiotrZierhoffer for the detailed description. This clarifies things for me.
One Q:
rpl-udp.resc, file uses the binary https://dl.antmicro.com/projects/renode/udp-server.elf-s_173732-a2aefb896d521a8fdc2a052cac1933c68cc39bf5
... I assume that this binary was created using Contiki (ng?), without any modifications to their platforms/drivers code. If this is true, then I can simply substitute my Contiki bins (made for target CC2538dk) in that place? Just confirming. Thanks
That's correct. I believe it was built from https://github.com/contiki-ng/contiki-ng/tree/develop/examples/rpl-udp (there are Renode scripts in there, although they might be a bit outdated, haven't checked them in a while).
In general yes, your own binary should work. This being said, as Contiki is improved over time, it can use some registers we did not implement at a time we were working at this demo.
https://renode.io/ is a device simulation & testing framework that is getting quite popular. Currently it doesn't provide network simulation as part of the project. Would it make sense for whitefield to integrate with Renode?