Apache Mynewt OS
   HOME

TheInfoList



OR:

Apache Mynewt is a modular
real-time operating system A real-time operating system (RTOS) is an operating system (OS) for real-time computing applications that processes data and events that have critically defined time constraints. A RTOS is distinct from a time-sharing operating system, such as Unix ...
for connected
Internet of things Internet of things (IoT) describes devices with sensors, processing ability, software and other technologies that connect and exchange data with other devices and systems over the Internet or other communication networks. The IoT encompasse ...
(IoT) devices that must operate for long times under power, memory, and storage constraints. It is
free and open-source software Free and open-source software (FOSS) is software available under a license that grants users the right to use, modify, and distribute the software modified or not to everyone free of charge. FOSS is an inclusive umbrella term encompassing free ...
incubating under the
Apache Software Foundation The Apache Software Foundation ( ; ASF) is an American nonprofit corporation (classified as a 501(c)(3) organization in the United States) to support a number of open-source software projects. The ASF was formed from a group of developers of the ...
, with
source code In computing, source code, or simply code or source, is a plain text computer program written in a programming language. A programmer writes the human readable source code to control the behavior of a computer. Since a computer, at base, only ...
distributed under the Apache License 2.0, a permissive license that is conducive to commercial adoption of
open-source software Open-source software (OSS) is Software, computer software that is released under a Open-source license, license in which the copyright holder grants users the rights to use, study, change, and Software distribution, distribute the software an ...
.


Overview

Apache Mynewt is a real-time operating system with a rich set of
libraries A library is a collection of Book, books, and possibly other Document, materials and Media (communication), media, that is accessible for use by its members and members of allied institutions. Libraries provide physical (hard copies) or electron ...
intended to make prototyping, deploying, and managing 32-bit
microcontroller A microcontroller (MC, uC, or μC) or microcontroller unit (MCU) is a small computer on a single integrated circuit. A microcontroller contains one or more CPUs (processor cores) along with memory and programmable input/output peripherals. Pro ...
based IoT devices easy. It is highly composable, to allow building
embedded system An embedded system is a specialized computer system—a combination of a computer processor, computer memory, and input/output peripheral devices—that has a dedicated function within a larger mechanical or electronic system. It is e ...
applications (e.g., locks, medical devices, industrial IoT) across different types of microcontrollers. The name ''Mynewt'' is wordplay on the English word ''
minute A minute is a unit of time defined as equal to 60 seconds. It is not a unit in the International System of Units (SI), but is accepted for use with SI. The SI symbol for minutes is min (without a dot). The prime symbol is also sometimes used i ...
'', meaning very small: the kernel is only 6 KB in size. The OS is designed for connectivity, and comes with a full implementation of the
Bluetooth low energy Bluetooth Low Energy (Bluetooth LE, colloquially BLE, formerly marketed as Bluetooth Smart) is a wireless personal area network technology designed and marketed by the Bluetooth Special Interest Group (Bluetooth SIG) aimed at novel applications ...
4.2 stack. With the addition of BLE (supporting all Bluetooth 4.2 compliant security features except privacy) and various utilities such as the default file system, console, shell, logs, stats, etc., the image size is approximately 96 KB for the Nordic nRF51822 Bluetooth SoC. This size metric excludes the
boot loader A bootloader, also spelled as boot loader or called bootstrap loader, is a computer program that is responsible for booting a computer and booting an operating system. If it also provides an interactive menu with multiple boot choices then it's o ...
image.


Core features

The core operating system supports: /sup> * Preemptive multithreading * Tickless priority based
scheduling A schedule (, ) or a timetable, as a basic time-management tool, consists of a list of times at which possible tasks, events, or actions are intended to take place, or of a sequence of events in the chronological order in which such things ...
* Programmable
timers A timer or countdown timer is a type of clock that starts from a specified time duration and stops upon reaching 00:00. It can also usually be stopped manually before the whole duration has elapsed. An example of a simple timer is an hourglass ...
* System time * Semaphores *
Mutex In computer science, a lock or mutex (from mutual exclusion) is a synchronization primitive that prevents state from being modified or accessed by multiple threads of execution at once. Locks enforce mutual exclusion concurrency control policies, ...
es * Event queues *
Memory management Memory management (also dynamic memory management, dynamic storage allocation, or dynamic memory allocation) is a form of Resource management (computing), resource management applied to computer memory. The essential requirement of memory manag ...
(allocation): dynamic (heap) and
pool Pool may refer to: Bodies of water * Swimming pool, usually an artificial structure containing a large body of water intended for swimming * Reflecting pool, a shallow pool designed to reflect a structure and its surroundings * Tide pool, a roc ...
* Multi-stage software
watchdog timer A watchdog timer (WDT, or simply a ''watchdog''), sometimes called a ''computer operating properly timer'' (''COP timer''), is an electronic or software timer that is used to detect and recover from computer malfunctions. Watchdog timers are wide ...
* Memory or
data buffer In computer science, a data buffer (or just buffer) is a region of memory used to store data temporarily while it is being moved from one place to another. Typically, the data is stored in a buffer as it is retrieved from an input device (such as ...
s, to hold packet data as it moves up and down the networking
protocol stack The protocol stack or network stack is an implementation of a computer networking protocol suite or protocol family. Some of these terms are used interchangeably but strictly speaking, the ''suite'' is the definition of the communication protoc ...
Other features and utilities include: *
Hardware abstraction Hardware abstractions are sets of routines in software that provide programs with access to hardware resources through programming interfaces. The programming interface allows all devices in a particular class ''C'' of hardware devices to be acc ...
layer with support for
CPU time CPU time (or process time) is the amount of time that a central processing unit (CPU) was used for processing instructions of a computer program or operating system. CPU time is measured in clock ticks or seconds. Sometimes it is useful to con ...
,
analog-to-digital converter In electronics, an analog-to-digital converter (ADC, A/D, or A-to-D) is a system that converts an analog signal, such as a sound picked up by a microphone or light entering a digital camera, into a Digital signal (signal processing), digi ...
(ADC),
digital-to-analog converter In electronics, a digital-to-analog converter (DAC, D/A, D2A, or D-to-A) is a system that converts a digital signal into an analog signal. An analog-to-digital converter (ADC) performs the reverse function. DACs are commonly used in musi ...
(DAC),
general-purpose input/output A general-purpose input/output (GPIO) is an uncommitted digital signal pin on an integrated circuit or electronic circuit (e.g. MCUs/ MPUs) board that can be used as an input or output, or both, and is controllable by software. GPIOs have no p ...
(GPIO), Inter-Integrated Circuit ( I2C),
pulse-width modulation Pulse-width modulation (PWM), also known as pulse-duration modulation (PDM) or pulse-length modulation (PLM), is any method of representing a signal as a rectangular wave with a varying duty cycle (and for some methods also a varying peri ...
(PWM),
serial port A serial port is a serial communication Interface (computing), interface through which information transfers in or out sequentially one bit at a time. This is in contrast to a parallel port, which communicates multiple bits simultaneously in Pa ...
,
Serial Peripheral Interface Bus Serial Peripheral Interface (SPI) is a de facto standard (with many #Variations, variants) for Comparison of synchronous and asynchronous signalling, synchronous serial communication, used primarily in embedded systems for short-distance wired c ...
(SPI),
universal asynchronous receiver/transmitter A universal asynchronous receiver-transmitter (UART ) is a peripheral device for asynchronous serial communication in which the data format and transmission speeds are configurable. It sends data bits one by one, from the least significant to t ...
(UART). * Newtron flash file system (nffs) with minimal RAM usage and reliability features * File system abstraction to allow client code to choose alternate file systems * Console access and shell package * Secure
boot loader A bootloader, also spelled as boot loader or called bootstrap loader, is a computer program that is responsible for booting a computer and booting an operating system. If it also provides an interactive menu with multiple boot choices then it's o ...
and
image organizer An image or picture is a visual representation. An image can be two-dimensional, such as a drawing, painting, or photograph, or three-dimensional, such as a carving or sculpture. Images may be displayed through other media, including a proje ...
(manager) that includes image integrity verification using
SHA-256 SHA-2 (Secure Hash Algorithm 2) is a set of cryptographic hash functions designed by the United States National Security Agency (NSA) and first published in 2001. They are built using the Merkle–Damgård construction, from a one-way compressi ...
and optional digital signature verification of images before running them * Test utilities to build
regression testing Regression testing (rarely, ''non-regression testing'') is re-running functional and non-functional tests to ensure that previously developed and tested software still performs as expected after a change. If not, that would be called a '' regr ...
* Statistics and logs for all major packages * JavaScript Object Notation (
JSON JSON (JavaScript Object Notation, pronounced or ) is an open standard file format and electronic data interchange, data interchange format that uses Human-readable medium and data, human-readable text to store and transmit data objects consi ...
) encoder and decoder libraries * Lua interpreter


Bluetooth low energy

The first network stack available in Mynewt is Bluetooth low energy and is called NimBLE. It complies with Bluetooth Core Specification 4.2. NimBLE includes both the host and controller components. Access to the controller source code makes the BLE performance highly configurable. For example, the BLE throughput can be adjusted by changing the connection intervals, data packet size, packet queue size etc. A use case requiring a large number of concurrent connections can similarly be configured, provided there is adequate RAM allocated. Example applications that demonstrate how to use available services are included in the package.


Supported boards

The
operating system An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs. Time-sharing operating systems scheduler (computing), schedule tasks for ...
is designed for
cross-platform Within computing, cross-platform software (also called multi-platform software, platform-agnostic software, or platform-independent software) is computer software that is designed to work in several Computing platform, computing platforms. Some ...
use in
embedded system An embedded system is a specialized computer system—a combination of a computer processor, computer memory, and input/output peripheral devices—that has a dedicated function within a larger mechanical or electronic system. It is e ...
s (devices) and microcontrollers. It includes board support packages for the following, : * nRF52 DK from Nordic Semiconductor (Cortex-M4) * RuuviTag Sensor beacon platform (Nordic nRF52832 based) * nRF51 DK from Nordic Semiconductor (Cortex-M0) * VBLUno51 from VNG IoT Lab (Nordic nRF51822 SoC based) * VBLUno52 from VNG IoT Lab (Nordic nRF52832 SoC based, Cortex-M4) * BLE Nano from RedBear (Nordic nRF51822 SoC based) * BLE Nano2 and Blend2 from RedBear (Nordic nRF52832 SoC based) * BMD-300-EVAL-ES from Rigado (Cortex-M4) * BMD-200 from Rigado (Cortex-M0) * Adafruit Feather nRF52 Pro * STM32F4DISCOVERY from ST Micro (Cortex-M4) * STM32-E407 from Olimex (Cortex-M4) *
Arduino Arduino () is an Italian open-source hardware and open-source software, software company, project, and user community that designs and manufactures single-board microcontrollers and microcontroller kits for building digital devices. Its hardwar ...
Zero (Cortex-M0) * Arduino Zero Pro (Cortex-M0) * Arduino M0 Pro (Cortex-M0) * Arduino MKR1000 (Cortex-M0) * Arduino Primo NRF52 (Cortex-M4) * NUCLEO-F401RE (Cortex-M4) * NUCLEO-F767ZI (Cortex-M7) * Discovery kit for STM32F7 Series (Cortex-M7) * FRDM-K64F from NXP (Cortex-M4) * BBC micro:bit (Nordic nrf51822; Cortex-M0) * SiFive HiFive1 (RISC-V Instruction Set Architecture) * NINA-B1 BLE module from u-blox (Cortex-M4) * 6LoWPAN clicker from MikroElectronika (PIC32MX470 microcontroller) * chipKIT Wi-FIRE (PIC32MZ microcontroller) * Creator Ci40 module (dual MIPS interAptiv CPU) * EE-02 board with Semtech Sx1276 chip from Telenor (Cortex-M4) * DA1469x Pro DK from Dialog Semiconductor (Cortex-M33)


Package management

The project includes the Newt Tool which is a
command-line interface A command-line interface (CLI) is a means of interacting with software via command (computing), commands each formatted as a line of text. Command-line interfaces emerged in the mid-1960s, on computer terminals, as an interactive and more user ...
(CLI) based smart source
package manager A package manager or package management system is a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer in a consistent manner. A package manager deals wi ...
system for embedded systems development. Also, it allows composing builds with specified packages and compiler options, generating images and their digital signatures, and finally downloading and debugging the firmware on different targets.


See also

*
Embedded operating system An embedded operating system (EOS) is an operating system designed specifically for embedded computer systems. These systems aim to enhance functionality and reliability to perform dedicated tasks. When the multitasking method employed allows ...
*
Comparison of real-time operating systems This is a list of real-time operating systems (RTOSs). This is an operating system in which the time taken to process an input stimulus is less than the time lapsed until the next input stimulus of the same type. References External links ...


References


External links

* {{Apache Software Foundation Embedded operating systems Free software operating systems Internet of things Real-time operating systems Free software programmed in C Free software programmed in Go Software using the Apache license