Tag Archives: operating system

RIOTing with the Internet of Things

RIOT is an open-source operating system (OS) designed to power the rapidly evolving Internet of Things (IoT).

Licensed as LGPL, RIOT was initially developed by FU Berlin, INRIA and the HAW Hamburg. 

Indeed, the origins of RIOT can actually be traced back to FeuerWare, an operating system for fire crews and their wireless sensor networks.

The operating system — which is based on a microkernel architecture — supports both C and C++, as well as full multi-threading and real-time capabilities. RIOT provides utilities like cryptographic libraries, data structures, or a shell, different network stacks, and support for various microcontrollers, radio drivers, sensors, and configurations for entire platforms.

RIOT_network_architecture_dark_updated

The RIOT runs on both 16-bit and 32-bit hardware, with a native port allowing RIOT to run as a Linux or MacOS process. This helps facilitate the use of standard development and debugging tools such as the GNU Compiler Collection (GCC), GNU Debugger, Valgrind and Wireshark. RIOT runs on several platforms including embedded devices as well as common PCs, and supports multiple drivers, which offers out-of-the-box usage. The hardware dependent code is reduced to a minimum and abstracted from the kernel itself.

Among the architectures RIOT supports are ARM Cortex-M0, -M3 and -M4, as well as the ARM7. Subsequently, the IoT operating system is compatible with a number of boards like the Arduino Due (SAM3X8E), the Atmel ATmega2560 and the Nordic nRF51822 (ATSAM3U2C). RIOT also provides multiple network stacks, including IPv6, 6LoWPAN and standard protocols such as RPL, UDP, TCP and CoAP.

ArduinoDue_Front

Simply put, RIOT is free software, meaning Makers and engineers can redistribute and modify the OS. Software developed by the RIOT community is available under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 2 (LGPLv2).

Interested in learning more? As a community project, you can find RIOT’s source code on GitHub as well as download its latest release here.

Open source IoT with Contiki

Contiki – an open source OS for the IoT – is developed by a world-wide team of devs with contributions from a number of prominent companies such as Atmel, Cisco, ETH, Redwire LLC, SAP and Thingsquare.

Image Credit: Wikipedia

Essentially, Contiki provides powerful low-power Internet communication, supporting fully standard IPv6 and IPv4, along with recent low-power wireless standards: 6lowpan, RPL and CoAP.

With Contiki’s ContikiMAC and sleepy routers, even wireless routers can be battery-operated. 

Contiki facilities intuitive, rapid development, as apps are written in standard C. Using the Cooja simulator, Contiki networks can be emulated before being burned into hardware, while Instant Contiki provides an entire development environment in a single download.

Recently, the open source Contiki was featured by Wired’s Klint Finley, who describes the versatile OS as the go-to operating system for hackers, academics and companies building network-connected devices like sensors, trackers and web-based automation systems.

“Developers love it because it’s lightweight it’s free, and it’s mature. It provides a foundation for developers and entrepreneurs eager to bring us all the internet-connected gadgets the internet of things promises, without having to develop the underlying operating system those gadgets will need,” he writes.

Image Credit: Wikipedia

“Perhaps the biggest thing Contiki has going for it is that it’s small. Really small. While Linux requires one megabyte of RAM, Contiki needs just a few kilobytes to run. Its inventor, Adam Dunkels, has managed to fit an entire operating system, including a graphical user interface, networking software, and a web browser into less than 30 kilobytes of space.”

Unsurprisingly, consumer technology companies are beginning to embrace Contiki as well. To help support the burgeoning commercial usage of Contiki, OS founder Adam Dunkels ultimately left his job at the Swedish Institute of Computer Science and founded Thingsquare, a startup focused on providing a cloud-based back-end for Contiki devices.

“The idea is to make it easy for developers to connect their hardware devices with smartphones and the web,” added Finley.

Image Credit: Wikipedia

“Thingsquare manages the servers, and provides all the software necessary to manage a device over the web.”

It should be noted that Thingsquare recently showcased various Internet of Things (IoT) applications at Embedded World 2014 in Nuremberg, Germany.

Indeed, a number of Thingsquare’s demonstrations were powered by Atmel’s recently launched SAM R21 Xplained PRO evaluation board – illustrating the seamless integration of Thingsquare’s software stack with Atmel’s new SAM R21 ultra-low power wireless microcontroller (MCU).

Interested in learning more? You can check out Contiki’s official page here and read about Thingsquare’s use of Atmel tech here.

Atmel ATMegas power this homebrew 16-core computer

A talented Maker by the name of Jack Eisenmann has designed a multi-core homebrew computer using 16 ATMega328P microcontrollers.

“The DUO Mega is a multi-core 8-bit computer featuring a robust operating system. The goals of the system are to be efficient, reliable, easy to use, and open source,” Eisenmann explained in an extensive design breakdown posted on OstraCodfiles.com.

“The concepts of this computer should be expandable with more cores, additional memory and alternative processor models.”

According to Eisenmann, each core consists of a single ATMega microcontroller. More specifically, there are actually two types of core: worker and manager (15 worker cores + 1 manager = 16 total cores).

“Cores all share an 8 bit data bus. This data bus sends commands and information between cores. A worker core may not use the data bus unless permitted by the manager core. Each worker core is addressed by an 8 bit identifier,” he continued.

“When the machine starts up, the manager core poles every identifier to find worker cores. Then the manager loads instructions from flash memory into worker cores. The manager core may then behave as an interface for flash read and write operations.”

Eisenmann also noted that the DUO Mega is equipped with a single pool of shared memory in a 32 KB SRAM chip. Meaning, the manager core is responsible for access to shared memory – while also interfacing with peripheral devices.

On the software side, the OS user interface (UI) is based on a stack of windows, with  the DUO Mega supporting color text graphics and windows with 80 by 6 characters. All programs are written in Megaliter bytecode interpreted by the worker cores.

“Each program will run on at least one worker core. The number of worker cores allocated to a program depends on user preference. When the user opens a program, the operating system will first prompt the user for the number of cores to allocate,” said Eisenmann.

“One window will be dedicated to the operating system. This window is called the manager window, and cannot be closed. The manager window displays program information, a clock, files, directories and other useful information.”

Additional information about the Atmel-powered Duo Mega, including a full spec breakdown, can be found here.