Apache Mynewt OS
Developer | Community |
---|---|
Written in |
C (Mynewt OS) Go language(Newt tool) |
Working state | pre-GA |
Source model | Open source |
Latest release | 0.8.0 / May 5, 2016 |
Platforms | ARM Cortex-M0, ARM Cortex-M3, ARM Cortex-M4 |
License | Apache License 2.0 |
Official website | mynewt.incubator.apache.org |
Apache Mynewt OS
Apache Mynewt OS is a real-time, modular operating system for connected IoT[1] devices that need to operate for long periods of time under power, memory, and storage constraints. It is an open-source project incubating under the Apache Software Foundation.[2] The source code is distributed under the Apache License 2.0, a permissive license that is conducive to commercial adoption of open-source software.[3]
Overview
Apache Mynewt is a real time operating system with a rich set of libraries intended to make prototyping, deploying, and managing 32-bit microcontroller based IoT devices easy.[4] It is highly composable, allowing the user to build embedded system applications (e.g. locks or medical devices or industrial IoT applications) across different types of microcontrollers. True to its name, the kernel of the OS is 6KB in size.
The OS is designed with connectivity in mind, and comes with a full implementation of Bluetooth Low Energy 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 bootloader image.
Core OS Features
The core Apache Mynewt OS supports:[3]
- Preemptive multithreading
- Priority based scheduling
- Programmable timers
- System time
- Semaphores
- Mutexes
- Event queues
- Memory heap and memory pool allocation
- Multi-stage software watchdog
- Memory buffers to hold packet data as it moves up and down the networking stack
Additional features and utilities of the operating system include:
- Hardware Abstraction Layer with support for CPU Time, ADC, DAC, GPIO, I2C, PWM, Serial, SPI, UART.
- Newtron Flash File System (nffs) for minimal RAM usage and reliability
- File system abstraction to allow client code to choose alternate file systems
- Console access and shell package
- Secure bootloader and image manager that includes the option to verify digital signatures of images before running them
- Test utilities to build regression tests
- Statistics and logs for all the major packages
- JSON encoder and decoder libraries
- Lua interpreter
Bluetooth Low Energy
The first network stack available in Apache Mynewt is Bluetooth Low Energy[5] 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 is designed for applications on embedded devices and is microcontroller architecture agnostic. Currently, it includes board support packages for the following:
- nRF52832 Bluetooth SoC from Nordic Semiconductor
- nRF51822/nRF51422 Bluetooth SoC from Nordic Semiconductor
- STM32F3DISCOVERY with STM32F3xx series Cortex-M4 from ST
- STM32-E407 for STM32F407ZGT6 Cortex M4 from ST
- Arduino Zero and Zero Pro
- Arduino M0 Pro with ATSAMD21G18 Cortex M0
- Arduino 101 (Bluetooth controller only)
- Arduino Primo (Bluetooth controller and host)
Package Management
The project includes the Newt Tool which is a CLI-based smart source package management system for embedded systems development. Additionally, it allows the user to compose builds with specified packages and compiler options, generate images and their digital signatures, and finally download and debug the firmware on different targets.
See also
External links
References
- ↑ "Arduino and Runtime Collaborate to Introduce Apache Mynewt (incubating) to Arduino Ecosystem". globenewswire.com. Retrieved 2016-05-24.
- ↑ "Mynewt Incubation Status - Apache Incubator". incubator.apache.org. Retrieved 2016-05-24.
- ↑ "Apache Mynewt RTOS Addresses IoT Power, Memory, Storage Constraints". www.infoq.com. Retrieved 2016-06-28.
- ↑ "Open RTOS Targets Net of Things". www.eetimes.com. Retrieved 2016-05-24.
- ↑ "Apache Mynewt finds a home on Arduino Srl's latest SBCs". www.linuxtoday.com. Retrieved 2016-05-24.