Developers: | Linux Foundation |
Date of the premiere of the system: | 2016/02/18 |
Technology: | Internet of Things of Internet of Things (IoT), OS |
Zephyr is the project within which development of compact real-time operating system (RTOS) is conducted. The product is focused on use in the devices corresponding to the concept Internet of Things (IoT, Internet of Things).
On February 18 Linux Foundation announced the Zephyr joint project. Practices of the project are delivered under the license Apache 2.0. Project participants: Intel NXP Semiconductors/Freescale, Synopsys and UbiquiOS[1].
Submission of the Zephyr (2016) project
For February 18, 2016 the first release of a core of Zephyr Kernel 1.0 and the Zephyr SDK set as a part of which tools and cross compilers of assembly of a core for different hardware platforms are available to loading. A system is adapted for installation on payments on architecture of x86 (Arduino 101, Quark D2000 CRB, Galileo Gen1/Gen2, Minnowboard Max), ARMv7 (Arduino Due, Freescale FRDM-K64F) and ARC (Arduino 101) and for testing in the emulator on the basis of QEMU. As a part of SDK:
- GCC,
- binutils,
- gdb,
- libgcc,
- newlib,
- Python 2.7,
- QEMU,
- GNU Make
- OpenOCD (Open On-Chip Debugger).
The core is expected consumption of the minimum resources (from 8 CBs to 512 CBs OZU, depending on configuration) that allows to use it in the different portable systems, from the simple built-in sensors and chips for clothes, to the smartwatch and wireless gateways for IoT- devices. From means of network and wireless interaction by a core it is supported Bluetooth 4 IPv4 IPv6, IEEE 802.15.4, Bluetooth Low Energy (BLE), 6lowPAN (IPv6 over Low power Wireless Personal Area Networks), CoAP (Constrained Application Protocol), DTLS (Datagram Transport Layer Security). Drivers of input-output are available to ADC, GPIO, I2C and SPI.
Features of a core of Zephyr
- Work in a uniform address space (SASOS, Single Address Space Operating System) - is provided for all processes only one global shared virtual address space. The code, specific to applications, is combined with the core adapted for specific application and forms the monolithic executable file for loading and start on a certain equipment. The code of applications and a core are executed in one general address space.
- Ample opportunities on setup. The system image can join only those opportunities of a core which are demanded for accomplishment application;
- All system resources are defined at a compilation stage that reduces code size and increases performance;
- The minimum error checkings at the runtime that also reduces code size and increases performance. In the form of the connected superstructure for debugging the special debug infrastructure allowing to reveal errors during application programming is offered, creating special test images;
- An extensive set of usual services for development:
- Multithreading on the basis of priorities with the forcing-out and joint push model of management;
- Connection of the interrupt handlers registered both at a compilation stage and at the runtime;
- Means of synchronization of data between flows are binary semaphores, semaphores counters and mutexes;
- Transmission media of data between flows are simple message queues, expanded message queues and byte flows;
- Services for memory distribution - dynamic memory allocation and cleaning for memory blocks of the fixed and dynamic size;
- power management Mechanisms: the tickless mode (instead of the fixed call on the timer, the processor wakes up only in the presence of events) and expanded infrastructure of management of idle time of the processor (idle).
- Development with a careful eye to security. All stages of development are gone by obligatory stages of confirmation of code safety: fuzzing-testing, static analysis, tests for penetration, reviewing of the code, analysis of implementation of backdoors and modeling of threats. Delivery in the form of statically collected executable file limits a vector of the attacks only to compiled code, without an opportunity to load the modules.