YetiOS

YetiOS is a FreeRTOS-based IoT Operating System for sensor end-devices. It has been developed in B105 Electronic Systems Lab, and is intended to work on next-generation low-power microcontrollers with large computational capabilities. It includes linux-like device drivers, a STDIO interface, a layered network stack and several timing features. In addition, it provides an adaptive core. It allows implementing algorithms to dynamically modify OS operation, in order to improve global OS performance for different environment conditions.

GETTING STARTED

SOURCE CODE

The source code of YetiOS may be accessed in this repository:

https://bitbucket.org/repoB105/yetios

This repository contains all the core files of YetiOS as well as an example of a platform-specific code port.

HARDWARE

The example code provided supports the STM32 NUCLEO-L476 commercial board. In addition, the expansion board X-NUCLEO-IDS01A4 is required. It contains a SPIRIT1 transceiver used to perform sub 1 GHz wireless communications.

DEVELOPMENT ENVIRONMENT

For this hardware platform, the development environment SW4STM32 is used. It is an Eclipse-based environment which provides the required toolchains as well as support for ST-LINK debugger.

APPLICATION DEVELOPMENT FOR YETIOS

To start developing an application, first download the source code. Then, open the SW4STM32 development environment and import the project yetios-nucleo-l476 from the source code folder.

FOLDER STRUCTURE:

  • Core: YetiOS core files common to all platforms
  • Board: YetiOS platform-specific code, including the HAL drivers.
  • HW_resources: drivers and libraries used for several sensors and other hardware resources.
  • Libs: software libraries.
  • Apps: this folder contains the source files of user application processes. App developers should generate all the new code under this folder.

The Apps folder contains several example files that may be used as a guide for developing new applications. To enable a process just set to 1 the flag on top of the file. For example, to use the UDP example the first line must be:

#define USE_UDP_EXAMPLE_PROCESS  1

This example application continuously sends messages from a node (NODE_1) to another one (NODE_2). When the messages arrive to NODE_2 they are printed out using the stdio interface, which in this case is the UART. This serial port (115200, 8N1) may be opened in a computer host when the USB plug is connected to the NUCLEO board in order to communicate with the shell of YetiOS and visualize the printed messages.

For this example, two nodes are required. To select NODE_1 uncomment its define in top of the example file, and comment NODE_2 define. Do the opposite to select the NODE_2.

To test the example, compile the project (Project->Build All) and then Run it using the ST-LINK debugger (Run->Debug As->Ac6 STM32 C/C++ Application).

Finally, it is important to note that YetiOS provides a complete API for developing applications. The functions of this API are located in /Core/system_api.h and /Core/system_net_api.h. In addition, the platform may be configured by changing the parameters in the file: /Board/platform/platform-conf.h

SUPPORT

Contact r.rodriguezz@b105.upm.es for YetiOS support and porting guidelines for other hardware platforms.