The Apache Software Foundation has recently released version 0.9 Apache Mynewt open source real-time operating systems for micro-controllers under… an Apache 2.0 license. The RTOS works on STMicro STM32 Cortex-M4, and Arduino Zero / M0 Cortex-M0 boards, but they’ve also implemented the first open source Bluetooth Low Energy stack for MCUs, starting with support for Nordic Semi nRF52 Cortex-M4 and nRF51 Cortex-M1 evaluation boards, and acting as a replacement for Nordic SoftDevice Bluetooth Smart / LE solution.
The operating system competes with ARM mbed, the Zephyr Project, and RIoT, but the foundation claims it is the only one that’s both community driven and permissively licensed (Apache 2.0) project in the embedded space.
The OS is modular and can be configured with a Go-like build and package management tool with components such as secure boot loader, flash file system and TLV storage mechanism, rich logging infrastructure, circular buffering schemes, and Bluetooth 4.2 Low Energy. WiFi, Thread, and Bluetooth 5 are also part of the roadmap, and support for Javascript and Python is currently being worked on.
You can find more information and/or get started with the project on Apache Mynewt microsite.
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress
Great summary. Also of note is that Arduino.org announced the use of Apache Mynewt for the upcoming Primo and Otto boards.
https://globenewswire.com/news-release/2016/05/20/842021/0/en/Arduino-and-Runtime-Collaborate-to-Introduce-Apache-Mynewt-incubating-to-Arduino-Ecosystem.html
It’s distributed as a docker image + wrapper script. I really like this approach for dealing with the usual mess of cross-compiling toolchains and libraries that have to be installed for something like this. It’s so easy to install and use, and easy to update too.
(Probably a pain for Windows users right now, but I’m pleased projects are increasingly willing to stop letting that concern hold the rest of the world back from improving. And MS is working to adopt windows to the new-world-order of software development with their ubuntu+bash layer and docker partnerships, so perhaps it is or will soon be a pleasant experience on Windows too.)
Actually, it turns out they have a very poor implementation of the docker+wrapper setup. The provided wrapper is too simplistic: it doesn’t pass along the current user (so everything generated ends up owned by root), it chmods everything 0600 (readable only by root), and it doesn’t search for the project root, instead it just mounts the PWD (so you must always change directories back to the top-level of the project before running any ‘newt’ commands).
It’s actually incredibly painful to use. I assume everyone on the project uses local, in-development installs of the tools, but I don’t think anyone has actually tried running the docker install, as it’s basically unusable.
I’d recommend they look at yotta’s wrapper script as an example of a better implementation.
Thanks for your comments, John S. Your remark about mounting PWD is accurate, and we can improve the script to search for the project head. The newt command is intended to be run only within a particular project but yes, having to type ../newt could get tedious. Will take a look at yotta’s wrapper script as suggested.
However, not everything generated ends up owned by root. I use Docker instances on Mac, and a couple others use it on Windows. The container container itself maybe owned by root but all the project and repo files generated in the project directory hierarchy are owned by the current user. Other than the path reference while calling newt, the usage is pretty transparent. It takes a tad bit longer when using Docker (e.g. building targets) but we have tried to keep the usage experience the same. I urge you to give it another try and create a new project and see. Thanks!
@John S.
@John S.
Just tried the Docker option on Linux – and the downloaded files are indeed owned by root. We will fix this. Thanks for the alert!
@John S.
The updated wrapper script fixes this and makes it simple to use. Give it a try now.
https://mynewt.apache.org/latest/os/get_started/docker/
Apache MyNewt added support for Bluetooth 5 -> http://www.einnews.com/pr_news/373703277/runtime-announces-bluetooth-5-support-for-apache-mynewt