The friendly Operating System for the Internet of Things TI 3

advertisement
The friendly Operating System
for the Internet of Things
TI 3 im WS 2013/2014
Oliver Hahm
TI 3: Operating Systems and Computer Networks / RIOT
1.1
An Operating System for what?
• The vision of IoT:
•
„EveryTHING is
connected.“
Application scenarios:
•
•
•
•
•
•
Smart Metering
Building Automation
Smart City
Smart Grid
Structural health
Logistics
TI 3: Operating Systems and Computer Networks / RIOT
• Every day devices like
fridges, coffee machines
or watches need to
communicate - with
each other or to hosts in
the Internet
1.2
Challenges in the IoT
• Heterogeneous hardware
• Ranging from 8bit microcontrollers to
quite powerful smartphones or routers
• Various communication interfaces
(mostly, but not limited to wireless
networks)
•
•
•
•
•
Slow CPU, often no FPU
Little memory, often no MMU
Limited energy resources
Robustness and self-organization
Real-Time requirements
TI 3: Operating Systems and Computer Networks / RIOT
1.3
Operating Systems for WSN and
Real-Time Operating Systems
• Typical Real-Time
Operating Systems:
• FreeRTOS
• QNX
• RTLinux
• Not designed for
energy-efficiency or
constrained
networks
TI 3: Operating Systems and Computer Networks / RIOT
• Traditional operating
systems for WSN:
• Contiki
• TinyOS
• Concepts:
• Event-driven design
• Single-threaded
• Specialized
programming
language
1.4
Hello World in TinyOS
///////////
#include <stdio.h>
#include <stdlib.h>
module HelloworldM {
provides {
interface Hello;
}
the hello interface: Hello.nc:
///////////
interface Hello{
command void sayhello();
}
///////////
}
implementation {
command void Hello.sayhello()
{
printf("hello world!");
}
}
TI 3: Operating Systems and Computer Networks / RIOT
1.5
Hello World in Contiki
#include "contiki.h"
#include <stdio.h> /* For printf() */
/*------------------------------------------------------------------*/
PROCESS(hello_world_process, "Hello world process");
AUTOSTART_PROCESSES(&hello_world_process);
/*------------------------------------------------------------------*/
PROCESS_THREAD(hello_world_process, ev, data)
{
PROCESS_BEGIN();
printf("Hello, world\n");
PROCESS_END();
}
/*------------------------------------------------------------------*/
TI 3: Operating Systems and Computer Networks / RIOT
1.6
Hello World in RIOT
#include <stdio.h>
int main(void)
{
printf("Hello World!\n");
return 0;
}
TI 3: Operating Systems and Computer Networks / RIOT
1.7
RIOT: the friendly OS
•
•
•
•
•
•
•
Microkernel (for robustness)
Modular structure to deal with varying requirements
Tickless scheduler
Deterministic kernel behaviour
Low latency interrupt handling
POSIX like API
Native port for testing and
debugging
TI 3: Operating Systems and Computer Networks / RIOT
1.8
RIOT structure
TI 3: Operating Systems and Computer Networks / RIOT
1.9
RIOT: hardware support
• CPUs:
• ARM7
• NXP LPC2387
• Freescale MC1322
• ARM Cortex
• STM32f103
(Cortex M3)
• STM32f407
(Cortex M4)
• NXP LPC1768
• MSP430
• MSP430x16x
• CC430
TI 3: Operating Systems and Computer Networks / C Crashkurs
• Boards:
• FUB Hardware
• MSB-A2
• PTTU
• AVSExtrem
• MSB-430(H)
• TelosB
• Redbee Econotag
• WSN430 (Senslab)
• TI eZ430-Chronos
(Watch)
• AgileFox (FIT testbed)
• More to come, e.g. mbed
hardware
1.10
RIOT: the native port
• Run RIOT as is on your Linux computer
• Emulates a network using virtual network devices
• Allows for enhanced debugging with gdb, valgrind,
wireshark etc.
TI 3: Operating Systems and Computer Networks / RIOT
1.11
RIOT: Microkernel
• minimalistic kernel
---------------------------------------------------------------------------Language
files
blank
comment
code
---------------------------------------------------------------------------C
12
350
281
1017
C Header
22
202
719
377
---------------------------------------------------------------------------SUM:
34
552
1000
1394
----------------------------------------------------------------------------
• Kernel functions:
•
•
•
•
Scheduler
IPC
Mutexes
Timer
• Modules and drivers communicate over IPC
• Deterministic runtime of all kernel functions
• Optimized context switching
TI 3: Operating Systems and Computer Networks / RIOT
1.12
RIOT: scheduler
• Tickless, i.e. no periodic timer event

more complex to implement, but most energy-efficient
• Run-to-complete, i.e. scheduler does not distribute
•
equally to all threads
Priority based
 Priorities have to be chosen carefully to fulfill real-time
requirements
TI 3: Operating Systems and Computer Networks / C Crashkurs
1.13
RIOT: memory management
• Every thread has its own
•
•
stack
The stack also contains the
tcb
There‘s no memory
protection
=> a stack overflow can
destroy another stack
TI 3: Operating Systems and Computer Networks / RIOT
1.14
RIOT as a tool for research
•
•
•
•
Network protocols like 6LoWPAN, RPL, CCN etc.
Distributed operating systems
Various testbeds and virtual networks with desvirt
Measurement of energy consumption
TI 3: Operating Systems and Computer Networks / RIOT
1.15
Join the RIOT!
• About 35 forks on Github
• https://github.com/RIOT-OS/RIOT
• Start your own fork and contribute to RIOT!
• About 50 people on the developer mailing list
• devel@riot-os.org
• users@riot-os.org
• Developers from all around the world
• ~ 200 followers on Twitter
TI 3: Operating Systems and Computer Networks / RIOT
1.16
Download