| .. title:: Mynewt Documentation |
| |
| Introduction |
| =========================== |
| |
| .. toctree:: |
| :hidden: |
| :titlesonly: |
| |
| self |
| get_started/index |
| concepts |
| tutorials/tutorials |
| external_links |
| os/os_user_guide |
| network/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! |