.. title:: Mynewt Documentation

Introduction
===========================

.. toctree::
   :hidden:
   :titlesonly:

   self
   get_started/index
   concepts
   tutorials/tutorials
   os/os_user_guide
   network/docs/index
   newt/index
   newtmgr/index
   mynewt_faq/index
   misc/index

Welcome to Apache Mynewt
~~~~~~~~~~~~~~~~~~~~~~~~

Apache Mynewt is an operating system that makes it easy to develop
applications for microcontroller environments where power and cost are
driving factors. Examples of these devices are connected locks, lights,
and wearables.

Microcontroller environments have a number of characteristics that makes
the operating system requirements for them unique:

-  Low memory footprint: memory on these systems range from 8-16KB (on
   the low end) to 16MB (on the high end).

-  Reduced code size: code often runs out of flash, and total available
   code size ranges from 64-128KB to 16-32MB.

-  Low processing speed: processor speeds vary from 10-12MHz to
   160-200MHz.

-  Low power operation: devices operate in mostly sleeping mode, in
   order to conserve battery power and maximize power usage.

As more and more devices get connected, these interconnected devices
perform complex tasks. To perform these tasks, you need low-level
operational functionality built into the operating system. Typically,
connected devices built with these microcontrollers perform a myriad of
functions:

-  Networking Stacks: Bluetooth Low Energy and Thread

-  Peripherals: PWM to drive motors, ADCs to measure sensor data, and
   RTCs to keep time.

-  Scheduled Processing: actions must happen on a calendared or periodic
   basis.

Apache Mynewt accomplishes all the above easily, by providing a complete
operating system for constrained devices, including:

-  A fully open-source Bluetooth Low Energy stack with both Host and
   Controller implementations.

-  A pre-emptive, multi-tasking Real Time operating system kernel


-  A Hardware Abstraction Layer (HAL) that abstracts the MCU's
   peripheral functions, allowing developers to easily write
   cross-platform code.

Newt
~~~~

In order to provide all this functionality, and operate in an extremely
low resource environment, Mynewt provides a very fine-grained source
package management and build system tool, called *newt*.

You can install *newt* for :doc:`Mac OS <newt/install/newt_mac>`,
:doc:`Linux <newt/install/newt_linux>`, or
:doc:`Windows <newt/install/newt_windows>`.

Newt Manager
~~~~~~~~~~~~

In order to enable a user to communicate with remote instances of Mynewt
OS and query, configure, and operate them, Mynewt provides an
application tool called Newt Manager or *newtmgr*.

You can install *newtmgr* for :doc:`Mac OS <newtmgr/install/install_mac>`,
:doc:`Linux <newtmgr/install/install_linux>`, or
:doc:`Windows <newtmgr/install/install_windows>`.

Build your first Mynewt App with Newt
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

With the introductions out of the way, now is a good time to :doc:`get set up
and started <get_started/index>` with your first Mynewt
application.

Happy Hacking!
