Michael Gielda
Antmicro Ltd
1 hour of coding
1 day of testing
physical aspect
limited output, very little memory (especially small 'Things')
debug one device - OK
debug more devices - how to observe the entire system
even simple protocols are hard to debug
physical hardware debugging changes execution, not reproductible
multiple standars
no way to compare
lock-in
with the right tools, of course
not a new concept
Contiki regression testing suite using COOJA+MSPSim
old fashioned, GUI-driven
no support for modern platforms
still, second best thing after sliced bread
standard for Linux development
that's where we started ourselves!
designed for single platforms
main aim is to run Linux - what if you want to run something else as a 'primary citizen'
use C for everything:
a lot of copy pasting code
lack of modern language features
simulate different kind of nodes, good support for Cortex-M
allow for any kind of software, especially various RTOS
multiple nodes in one environment, connected by networks, also host-guest networking
provide extra features through leveraging modern coding techniques
easily model new peripherals (or hack together minimal ones that just work for your use case)
your nodes are extremely complex to simulate
your system is extremely simple
you are battling extremely difficult networking problems
90% of the time this is not the case, at least for a large chunk of your system
you just like challenges
you secretly think this whole IoT thing is just not possible
fast
good for software development
bugs in toolchains
illegal memory accesses
unused code
bugs in protocols
all kinds stupid bugs
detailed tracing
visualisation tools
reverse execution
clone entire setups
traceable, reproducible development
enable large-scale continuous integration
running our own tests in Jenkins - other CI frameworks possible
using Robot framework
available from GitHub
more info and getting started on dedicated website
Docker image available, see our blog note
port of regression testing for Contiki with leaner wireless simulator
integration of lossy medium simulation with Emul8
new tigther integration with Robot
work on packaging, ease of use
device model
board definition
emulation script
network setup description
robot scripts
continuous integration setup
TI, ST, Freescale NXP, SiLabs
non-Cortex-M platforms: Cortex-A. ARM926, LEON, PowerPC, experimental x86 support
model the right systems
produce the right tools
more manuals, tutorials
make people understand such tools are needed
diagnose if it makes sense for you
implement your board models
build continuous integration setup
help adopt new workflow
build custom tools
sensor data input, injected faults
drag and drop design of IoT networks
maps with sensors
...
Questions?