RIOT: For the Real-‐Time Internet of Things Team 7 : Michael Warrick, Ethan McGee Internet of Things My teddy bear is connected to the internet. Internet of Things The Internet of Things (IoT) is the interconnecEon of uniquely idenEfiable embedded compuEng devices within the exisEng Internet infrastructure It comprises a variety of fields, domain, applicaEons and protocols Expected to usher in a huge degree of automaEon across nearly every discipline imaginable Examples Environmental Monitoring Electric Clams in Ocean to monitor Clam PopulaEon Intelligent River Project Household Washer / Dryer Monitoring Thermostats / Fire Detectors Health Pace Maker Monitoring Health Blueprints RIOT: Real-‐Time Internet of Things One OS to Rule Them All, to Find Them, One OS to Bring Them, and in the Cloud Bind Them Why RIOT? Scenario: Airport IoT Requirments Hardware Memory and Processing Power Pla3orm Support Autonomy Power Efficiency Reliability Networking Stack Programmability Language Support A Comparison Features MarkeEng Time!!!! Hardware Support Somewhat Limited Range Airfy Beacon Arduino Due Arduino Mega 2560 Atmel samr21-‐Xplained Pro f4vi HiKoB FOX mbed NXP LPC1768 MSB-‐IoT Nordic nrf51822 (DevKit) OpenMote Spark-‐Core STM32F4DISCOVERY STM32F3DISCOVERY STM32F0DISCOVERY ScaferWeb MSB-‐A2 ScaferWeb MSB-‐430H TelosB Texas Instruments cc2538 Developer Kit Texas Instruments EZ430-‐Chronos UDOO Board (Cortex-‐M3 part) WSN 430 (v1.3b and v1.4) yunjia-‐nrf51822 ZolerEa Z1 Sensors -‐ Radio Transceivers -‐ Environmental Sensors: Humidity and Temperature Sensor, Pressure Sensor, Alcohol Gas Sensor -‐ Bafery Gas Gauge -‐ AcceleraEon Sensors: Tri-‐axial Sensor, Compass and Accelerometer -‐ Gyroscopes: Three-‐Axis Digital Gyroscope -‐ Ultra Sonic Range Finders -‐ Light: RGB LED, Light Sensor -‐ Servo Motor Reliable By Inheritance & Design OS derived from an FeuerWare (used by most embedded devices in rescue scenarios) Kernel is kept extremely small MulEthreading Mutexes Inter-‐Process CommunicaEon Device drivers cannot run in kernel Must run in thread Cannot crash kernel MulE-‐Threading Full Support Does not rely on explicit yields (unlike TinyOS) Threads can be switched out of context (unlike ConEki) Networking Support Network Stacks Other Features Wiselib Support Algorithm library designed for embedded devices Rou?ng, clustering, security, ?me sync, localiza?on MulEplajorm RIOT Con?ki Shawn, etc JSON Support Security Support– (ie SHA 256, 3DES, RC5) C++ 11 Support Awesome Stuff!! Futures / Promises Extremely popular in the JavaScript world Helps to make handling return values from threads easier h#p://en.cppreference.com/w/cpp/thread/future Tuples Easier to return mulEple values from a single funcEon std::tuple<bool, int> someFuncEon(int x, int y); yes, you could just use a struct NaEve Mode NaEve Mode Runs on Mac or Linux Provides simple tesEng and experimentaEon InstallaEon (Ubuntu Linux) gcc-‐mulElib bridge-‐uEls (tuntap needed for mac, preinstalled on ubuntu) Makefile templates provided Specify target hardware/modules Bloom Filters Bloom Filter An extremely fast data structure that allows you to test for inclusion within a set ProbabilisEc data structure Extremely fast comes at a price Bloom filters can tell you if something is not in the set Bloom filters can tell you if something might be in the set h#p://billmill.org/bloomfilter-‐tutorial/ Shell Shell Provides basic shell access Not a full shell – specific commands available Runs on serial port/uart Commands: addr reboot route ImplementaEon And you thought the stuff on Bloom Filters was bad... Modularity h#ps://github.com/RIOT-‐OS/RIOT FireKernel Real Eme support Scheduler Scheduler Uses a pre-‐empEve Eming scheduler A Eme-‐slice scheduler is not needed because there is no need to maintain the appearance of a responsive GUI Reduces interrupt load on system Main idea Priority based scheduling Every task gets a unique priority Tasks run unEl compleEon unless someone with higher priority comes along RIOT's Scheduler Tasks with same priority are possible Must cooperaEvely share Eme 32 possible prioriEes PrioriEes on same level are kept in linked list Switches done in almost constant Eme Blocking ObservaEons If a high priority task does not finish in Eme, it would not have finished in Eme even on a single-‐threaded system All processing Eme is devoted to it Allowed to run to compleEon If a lower priority task does not finish in Eme, probably doesn't have the right priority Increased priority means more processing Eme Won't be interrupted Energy Efficiency Idle Task It is a special task created during the OS boot Does not end but has lowest priority Used to help achieve ulEmate power efficiency Only task is to determine which low-‐power mode the OS can enter Can only be exited by hardware interrupt Tickless Timer Most kernels: a repeated Emer interval set (e.g. 1 microsecond) Generates and interrupt System wakes to update data structure, compare Tickless: No Emer is kept by the kernel Timer Architecture provided to applicaEons Mapped to hardware MulEple registers used Interrupts Overview Most systems have interrupts bypass OS because the OS can't handle interrupts RIOT is different Interrupt made via OS API call Allows for befer context switching Easier return to original context Can be wrifen using ISR notaEon used with other systems, or using RIOT's API ISR in RIOT is a wrapper around it's API Diagram Latency Needs to be as small as possible In RIOT, obviously higher because OS is involved However sEll extremely low 50 clock cycles or 700 nanoseconds Mutexes Mutexes Implemented as a Stack (-‐ish) When a mutex is encountered Push self onto stack unless top of stack has higher priority Then use random access to find the first entry with a lower priority than you Enter blocked mode Issue context switch When criEcal region is done Pick first thread off top of stack Inter-‐Process CommunicaEon IPC Synchronous message passing Send thread blocks unEl a thread receives Similar to mutex implementaEon Examples Yes, we are actually going to present something pracEcal for change . QuesEons / Comments? Whew... bet you're glad that's over!
© Copyright 2024