1) Added intro page for blinky tutorials and moved common stuff (description, prerequsites) from individual blinky tutorials to the intro page. 2) Added intro page for slinky tutorials and moved common stuff (description, prerequsites) from individual slinky tutorials to the intro page. 3) Renamed project-target-slinky to project-nrf52-slinky and updated link references 4) Removed note in blinky_primo to checkout develop for openocd support.
Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/commit/59a5159c Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/tree/59a5159c Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/diff/59a5159c Branch: refs/heads/develop Commit: 59a5159c5a554e124553b21f51cb9076de99273a Parents: 0fe497b Author: cwanda <[email protected]> Authored: Thu Apr 6 11:21:59 2017 -0700 Committer: cwanda <[email protected]> Committed: Thu Apr 6 15:48:04 2017 -0700 ---------------------------------------------------------------------- docs/os/tutorials/STM32F303.md | 2 +- docs/os/tutorials/arduino_zero.md | 29 +-- docs/os/tutorials/blinky.md | 47 +++++ docs/os/tutorials/blinky_console.md | 6 +- docs/os/tutorials/blinky_primo.md | 47 +---- docs/os/tutorials/nRF52.md | 34 +--- docs/os/tutorials/olimex.md | 30 +-- docs/os/tutorials/project-nrf52-slinky.md | 208 +++++++++++++++++++++ docs/os/tutorials/project-slinky.md | 150 +++------------ docs/os/tutorials/project-stm32-slinky.md | 29 +-- docs/os/tutorials/project-target-slinky.md | 233 ------------------------ docs/os/tutorials/rbnano2.md | 29 +-- mkdocs.yml | 12 +- 13 files changed, 306 insertions(+), 550 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/59a5159c/docs/os/tutorials/STM32F303.md ---------------------------------------------------------------------- diff --git a/docs/os/tutorials/STM32F303.md b/docs/os/tutorials/STM32F303.md index 695af1c..7d9fd91 100644 --- a/docs/os/tutorials/STM32F303.md +++ b/docs/os/tutorials/STM32F303.md @@ -211,7 +211,7 @@ Congratulations! You have built, downloaded, and run your first application usin Want to make your board do something a little more exciting with the LEDs? Then try making the modifications to the Blinky app to make it a [pin-wheel app](pin-wheel-mods.md) and you can light all the LEDs in a pin-wheel fashion. -We have more fun tutorials for you to get your hands dirty. Be bold and try other Blinky-like [tutorials](../tutorials/nRF52.md) or try enabling additional functionality such as [remote comms](project-target-slinky.md) on the current board. +We have more fun tutorials for you to get your hands dirty. Be bold and try other Blinky-like [tutorials](../tutorials/nRF52.md) or try enabling additional functionality such as [remote comms](project-slinky.md) on the current board. If you see anything missing or want to send us feedback, please do so by signing up for appropriate mailing lists on our [Community Page](../../community.md). http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/59a5159c/docs/os/tutorials/arduino_zero.md ---------------------------------------------------------------------- diff --git a/docs/os/tutorials/arduino_zero.md b/docs/os/tutorials/arduino_zero.md index 4acfb2f..dc72b5b 100644 --- a/docs/os/tutorials/arduino_zero.md +++ b/docs/os/tutorials/arduino_zero.md @@ -1,20 +1,11 @@ ## Blinky, your "Hello World!", on Arduino Zero -Learn how to use packages from a default application repository of Mynewt to build your first *Hello World* application (Blinky) on a target board. Once built using the *newt* tool, this application will blink the LED lights on the target board. - -This tutorial describes how to run Mynewt OS on Arduino Zero. Follow these simple steps and your board will be blinking in no time! +This tutorial shows you how to create, build and run the Blinky application on an Arduino Zero board. ### Prerequisites -Ensure that you have met the following prerequisites before continuing with this tutorial: - +* Meet the prerequisites listed in [Project Blinky](/os/tutorials/blinky.md). * Have an Arduino Zero board. Note: There are many flavors of Arduino. Make sure you are using an Arduino Zero. See below for the versions of Arduino Zero that are compatible with this tutorial. -* Have Internet connectivity to fetch remote Mynewt components. -* Have a computer to build a Mynewt application and connect to the board over USB. -* Have a Micro-USB cable to connect the board and the computer. -* Install the Newt tool and toolchains (See [Basic Setup](/os/get_started/get_started.md)). -* Create a project space (directory structure) and populated it with the core code repository (apache-mynewt-core) or know how to as explained in [Creating Your First Project](/os/get_started/project_create). -* Read the Mynewt OS [Concepts](/os/get_started/vocabulary.md) section. This tutorial uses the Arduino Zero Pro board. The tutorial has been tested on the following three Arduino Zero boards - Zero, M0 Pro, and Zero-Pro. @@ -349,18 +340,4 @@ debugger and restart the board. The image you programmed will come up and run o the Arduino on the next boot! <br> - -### Watch the LED Blink - -Congratulations! You have created an Mynewt application running on the -Arduino Zero. The LED right next to the power LED should be blinking. It is toggled -by one task running on the Mynewt OS. - -We have more fun tutorials for you to get your hands dirty. Be bold and try other -Blinky-like [tutorials](../tutorials/nRF52.md) or try enabling additional functionality -such as [remote comms](project-target-slinky.md) on the current board. - -If you see anything missing or want to send us feedback, please do so by signing up for -appropriate mailing lists on our [Community Page](../../community.md). - -Keep on hacking and blinking! +You should see the LED blink! http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/59a5159c/docs/os/tutorials/blinky.md ---------------------------------------------------------------------- diff --git a/docs/os/tutorials/blinky.md b/docs/os/tutorials/blinky.md new file mode 100644 index 0000000..e23e031 --- /dev/null +++ b/docs/os/tutorials/blinky.md @@ -0,0 +1,47 @@ +## Blinky, your "Hello World!" on a Target Board +The set of Blinky tutorials show you how to create, build, and run a "Hello World" application that blinks a LED on the various target boards that Mynewt supports. The tutorials use the same Blinky application from the [Creating Your First Project](/os/get_started/project_create) tutorial. + +### Objective + +Learn how to use packages from a default application repository of Mynewt to build your first *Hello World* application (Blinky) on a target board. Once built using the *newt* tool, this application will blink a LED light on the target board. + +###Available Tutorials +Tutorials are available for the following boards: + +* [Blinky on an Arduino Zero](/os/tutorials/arduino_zero.md) +* [Blinky on an Arduino Primo](/os/tutorials/blinky_primo.md) +* [Blinky on an Olimex](/os/tutorials/olimex.md) +* [Blinky on a nRF52](/os/tutorials/nRF52.md) +* [Blinky on a RedBear Nano 2](/os/tutorials/rbnano2.md) + +We also have a tutorial that shows you how to add [Console and Shell to the Blinky Application](/os/tutorials/blinky_console.md). +<br> +### Prerequisites +Ensure that you meet the following prerequisites before continuing with one of the tutorials. + +* Have Internet connectivity to fetch remote Mynewt components. +* Have a computer to build a Mynewt application and connect to the board over USB. +* Have a Micro-USB cable to connect the board and the computer. +* Install the Newt tool and toolchains (See [Basic Setup](/os/get_started/get_started.md)). +* Install either the Jlink or OpenOCD debugger. +* Create a project space (directory structure) and populate it with the core code repository (apache-mynewt-core) or know how to as explained in [Creating Your First Project](/os/get_started/project_create). +* Read the Mynewt OS [Concepts](/os/get_started/vocabulary.md) section. +<br> +###Overview of Steps +These are the general steps to create, load and run the Blinky application on your board: + +* Create a project. +* Define the bootloader and Blinky application targets for the board. +* Build the bootloader target. +* Build the Blinky application target and create an application image. +* Connect to the board. +* Load to bootloader onto the board. +* Load to Blinky application image onto the board. +* See the LED on your board blink. + +<br> + +After you try the Blinky application on your boards, checkout out other tutorials to enable additional functionality such as [remote comms](project-slinky.md) on the current board. + +If you see anything missing or want to send us feedback, please sign up for +appropriate mailing lists on our [Community Page](../../community.md). http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/59a5159c/docs/os/tutorials/blinky_console.md ---------------------------------------------------------------------- diff --git a/docs/os/tutorials/blinky_console.md b/docs/os/tutorials/blinky_console.md index 6e77963..094e65a 100644 --- a/docs/os/tutorials/blinky_console.md +++ b/docs/os/tutorials/blinky_console.md @@ -1,14 +1,12 @@ ##Enabling The Console and Shell for Blinky -<br> - -This tutorial explains how to add the Console and Shell task to the blinky application so that you can interact with it over a serial line connection. - +This tutorial shows you how to add the Console and Shell to the Blinky application and interact with it over a serial line connection. <br> ### Prerequisites * Work through one of the Blinky Tutorials to create and build a Blinky application for one of the boards. +* Have a [serial setup](/os/get_started/serial_access.md). <br> http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/59a5159c/docs/os/tutorials/blinky_primo.md ---------------------------------------------------------------------- diff --git a/docs/os/tutorials/blinky_primo.md b/docs/os/tutorials/blinky_primo.md index cf769b9..1193938 100644 --- a/docs/os/tutorials/blinky_primo.md +++ b/docs/os/tutorials/blinky_primo.md @@ -1,41 +1,23 @@ ## Blinky, your "Hello World!", on Arduino Primo -<br> - -### Objective - -Learn how to use packages from a default application repository of Mynewt to build your first *Hello World* application (Blinky) on a target board. Once built using the *newt* tool, this application will blink the LED lights on the target board. - -Create a project with a simple app that blinks an LED on the Arduino Primo board. Download the application to the target and watch it blink! +This tutorial shows you how to create, build, and run the Blinky application on an Arduino Primo board. Note that the Mynewt OS will run on the nRF52 chip in the Arduino Primo board. However, the board support package for the Arduino Primo is different from the nRF52 dev kit board support package. - <br> - ### Prerequisites -Ensure that you have met the following prerequisites before continuing with this tutorial: -* Have an Arduino Primo -* Have Internet connectivity to fetch remote Mynewt components. -* Have a computer to build a Mynewt application and connect to the` board over USB. -* Have a Micro-USB cable to connect the board and the computer. -* Install the Newt tool and toolchains (See [Basic Setup](/os/get_started/get_started.md)). -* Create a project space (directory structure) and populated it with the core code repository (apache-mynewt-core) or know how to as explained in [Creating Your First Project](/os/get_started/project_create). -* Read the Mynewt OS [Concepts](/os/get_started/vocabulary.md) section. -* Install a debugger - choose one of the two options below. Option 1 requires additional hardware but very easy to set up. Option 2 is free software but not as simple as Option 1. +* Meet the the prerequisites listed in [Project Blinky](/os/tutorials/blinky.md). +* Have an Arduino Primo board. +* Install a debugger choose one of the two options below: Option 1 requires additional hardware but very easy to set up. <br> - ##### Option 1 - * [Segger J-Link Debug Probe](https://www.segger.com/jlink-debug-probes.html) - any model (this tutorial has been tested with J-Link EDU and J-Link Pro) * [J-Link 9 pin Cortex-M Adapter](https://www.segger.com/jlink-adapters.html#CM_9pin) that allows JTAG, SWD and SWO connections between J-Link and Cortex M based target hardware systems * Install the [Segger JLINK Software and documentation pack](https://www.segger.com/jlink-software.html). - ##### Option 2 - - No additional hardware is required but a version of OpenOCD 0.10.0 that is currently in development needs to be installed. A patch for the nRF52 has been applied to the OpenOCD code in development and a tarball has been made available for download [here](downloads/openocd-wnrf52.tgz). Untar it. From the top of the directory tree ("openocd-code-89bf96ffe6ac66c80407af8383b9d5adc0dc35f4"), build it using the following configuration: +No additional hardware is required but a version of OpenOCD 0.10.0 that is currently in development needs to be installed. A patch for the nRF52 has been applied to the OpenOCD code in development and a tarball has been made available for download [here](downloads/openocd-wnrf52.tgz). Untar it. From the top of the directory tree ("openocd-code-89bf96ffe6ac66c80407af8383b9d5adc0dc35f4"), build it using the following configuration: ``` $./configure --enable-cmsis-dap --enable-openjtag_ftdi --enable-jlink --enable-stlink @@ -50,9 +32,9 @@ Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html ``` + You can now use openocd to upload to Arduino Primo board via the USB port itself. -<br> ### Create a Project Create a new project if you do not have an existing one. You can skip this step and proceed to [create the targets](#create_targets) if you already created a project. @@ -252,20 +234,3 @@ warning: Source file is more recent than executable. (gdb) mon nrf52 mass_erase ``` <br> - - -### Conclusion - -You have created, setup, compiled, loaded, and ran your first mynewt application -for an Arduino Primo board. - -We have more fun tutorials for you to get your hands dirty. Be bold and work on the OS with tutorials on [writing a test suite](unit_test.md) or try enabling additional functionality such as [remote comms](project-target-slinky.md) or [Bluetooth Low Energy](bletiny_project.md) on your current board. - -If you see anything missing or want to send us feedback, please do so by signing up for appropriate mailing lists on our [Community Page](../../community.md). - -Keep on hacking and blinking! - - - - - http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/59a5159c/docs/os/tutorials/nRF52.md ---------------------------------------------------------------------- diff --git a/docs/os/tutorials/nRF52.md b/docs/os/tutorials/nRF52.md index 2b199bb..c62f85e 100644 --- a/docs/os/tutorials/nRF52.md +++ b/docs/os/tutorials/nRF52.md @@ -1,31 +1,17 @@ ## Blinky, your "Hello World!", on nRF52 - +This tutorial shows you how to create, build, and run the Blinky application on the nRF52 board. <br> -### Objective - -Learn how to use packages from a default application repository of Mynewt to build your first *Hello World* application (Blinky) on a target board. Once built using the *newt* tool, this application will blink the LED lights on the target board. - -Create a project with a simple application that blinks an LED on the nRF52 board from Nordic Semiconductors. Download the application to the target and watch it blink! - Note that there are several versions of the nRF52 in the market. The boards tested with this tutorial are listed under "Prerequisites". <br> ### Prerequisites -Ensure that you have met the following prerequisites before continuing with this tutorial: - +* Meet the prerequisites listed in [Project Blinky](/os/tutorials/blinky.md). * Have a nRF52 Development Kit (one of the following) * Dev Kit from Nordic - PCA 10040 * Eval Kit from Rigado - BMD-300-EVAL-ES -* Have Internet connectivity to fetch remote Mynewt components. -* Have a computer to build a Mynewt application and connect to the board over USB. -* Have a Micro-USB cable to connect the board and the computer. -* Install the Newt tool and toolchains (See [Basic Setup](/os/get_started/get_started.md)). -* Install the [Segger JLINK package]( https://www.segger.com/jlink-software.html) to load your project on the board. -* Create a project space (directory structure) and populated it with the core code repository (apache-mynewt-core) or know how to as explained in [Creating Your First Project](/os/get_started/project_create). -* Read the Mynewt OS [Concepts](/os/get_started/vocabulary.md) section. This tutorial uses the Nordic nRF52-DK board. @@ -205,19 +191,3 @@ Erasing done. J-Link>exit $ ``` - - -### Conclusion - -You have created, setup, compiled, loaded, and ran your first mynewt application for an nrf52 board. - -We have more fun tutorials for you to get your hands dirty. Be bold and work on the OS with tutorials on [writing a test suite](unit_test.md) or try enabling additional functionality such as [remote comms](project-target-slinky.md) or [Bluetooth Low Energy](bletiny_project.md) on your current board. - -If you see anything missing or want to send us feedback, please do so by signing up for appropriate mailing lists on our [Community Page](../../community.md). - -Keep on hacking and blinking! - - - - - http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/59a5159c/docs/os/tutorials/olimex.md ---------------------------------------------------------------------- diff --git a/docs/os/tutorials/olimex.md b/docs/os/tutorials/olimex.md index de1b0c2..44e8b92 100644 --- a/docs/os/tutorials/olimex.md +++ b/docs/os/tutorials/olimex.md @@ -1,30 +1,14 @@ ## Blinky, your "Hello World!", on Olimex -### Objective - -Learn how to use packages from a default application repository of Mynewt to build your first *Hello World* application (Blinky) on a target board. Once built using the *newt* tool, this application will blink the LED lights on the target board. Fun stuff! - -This tutorial shows you how to create a blinky application for the Olimex board. It also shows you how to load the application onto the board's flash memory and run the application. - +This tutorial shows you how to create, build, and run the Blinky application on an Olimex STM32-E407 board. <br> - ### Prerequisites -Ensure that you have met the following prerequisites before continuing with this tutorial: +* Meet the prerequisites listed in [Project Blinky](/os/tutorials/blinky.md). * Have a STM32-E407 development board from Olimex. * Have a ARM-USB-TINY-H connector with JTAG interface for debugging ARM microcontrollers (comes with the ribbon cable to hook up to the board) -* Have Internet connectivity to fetch remote Mynewt components. -* Have a computer to build a Mynewt application and connect to the board over USB. * Have a USB A-B type cable to connect the debugger to your computer. -* Have a USB Micro-A cable to connect your computer to the board. -* Install the Newt tool and toolchains (See [Basic Setup](/os/get_started/get_started.md)). -* Create a project space (directory structure) and populated it with the core code repository (apache-mynewt-core) or know how to as explained in [Creating Your First Project](/os/get_started/project_create). -* Read the Mynewt OS [Concepts](/os/get_started/vocabulary.md) section. - - <br> - - ### Create a Project Create a new project if you do not have an existing one. You can skip this step and proceed to [create the targets](#create_targets) if you already created a project. @@ -224,13 +208,3 @@ Let's double check that it is indeed booting from flash and making the LED blink (0x08000020: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff (gdb) monitor flash info 0 ``` - -### Conclusion - -Congratulations! You have now tried out a project on actual hardware. If this is your first time to embedded systems, this must feel like the best hands-on and low-level "Hello World" program ever. - -Good, we have more fun tutorials for you to get your hands dirty. Be bold and try other Blinky-like [tutorials](../tutorials/nRF52.md) or try enabling additional functionality such as [remote comms](project-target-slinky.md) on the current board. - -If you see anything missing or want to send us feedback, please do so by signing up for appropriate mailing lists on our [Community Page](../../community.md). - -Keep on hacking and blinking! http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/59a5159c/docs/os/tutorials/project-nrf52-slinky.md ---------------------------------------------------------------------- diff --git a/docs/os/tutorials/project-nrf52-slinky.md b/docs/os/tutorials/project-nrf52-slinky.md new file mode 100644 index 0000000..dfc4c57 --- /dev/null +++ b/docs/os/tutorials/project-nrf52-slinky.md @@ -0,0 +1,208 @@ +## Project Slinky using the Nordic nRF52 Board +This tutorial shows you how to create, build and run the Slinky application and communicate with newtmgr for a Nordic nRF52 board. + +### Prerequisites +* Meet the prerequisites listed in [Project Slinky](/os/tutorials/project-slinky.md). +* Have a Nordic nRF52-DK board. + +### Create a New Project +Create a new project if you do not have an existing one. You can skip this step and proceed to [create the targets](#create_targets) if you already have a project created or completed the [Sim Slinky](project-slinky.md) tutorial. + +Run the following commands to create a new project. We name the project `slinky`. + +```no-highlight +$ newt new slinky +Downloading project skeleton from apache/incubator-mynewt-blinky... +... +Installing skeleton in slink... +Project slinky successfully created +$ cd slinky +$newt install +apache-mynewt-core +``` + +<br> + +###<a name="create_targets"></a> Create the Targets + +Create two targets for the nRF52-DK board - one for the bootloader and one for the Slinky application. + +Run the following `newt target` commands, from your project directory, to create a bootloader target. We name the target `nrf52_boot`. + +```no-highlight +$ newt target create nrf52_boot +$ newt target set nrf52_boot bsp=@apache-mynewt-core/hw/bsp/nrf52dk +$ newt target set nrf52_boot build_profile=optimized +$ newt target set nrf52_boot app=@apache-mynewt-core/apps/boot +``` +<br> +Run the following `newt target` commands to create a target for the Slinky application. We name the target `nrf52_slinky`. + +```no-highlight +$ newt target create nrf52_slinky +$ newt target set nrf52_slinky bsp=@apache-mynewt-core/hw/bsp/nrf52dk +$ newt target set nrf52_slinky build_profile=debug +$ newt target set nrf52_slinky app=@apache-mynewt-core/apps/slinky +``` + +<br> + +### Build the Targets + +Run the `newt build nrf52_boot` command to build the bootloader: + +```no-highlight +$ newt build nrf52-boot +Building target targets/nrf52_boot +Compiling repos/apache-mynewt-core/boot/bootutil/src/image_ec256.c +Compiling repos/apache-mynewt-core/boot/bootutil/src/image_ec.c +Compiling repos/apache-mynewt-core/boot/bootutil/src/image_rsa.c +Compiling repos/apache-mynewt-core/crypto/mbedtls/src/aes.c +Compiling repos/apache-mynewt-core/boot/bootutil/src/loader.c +Compiling repos/apache-mynewt-core/boot/bootutil/src/image_validate.c +Compiling repos/apache-mynewt-core/boot/bootutil/src/bootutil_misc.c +Compiling repos/apache-mynewt-core/apps/boot/src/boot.c + ... + +Archiving sys_mfg.a +Archiving sys_sysinit.a +Archiving util_mem.a +Linking ~/dev/slinky/bin/targets/nrf52_boot/app/apps/boot/boot.elf +Target successfully built: targets/nrf52_boot +``` +<br> + +Run the `newt build nrf52_slinky` command to build the Slinky application: + +```no-highlight +$newt build nrf52_slinky +Building target targets/nrf52_slinky +Compiling repos/apache-mynewt-core/boot/bootutil/src/image_ec256.c +Compiling repos/apache-mynewt-core/boot/bootutil/src/image_ec.c +Compiling repos/apache-mynewt-core/boot/bootutil/src/image_rsa.c +Compiling repos/apache-mynewt-core/boot/split/src/split.c +Compiling repos/apache-mynewt-core/boot/bootutil/src/loader.c +Compiling repos/apache-mynewt-core/boot/bootutil/src/bootutil_misc.c +Compiling repos/apache-mynewt-core/boot/split/src/split_config.c +Compiling repos/apache-mynewt-core/crypto/mbedtls/src/aesni.c +Compiling repos/apache-mynewt-core/boot/bootutil/src/image_validate.c +Compiling repos/apache-mynewt-core/crypto/mbedtls/src/aes.c +Compiling repos/apache-mynewt-core/apps/slinky/src/main.c + + ... + +Archiving util_mem.a +Linking ~/dev/slinky/bin/targets/nrf52_slinky/app/apps/slinky/slinky.elf +Target successfully built: targets/nrf52_slinky +``` + +<br> + +### Sign and Create the Slinky Application Image + +Run the `newt create-image nrf52_slinky 1.0.0` command to create and sign the application image. You may assign an arbitrary version (e.g. 1.0.0) to the image. + +```no-highlight +$ newt create-image nrf52_slinky 1.0.0 +App image succesfully generated: ~/dev/slinky/bin/targets/nrf52_slinky/app/apps/slinky/slinky.img +$ +``` +<br> + +### Connect to the Board + +* Connect a micro-USB cable from your computer to the micro-USB port on the nRF52-DK board. +* Turn the power on the board to ON. You should see the green LED light up on the board. + +<br> +### Load the Bootloader and the Slinky Application Image + +Run the `newt load nrf52_boot` command to load the bootloader onto the board: + +```no-highlight +$ newt load nrf52_boot +Loading bootloader +$ +``` +<br> +Run the `newt load nrf52_slinky` command to load the Slinky application image onto the board: +```no-highlight +$ newt load nrf52_slinky +Loading app image into slot 1 +$ +``` +<br> + + +### Connect Newtmgr with the Board using a Serial Connection + +Set up a serial connection from your computer to the nRF52-DK board (See [Serial Port Setup](/os/get_started/serial_access.md)). + +Locate the port, in the /dev directory on your computer, that the serial connection uses. It should be of the type `tty.usbserial-<some identifier>`. + +```no-highlight +$ ls /dev/tty*usbserial* +/dev/tty.usbserial-1d11 +$ +``` +<br> +Setup a newtmgr connection profile for the serial port. For our example, the port is `/dev/tty.usbserial-1d11`. + +Run the `newtmgr conn add` command to define a newtmgr connection profile for the serial port. We name the connection profile `nrf52serial`. You will need to replace the `connstring` with the specific port for your serial connection. + +```no-highlight +$ newtmgr conn add nrf52serial type=serial connstring=/dev/tty.usbserial-1d11 +Connection profile nrf52serial successfully added +$ +``` +<br> +You can run the `newt conn show` command to see all the newtmgr connection profiles: + +```no-highlight +$ newtmgr conn show +Connection profiles: + nrf52serial: type=serial, connstring='/dev/tty.usbserial-1d11' + sim1: type=serial, connstring='/dev/ttys012' +$ +``` + +<br> +### Use Newtmgr to Query the Board +Run some newtmgr commands to query and receive responses back from the board (See the [Newt Manager Guide](newtmgr/overview) for more information on the newtmgr commands). + + +Run the `newtmgr echo hello -c nrf52serial` command. This is the simplest command that requests the board to echo back the text. + +```no-highlight +$ newtmgr echo hello -c nrf52serial +hello +$ +``` +<br> +Run the `newtmgr image list -c nrf52serial` command to list the images on the board: + +```no-highlight +$ newtmgr image list -c nrf52serial +Images: + slot=0 + version: 1.0.0 + bootable: true + flags: active confirmed + hash: f411a55d7a5f54eb8880d380bf47521d8c41ed77fd0a7bd5373b0ae87ddabd42 +Split status: N/A +$ +``` + +<br> +Run the `newtmgr taskstats -c nrf52serial` command to display the task statistics on the board: + +```no-highlight +$ newtmgr taskstats -c nrf52serial +Return Code = 0 + task pri tid runtime csw stksz stkuse last_checkin next_checkin + task1 8 2 0 1751 192 110 0 0 + task2 9 3 0 1751 64 31 0 0 + idle 255 0 224081 2068 64 32 0 0 + main 127 1 3 29 1024 365 0 0 +$ +``` http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/59a5159c/docs/os/tutorials/project-slinky.md ---------------------------------------------------------------------- diff --git a/docs/os/tutorials/project-slinky.md b/docs/os/tutorials/project-slinky.md index 2b39f61..05d2b1e 100644 --- a/docs/os/tutorials/project-slinky.md +++ b/docs/os/tutorials/project-slinky.md @@ -1,142 +1,36 @@ -## Project Sim Slinky +## Project Slinky +The goal of the project is to use a sample application called "Slinky" included in the Mynewt repository to enable remote communications with a device running the Mynewt OS. The protocol for remote communications is called newt manager (newtmgr). -<br> - -The goal of the project is to use a sample app called "Slinky" included in the Mynewt repository to enable remote communications with a device running the Mynewt OS. The protocol for remote communications is called newt manager (newtmgr). In this tutorial we will create a target for a simulated device and define it with the sample app "Slinky". +If you have an existing project using a target that does not use the Slinky application and you wish to add newtmgr functionality to it, check out the tutorial titled [Enable newtmgr in any app](add_newtmgr.md). -If you have an existing project using a target that does not use the Slinky app and you wish to add newtmgt functonality to it, check out the tutorial titled [Enable newtmgr in any app](add_newtmgr.md). +###Available Tutorials +Tutorials are available for the following boards: +* [Slinky on a simulated device](/os/tutorials/project-sim-slinky). +* [Slinky on a nRF52](/os/tutorials/project-nrf52-slinky). +* [Slinky on an Olimex](/os/tutorials/project-stm32-slinky). <br> ### Prerequisites -Ensure that you have met the following prerequisites before continuing with this tutorial: +Ensure that you meet the following prerequisites before continuing with this tutorial: * Have Internet connectivity to fetch remote Mynewt components. -* Have a computer to build a Mynewt application. +* Have a computer to build a Mynewt application and connect to the board over USB. +* Have a Micro-USB cable to connect the board and the computer. +* Have a [serial port setup](/os/get_started/serial_access.md). * Install the newt tool and the toolchains (See [Basic Setup](/os/get_started/get_started.md)). * Install the [newtmgr tool](../../newtmgr/installing/). +* Create a project space (directory structure) and populated it with the core code repository (apache-mynewt-core) or kn +ow how to as explained in [Creating Your First Project](/os/get_started/project_create). * Read the Mynewt OS [Concepts](/os/get_started/vocabulary.md) section. -### Overview of steps - -* Install dependencies -* Define a target using the newt tool -* Build executables for the targets using the newt tool -* Set up serial connection with the targets -* Create a connection profile using the newtmgr tool -* Use the newtmgr tool to communicate with the targets - -### Creating a new project - -Instructions for creating a project are located in the [Basic Setup](../get_started/project_create/) section of the [Mynewt Documentation](../introduction/) - -We will list only the steps here for brevity. We will name the project -`slinky`. - -```no-highlight - $ newt new slinky - Downloading project skeleton from apache/incubator-mynewt-blinky... - ... - Installing skeleton in slink... - Project slink successfully created - $ cd slinky - $ newt install -v - Downloading repository description for apache-mynewt-core... success! - ... - Repos successfully installed -``` - -### Setting up your target build - -Create a target for `slinky` using the native bsp. We will list only the steps and suppress the tool output here for brevity. - -```no-highlight - $ newt target create sim_slinky - $ newt target set sim_slinky bsp=@apache-mynewt-core/hw/bsp/native - $ newt target set sim_slinky build_profile=debug - $ newt target set sim_slinky app=@apache-mynewt-core/apps/slinky -``` - -### Building Your target - -To build your target, use `newt build`. When complete, an executable file -is created. - -```no-highlight - $ newt build sim_slinky - Building target targets/sim_slinky - Compiling repos/apache-mynewt-core/boot/bootutil/src/image_ec256.c - Compiling repos/apache-mynewt-core/boot/bootutil/src/image_rsa.c - Compiling repos/apache-mynewt-core/boot/bootutil/src/image_ec.c - Compiling repos/apache-mynewt-core/boot/split/src/split.c - Compiling repos/apache-mynewt-core/boot/bootutil/src/image_validate.c - Compiling repos/apache-mynewt-core/boot/bootutil/src/loader.c - Compiling repos/apache-mynewt-core/boot/bootutil/src/bootutil_misc.c - Compiling repos/apache-mynewt-core/crypto/mbedtls/src/aesni.c - Compiling repos/apache-mynewt-core/crypto/mbedtls/src/aes.c - Compiling repos/apache-mynewt-core/boot/split/src/split_config.c - Compiling repos/apache-mynewt-core/apps/slinky/src/main.c - - ... - - Archiving util_crc.a - Archiving util_mem.a - Linking ~/dev/slinky/bin/targets/sim_slinky/app/apps/slinky/slinky.elf - Target successfully built: targets/sim_slinky - -``` - -### Run the target - -Run the executable you have build for the simulated environment. The serial port name on which the simulated target is connected is shown in the output when mynewt slinky starts. - -```no-highlight - $ ~/dev/slinky/bin/targets/sim_slinky/app/apps/slinky/slinky.elf - uart0 at /dev/ttys005 -``` - -<br> - -In this example, the slinky app opened up a com port `/dev/ttys005` for communications with newtmgr. - -**NOTE:** This application will block. You will need to open a new console (or execute this in another console) to continue the tutorial.* - -<br> - -### Setting up a connection profile - -You will now set up a connection profile using `newtmgr` for the serial port connection and start communicating with the simulated remote device. - -```no-highlight - $ newtmgr conn add sim1 type=serial connstring=/dev/ttys005 - Connection profile sim1 successfully added - $ newtmgr conn show - Connection profiles: - sim1: type=serial, connstring='/dev/ttys005' -``` - -### Executing newtmgr commands with the target - -You can now use connection profile `sim1` to talk to the running sim_slinky. -As an example, we will query the running mynewt OS for the usage of its -memory pools. - -```no-highlight - $ newtmgr -c sim1 mpstats - Return Code = 0 - name blksz cnt free min - msys_1 292 12 10 10 - -``` - -As a test command, you can send an arbitrary string to the target and it -will echo that string back in a response to newtmgr. - -```no-highlight - $ newtmgr -c sim1 echo "Hello Mynewt" - Hello Mynewt -``` +### Overview of Steps -In addition to these, you can also examine running tasks, statistics, -logs, image status (not on sim), and configuration. +* Install dependencies. +* Define the bootloader and Slinky application target for the target board. +* Build the bootloader target. +* Build the Slinky application target and create an application image. +* Set a up serial connection with the targets. +* Create a connection profile using the newtmgr tool. +* Use the newtmgr tool to communicate with the targets. http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/59a5159c/docs/os/tutorials/project-stm32-slinky.md ---------------------------------------------------------------------- diff --git a/docs/os/tutorials/project-stm32-slinky.md b/docs/os/tutorials/project-stm32-slinky.md index 926a459..6ee5f3b 100644 --- a/docs/os/tutorials/project-stm32-slinky.md +++ b/docs/os/tutorials/project-stm32-slinky.md @@ -1,34 +1,13 @@ -## Project Slinky Using STM32 Board - -The goal of the project is to enable and demonstrate remote communications with the Mynewt OS via newt manager (newtmgr) by leveraging a sample app "Slinky" included under the /apps directory in the repository. In this project we will define a target for the STM32-E407 board and assign the app "Slinky" to it. - -If you have an existing project that has a different application and you wish to add newtmgr functionality to it, check out the [Enable newtmgr in any app](add_newtmgr.md) tutorial. +## Project Slinky Using Olimex Board +This tutorial shows you how to create, build and run the Slinky application and communicate with newtmgr for an Olimex STM-E407 board. <br> - - ###Prerequisites -Ensure that you have met the following prerequisites before continuing with this tutorial: - +* Meet the prerequisites listed in [Project Slinky](/os/tutorials/project-slinky.md). * Have a STM32-E407 development board from Olimex. * Have a ARM-USB-TINY-H connector with JTAG interface for debugging ARM microcontrollers (comes with the ribbon cable to hook up to the board) +* Have a USB A-B type cable to connect the debugger to your computer. * Have a USB to TTL Serial Cable with female wiring harness. -* Have a USB Micro-A cable to connect your computer to the board. -* Have Internet connectivity to fetch remote Mynewt components. -* Have a computer to build a Mynewt application and connect to the board over USB. -* Install the newt tool and the toolchains (See Basic Setup). -* Install the newtmgr tool. -* Create a project space (directory structure) and populated it with the core code repository (apache-mynewt-core) or know how to as explained in Creating Your First Project. -* Read the Mynewt OS Concepts section. - -### Overview of Steps - -* Install dependencies -* Define a target using the newt tool -* Build executables for the targets using the newt tool -* Set up serial connection with the targets -* Create a connection profile using the newtmgr tool -* Use the newtmgr tool to communicate with the targets ### Create a New Project Create a new project if you do not have an existing one. You can skip this step and proceed to [create the targets](#create_targets) if you already have a project created or completed the [Sim Slinky](project-slinky.md) tutorial. http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/59a5159c/docs/os/tutorials/project-target-slinky.md ---------------------------------------------------------------------- diff --git a/docs/os/tutorials/project-target-slinky.md b/docs/os/tutorials/project-target-slinky.md deleted file mode 100644 index 6e567dd..0000000 --- a/docs/os/tutorials/project-target-slinky.md +++ /dev/null @@ -1,233 +0,0 @@ -## Project Slinky using the Nordic nRF52 Board - - -<br> - -The goal of this tutorial is to enable and demonstrate remote communications with a Mynewt application running on a device via newt manager (newtmgr). It uses the "Slinky" sample application that is included in the apache-mynewt-core/apps directory and the Nordic nRF52-DK board. - -If you have an existing project that has a different application and you wish to add newtmgr functionality to it, check out the [Enable newtmgr in any app](add_newtmgr.md) tutorial. - -### Prerequisites - -Ensure that you have met the following prerequisites before continuing with this tutorial: - -* Have a Nordic nRF52-DK board. -* Have Internet connectivity to fetch remote Mynewt components. -* Have a computer to build a Mynewt application and connect to the board over USB. -* Have a Micro-USB cable to connect the board and the computer. -* Have a [Serial Port Setup](/os/get_started/serial_access.md). -* Install the newt tool and the toolchains (See [Basic Setup](/os/get_started/get_started.md)). -* Install the [newtmgr tool](../../newtmgr/installing/). -* Create a project space (directory structure) and populated it with the core code repository (apache-mynewt-core) or know how to as explained in [Creating Your First Project](/os/get_started/project_create). -* Read the Mynewt OS [Concepts](/os/get_started/vocabulary.md) section. - -### Overview of Steps - -* Install dependencies -* Define targets using the newt tool -* Build executables for the targets using the newt tool -* Set up serial connection with the targets -* Create a connection profile using the newtmgr tool -* Use the newtmgr tool to communicate with the targets - -### Create a New Project -Create a new project if you do not have an existing one. You can skip this step and proceed to [create the targets](#create_targets) if you already have a project created or completed the [Sim Slinky](project-slinky.md) tutorial. - -Run the following commands to create a new project. We name the project `slinky`. - -```no-highlight -$ newt new slinky -Downloading project skeleton from apache/incubator-mynewt-blinky... -... -Installing skeleton in slink... -Project slinky successfully created -$ cd slinky -$newt install -apache-mynewt-core -``` - -<br> - -###<a name="create_targets"></a> Create the Targets - -Create two targets for the nRF52-DK board - one for the bootloader and one for the Slinky application. - -Run the following `newt target` commands, from your project directory, to create a bootloader target. We name the target `nrf52_boot`. - -```no-highlight -$ newt target create nrf52_boot -$ newt target set nrf52_boot bsp=@apache-mynewt-core/hw/bsp/nrf52dk -$ newt target set nrf52_boot build_profile=optimized -$ newt target set nrf52_boot app=@apache-mynewt-core/apps/boot -``` -<br> -Run the following `newt target` commands to create a target for the Slinky application. We name the target `nrf52_slinky`. - -```no-highlight -$ newt target create nrf52_slinky -$ newt target set nrf52_slinky bsp=@apache-mynewt-core/hw/bsp/nrf52dk -$ newt target set nrf52_slinky build_profile=debug -$ newt target set nrf52_slinky app=@apache-mynewt-core/apps/slinky -``` - -<br> - -### Build the Targets - -Run the `newt build nrf52_boot` command to build the bootloader: - -```no-highlight -$ newt build nrf52-boot -Building target targets/nrf52_boot -Compiling repos/apache-mynewt-core/boot/bootutil/src/image_ec256.c -Compiling repos/apache-mynewt-core/boot/bootutil/src/image_ec.c -Compiling repos/apache-mynewt-core/boot/bootutil/src/image_rsa.c -Compiling repos/apache-mynewt-core/crypto/mbedtls/src/aes.c -Compiling repos/apache-mynewt-core/boot/bootutil/src/loader.c -Compiling repos/apache-mynewt-core/boot/bootutil/src/image_validate.c -Compiling repos/apache-mynewt-core/boot/bootutil/src/bootutil_misc.c -Compiling repos/apache-mynewt-core/apps/boot/src/boot.c - ... - -Archiving sys_mfg.a -Archiving sys_sysinit.a -Archiving util_mem.a -Linking ~/dev/slinky/bin/targets/nrf52_boot/app/apps/boot/boot.elf -Target successfully built: targets/nrf52_boot -``` -<br> - -Run the `newt build nrf52_slinky` command to build the Slinky application: - -```no-highlight -$newt build nrf52_slinky -Building target targets/nrf52_slinky -Compiling repos/apache-mynewt-core/boot/bootutil/src/image_ec256.c -Compiling repos/apache-mynewt-core/boot/bootutil/src/image_ec.c -Compiling repos/apache-mynewt-core/boot/bootutil/src/image_rsa.c -Compiling repos/apache-mynewt-core/boot/split/src/split.c -Compiling repos/apache-mynewt-core/boot/bootutil/src/loader.c -Compiling repos/apache-mynewt-core/boot/bootutil/src/bootutil_misc.c -Compiling repos/apache-mynewt-core/boot/split/src/split_config.c -Compiling repos/apache-mynewt-core/crypto/mbedtls/src/aesni.c -Compiling repos/apache-mynewt-core/boot/bootutil/src/image_validate.c -Compiling repos/apache-mynewt-core/crypto/mbedtls/src/aes.c -Compiling repos/apache-mynewt-core/apps/slinky/src/main.c - - ... - -Archiving util_mem.a -Linking ~/dev/slinky/bin/targets/nrf52_slinky/app/apps/slinky/slinky.elf -Target successfully built: targets/nrf52_slinky -``` - -<br> - -### Sign and Create the Slinky Application Image - -Run the `newt create-image nrf52_slinky 1.0.0` command to create and sign the application image. You may assign an arbitrary version (e.g. 1.0.0) to the image. - -```no-highlight -$ newt create-image nrf52_slinky 1.0.0 -App image succesfully generated: ~/dev/slinky/bin/targets/nrf52_slinky/app/apps/slinky/slinky.img -$ -``` -<br> - -### Connect to the Board - -* Connect a micro-USB cable from your computer to the micro-USB port on the nRF52-DK board. -* Turn the power on the board to ON. You should see the green LED light up on the board. - -<br> -### Load the Bootloader and the Slinky Application Image - -Run the `newt load nrf52_boot` command to load the bootloader onto the board: - -```no-highlight -$ newt load nrf52_boot -Loading bootloader -$ -``` -<br> -Run the `newt load nrf52_slinky` command to load the Slinky application image onto the board: -```no-highlight -$ newt load nrf52_slinky -Loading app image into slot 1 -$ -``` -<br> - - -### Connect Newtmgr with the Board using a Serial Connection - -Set up a serial connection from your computer to the nRF52-DK board (See [Serial Port Setup](/os/get_started/serial_access.md)). - -Locate the port, in the /dev directory on your computer, that the serial connection uses. It should be of the type `tty.usbserial-<some identifier>`. - -```no-highlight -$ ls /dev/tty*usbserial* -/dev/tty.usbserial-1d11 -$ -``` -<br> -Setup a newtmgr connection profile for the serial port. For our example, the port is `/dev/tty.usbserial-1d11`. - -Run the `newtmgr conn add` command to define a newtmgr connection profile for the serial port. We name the connection profile `nrf52serial`. You will need to replace the `connstring` with the specific port for your serial connection. - -```no-highlight -$ newtmgr conn add nrf52serial type=serial connstring=/dev/tty.usbserial-1d11 -Connection profile nrf52serial successfully added -$ -``` -<br> -You can run the `newt conn show` command to see all the newtmgr connection profiles: - -```no-highlight -$ newtmgr conn show -Connection profiles: - nrf52serial: type=serial, connstring='/dev/tty.usbserial-1d11' - sim1: type=serial, connstring='/dev/ttys012' -$ -``` - -<br> -### Use Newtmgr to Query the Board -Run some newtmgr commands to query and receive responses back from the board (See the [Newt Manager Guide](newtmgr/overview) for more information on the newtmgr commands). - - -Run the `newtmgr echo hello -c nrf52serial` command. This is the simplest command that requests the board to echo back the text. - -```no-highlight -$ newtmgr echo hello -c nrf52serial -hello -$ -``` -<br> -Run the `newtmgr image list -c nrf52serial` command to list the images on the board: - -```no-highlight -$ newtmgr image list -c nrf52serial -Images: - slot=0 - version: 1.0.0 - bootable: true - flags: active confirmed - hash: f411a55d7a5f54eb8880d380bf47521d8c41ed77fd0a7bd5373b0ae87ddabd42 -Split status: N/A -$ -``` - -<br> -Run the `newtmgr taskstats -c nrf52serial` command to display the task statistics on the board: - -```no-highlight -$ newtmgr taskstats -c nrf52serial -Return Code = 0 - task pri tid runtime csw stksz stkuse last_checkin next_checkin - task1 8 2 0 1751 192 110 0 0 - task2 9 3 0 1751 64 31 0 0 - idle 255 0 224081 2068 64 32 0 0 - main 127 1 3 29 1024 365 0 0 -$ -``` http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/59a5159c/docs/os/tutorials/rbnano2.md ---------------------------------------------------------------------- diff --git a/docs/os/tutorials/rbnano2.md b/docs/os/tutorials/rbnano2.md index 52883fa..ea0d3ad 100644 --- a/docs/os/tutorials/rbnano2.md +++ b/docs/os/tutorials/rbnano2.md @@ -1,25 +1,12 @@ ## Blinky, your "Hello World!", on RedBear Nano 2 -<br> - -### Objective - -Learn how to use packages from a default application repository of Mynewt to build your first *Hello World* application (Blinky) on a target board. Once built using the *newt* tool, this application will blink the LED lights on the target board. - -Create a project with a simple application that blinks an LED on a RedBear Nano 2 board. Download the application to the target and watch it blink! - +This tutorial shows you how to create, build and run the Blinky application on a RedBear Nano 2 board. <br> ### Prerequisites -Ensure that you have met the following prerequisites before continuing with this tutorial: - +* Meet the prerequisites listed in [Project Blinky](/os/tutorials/blinky.md). * Have a RedBear Nano 2 board. -* Have Internet connectivity to fetch remote Mynewt components. -* Have a computer to build a Mynewt application and connect to the board over USB. -* Install the Newt tool and toolchains (See [Basic Setup](/os/get_started/get_started.md)). -* Create a project space (directory structure) and populated it with the core code repository (apache-mynewt-core) or know how to as explained in [Creating Your First Project](/os/get_started/project_create). -* Read the Mynewt OS [Concepts](/os/get_started/vocabulary.md) section. **Note:** You must install a patched version of OpenOCD .10.0 (See [Debugger Option 2 in the Arduino Primo Blinky Tutorial](/os/tutorials/blinky_primo)). @@ -192,15 +179,3 @@ Loading app image into slot 1 You should see a blue LED on the board blink! Note: If the LED does not blink, try resetting your board. - - -### Conclusion - -You have created, setup, compiled, loaded, and ran your first mynewt application for a RedBear Nano 2 board. - -We have more fun tutorials for you to get your hands dirty. Be bold and work on the OS with tutorials on [writing a test suite](unit_test.md) or try enabling additional functionality such as [remote comms](project-target-slinky.md) or [Bluetooth Low Energy](bletiny_project.md) on your current board. - -If you see anything missing or want to send us feedback, please do so by signing up for appropriate mailing lists on our [Community Page](../../community.md). - -Keep on hacking and blinking! - http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/59a5159c/mkdocs.yml ---------------------------------------------------------------------- diff --git a/mkdocs.yml b/mkdocs.yml index 5249608..54055f7 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -28,7 +28,8 @@ pages: - Concepts: 'os/get_started/vocabulary.md' - Tutorials: - toc: 'os/tutorials/tutorials.md' - - 'Project Blinky': + - 'Project Blinky': + - toc: 'os/tutorials/blinky.md' - 'Blinky on Arduino Zero': 'os/tutorials/arduino_zero.md' - 'Blinky on Arduino Primo': 'os/tutorials/blinky_primo.md' - 'Blinky on Olimex': 'os/tutorials/olimex.md' @@ -47,10 +48,11 @@ pages: - 'Enable Wi-Fi on Arduino MKR1000': 'os/tutorials/wi-fi_on_arduino.md' - 'Write a Test Suite for a Package': 'os/tutorials/unit_test.md' - 'Events and Event Queues': 'os/tutorials/event_queue.md' - - 'Project Slinky for remote comms': - - 'Slinky on sim device': 'os/tutorials/project-slinky.md' - - 'Slinky on Nordic nRF52 board': 'os/tutorials/project-target-slinky.md' - - 'Slinky on STM32 board': 'os/tutorials/project-stm32-slinky.md' + - 'Project Slinky for Remote Comms': + - toc: 'os/tutorials/project-slinky.md' + - 'Slinky on sim device': 'os/tutorials/project-sim-slinky.md' + - 'Slinky on Nordic nRF52': 'os/tutorials/project-nrf52-slinky.md' + - 'Slinky on Olimex': 'os/tutorials/project-stm32-slinky.md' - 'Enable Newt Manager in any app': 'os/tutorials/add_newtmgr.md' - 'Enable the OS Shell and Console': 'os/tutorials/add_shell.md' - 'BLE app to check stats via console': 'os/tutorials/bletiny_project.md'
