You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by ad...@apache.org on 2016/04/28 02:15:53 UTC

[2/3] incubator-mynewt-site git commit: Added bootloader instructions to Olimex, STM32 Discover, nRF. Added three flavors of nrf52 boards - Rigado eval kit, Nordic preview dev kit, and Nordic Dev kit. Added next steps at the end of Blinky to help users t

Added bootloader instructions to Olimex, STM32 Discover, nRF. Added three flavors of nrf52 boards - Rigado eval kit, Nordic preview dev kit, and Nordic Dev kit. Added next steps at the end of Blinky to help users try the next thing


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/3d1f0469
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/tree/3d1f0469
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/diff/3d1f0469

Branch: refs/heads/master
Commit: 3d1f0469a8977f012222bd715d68cca83f43e487
Parents: eb7439a
Author: aditihilbert <ad...@runtime.io>
Authored: Wed Apr 27 17:11:04 2016 -0700
Committer: aditihilbert <ad...@runtime.io>
Committed: Wed Apr 27 17:11:04 2016 -0700

----------------------------------------------------------------------
 docs/os/tutorials/STM32F303.md          |  14 +-
 docs/os/tutorials/arduino_zero.md       |   6 +
 docs/os/tutorials/blinky_sram_olimex.md | 168 ++++++++++++++++++++++
 docs/os/tutorials/nRF52.md              | 121 ++++++++++++++--
 docs/os/tutorials/olimex.md             | 203 +++++++--------------------
 mkdocs.yml                              |   3 +-
 6 files changed, 339 insertions(+), 176 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/3d1f0469/docs/os/tutorials/STM32F303.md
----------------------------------------------------------------------
diff --git a/docs/os/tutorials/STM32F303.md b/docs/os/tutorials/STM32F303.md
index e3c0ef9..7647d55 100644
--- a/docs/os/tutorials/STM32F303.md
+++ b/docs/os/tutorials/STM32F303.md
@@ -145,7 +145,7 @@ targets/stmf3_boot
 
 <br>
 
-### Build the images
+### Build the target executables
 
 To build the images, use the `newt build` command below.
 
@@ -165,7 +165,7 @@ App successfully built: ~/dev/myproj/bin/stmf3_boot/apps/boot/boot.elf
 
 <br>
 
-### Create an application image from the binary
+### Sign and create the blinky application image
 
 You must sign and version your application image to download it using newt.  Use
 the `newt create-image` command to perform this action. Here we assign this
@@ -201,6 +201,10 @@ $ newt -v load stmf3_blinky
 
 ### Watch the LED blink
 
-Congratulations! You have built, downloaded, and run your first application using mynewt for the
-stf32f3 discovery board. One of the LEDs on the LED wheel should be blinking 
-at 1 Hz.
\ No newline at end of file
+Congratulations! You have built, downloaded, and run your first application using mynewt for the stm32f3 discovery board. One of the LEDs on the LED wheel should be blinking at 1 Hz.
+
+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/3d1f0469/docs/os/tutorials/arduino_zero.md
----------------------------------------------------------------------
diff --git a/docs/os/tutorials/arduino_zero.md b/docs/os/tutorials/arduino_zero.md
index cc1ed0a..19201f9 100644
--- a/docs/os/tutorials/arduino_zero.md
+++ b/docs/os/tutorials/arduino_zero.md
@@ -301,3 +301,9 @@ debugger and restart the board.  The image you programmed will come and run on t
 
 Congratulations! You have created a Mynewt operating system 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!

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/3d1f0469/docs/os/tutorials/blinky_sram_olimex.md
----------------------------------------------------------------------
diff --git a/docs/os/tutorials/blinky_sram_olimex.md b/docs/os/tutorials/blinky_sram_olimex.md
new file mode 100644
index 0000000..dd2439d
--- /dev/null
+++ b/docs/os/tutorials/blinky_sram_olimex.md
@@ -0,0 +1,168 @@
+## Run Blinky from SRAM without bootloader
+
+### Objective
+
+To download an application image directly into the embedded SRAM in the microcontroller and run it without the bootloader. This tutorial describes how you do it on an Olimex STM32 board.
+
+### What you need
+
+1. STM32-E407 development board from Olimex. You can order it from [http://www.mouser.com](http://www.mouser.com/ProductDetail/Olimex-Ltd/STM32-E407/?qs=UN6GZl1KCcit6Ye0xmPO4A%3D%3D), [http://www.digikey.com](http://www.digikey.com/product-detail/en/STM32-E407/1188-1093-ND/3726951), and other places.
+2. ARM-USB-TINY-H connector with JTAG interface for debugging ARM microcontrollers (comes with the ribbon cable to hook up to the board)
+3. USB A-B type cable to connect the debugger to your personal computer
+4. Personal Computer with Mac OS (Mac: OS X Yosemite Version 10.10.5) or Linux box (Ubuntu 14.10: Utopic Unicorn)
+5. An account on Github repository and *git* installed on your computer.
+6. It is assumed you have already installed newt tool. 
+7. It is assumed you already installed native tools as described [here](../get_started/native_tools.md)
+
+Also, we assume that you're familiar with UNIX shells. Let's gets started!
+
+<br>
+
+
+### Prepare the Software
+
+* Make sure the PATH environment variable includes the $HOME/dev/go/bin directory. 
+ 
+<br>
+
+### Create a project  
+
+Create a new project to hold your work.  For a deeper understanding, you can read about project creation in 
+[Get Started -- Creating Your First Project](../get_started/project_create.md)
+or just follow the commands below.
+
+```no-highlight
+    $ mkdir ~/dev
+    $ cd ~/dev
+    $ newt new myproj
+    Downloading project skeleton from apache/incubator-mynewt-blinky...
+    Installing skeleton in myproj...
+    Project myproj successfully created.
+
+    $cd myproj
+
+    $ newt install -v 
+    apache-mynewt-core
+    Downloading repository description for apache-mynewt-core... success!
+    ...
+    apache-mynewt-core successfully installed version 0.7.9-none
+``` 
+
+<br>
+   
+### Create a target
+
+Change directory to ~/dev/myproj directory and define the *blinky* target inside myproj, using the *newt* tool. Starting with the target name, assign specific aspects of the project, as shown below, to pull the appropriate packages and build the right bundle or list for the board. For example, we set the build_profile, board support package (bsp), and app.
+
+
+```no-highlight
+    $ newt target create blinky
+    $ newt target set blinky build_profile=debug
+    $ newt target set blinky bsp=@apache-mynewt-core/hw/bsp/olimex_stm32-e407_devboard
+    $ newt target set blinky app=apps/blinky
+    $ newt target show blinky
+    targets/blinky
+        app=apps/blinky
+        bsp=hw/bsp/olimex_stm32-e407_devboard
+        build_profile=debug
+```
+
+<br>
+
+### Build the image
+
+Next, let's build the image for the above target. By default, the linker script within the `hw/bsp/olimex_stm32-e407_devboard` package builds an image for flash memory, which we don't want; instead, we want an image for the SRAM, so you need to switch that script with `run_from_sram.ld`. 
+
+Afer you build the target, you can find the executable *blinky.elf* in the project directory *~/dev/myproj/bin/blinky/apps/blinky/.* 
+    
+    
+```no-highlight
+    $ cd ~/dev/myproj/repos/apache-mynewt-core/hw/bsp/olimex_stm32-e407_devboard/
+    $ diff olimex_stm32-e407_devboard.ld run_from_sram.ld
+    (some diff will be displayed)
+    $ cp run_from_sram.ld olimex_stm32-e407_devboard.ld
+    $ cd ~/dev/myproj
+    $ newt build blinky
+    Compiling case.c
+    Compiling suite.c
+    ...
+    Linking blinky.elf
+    App successfully built:~/dev/myproj/bin/blinky/apps/blinky/blinky.elf
+    $ ls ~/dev/myproj/bin/blinky/apps/blinky/
+        blinky.elf      blinky.elf.bin     blinky.elf.cmd  
+        blinky.elf.lst  blinky.elf.map
+```
+
+<br>
+
+### Prepare the hardware to boot from embedded SRAM
+
+* Locate the boot jumpers on the board.
+
+<br>
+
+![Alt Layout - Top View](pics/topview.png)
+![Alt Layout - Bottom View](pics/bottomview.png)
+
+<br>
+
+* B1_1/B1_0 and B0_1/B0_0 are PTH jumpers. Note that because the markings on the board may not always be accurate, when in doubt, you should always refer to the manual for the correct positioning. Since the jumpers are a pair, they should move together, and as such, the pair is responsible for the boot mode when bootloader is present. 
+To locate the bootloader, the board searches in three places: User Flash Memory, System Memory or the Embedded SRAM. For this Blinky project, we will configure it to boot from SRAM by jumpering **B0_1** and **B1_1**.
+
+* Connect USB-OTG#2 in the picture above to a USB port on your computer (or a powered USB hub to make sure there is enough power available to the board). 
+
+* The red PWR LED should be lit. 
+
+* Connect the JTAG connector to the SWD/JTAG interface on the board. The other end of the cable should be connected to the USB port or hub of your computer.
+
+<br>
+
+### Let's Go!
+
+* Ensure that you are in the blinky project directory with the *blinky.elf* executable. Run the debug command in the *newt* tool. You'll see some status messages as shown below. In case you need to halt the debugging session, you can issue an `-c "reset halt"` command.
+
+
+```no-highlight
+    $ newt debug blinky
+    Debugging with ~/dev/core/hw/bsp/olimex_...
+    Debugging ~/dev/core/project/blinky/bin/blinky/blinky.elf
+    GNU gdb (GNU Tools for ARM Embedded Processors) 7.8.0.20150604-cvs
+    Copyright (C) 2014 Free Software Foundation, Inc.
+    License GPLv3+: GNU GPL version 3 <http://gnu.org/licenses/gpl.html>
+    ...
+    (info)
+    ...
+    target state: halted
+    target halted due to debug-request, current mode: Thread 
+    xPSR: 0x01000000 pc: 0x080003c0 msp: 0x10010000
+    Info : accepting 'gdb' connection on tcp/3333
+    Info : device id = 0x10036413
+    Info : flash size = 1024kbytes
+```
+<br>
+
+Check the value of the msp (main service pointer) register. If it is not 0x10010000 as indicated above, you will have to manually set it after you open the gdb tool and load the image on it. For example, 
+   
+```no-highlight
+    (gdb) set $msp=0x10010000
+```
+
+<br>
+
+   Now load the image and type "c" or "continue" from the GNU debugger. 
+
+```no-highlight           
+    (gdb) load ~/dev/myproj/bin/blinky/apps/blinky/blinky.elf   
+    Loading section .text, size 0x16b88 lma 0x20000000
+    Loading section .ARM.exidx, size 0x18 lma 0x20016b88
+    Loading section .data, size 0x9ec lma 0x20016ba0
+    Start address 0x200004b8, load size 95628
+    Transfer rate: 74 KB/sec, 3825 bytes/write.
+    (gdb) c
+    Continuing.
+```   
+      
+* Voilà! The board's LED should be blinking at 1 Hz. Success!
+
+<br>
+

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-site/blob/3d1f0469/docs/os/tutorials/nRF52.md
----------------------------------------------------------------------
diff --git a/docs/os/tutorials/nRF52.md b/docs/os/tutorials/nRF52.md
index 3335ba4..b3b746e 100644
--- a/docs/os/tutorials/nRF52.md
+++ b/docs/os/tutorials/nRF52.md
@@ -8,18 +8,29 @@ Learn how to use packages from a default application repository of Mynewt to bui
 
 Create a project with a simple app that blinks an LED on the nRF52 board from Nordic Semiconductors.  Download the application to the target and watch it blink!
 
-#### Hardware needed
+Note that there are several versions of the nRF52 in the market. The boards tested with this tutorial are listed under "Hardware needed" below.
 
-* nRF52 Development Kit
+<br>
+
+### Hardware needed
+
+* nRF52 Development Kit (one of the following)
+    * Preview Kit from Nordic - PCA 10036
+    * Dev Kit from Nordic - PCA 10040
+    * Eval Kit from Rigado - BMD-300-EVAL-ES
 * Laptop running Mac OS
 * It is assumed you have already installed newt tool. 
 * It is assumed you already installed native tools as described [here](../get_started/native_tools.md)
 
-#### Install jlinkEXE
+<br>
+
+### Install jlinkEXE
 
 In order to be able to communicate with the SEGGER J-Link debugger on the dev board, you have to download and install the J-Link GDB Server software on to your laptop. You may download the "Software and documentation pack for Mac OS X" from [https://www.segger.com/jlink-software.html](https://www.segger.com/jlink-software.html). 
 
-#### Create a project.  
+<br>
+
+### Create a project.  
 
 Create a new project to hold your work.  For a deeper understanding, you can read about project creation in 
 [Get Started -- Creating Your First Project](../get_started/project_create.md)
@@ -42,27 +53,55 @@ or just follow the commands below.
     apache-mynewt-core successfully installed version 0.7.9-none
 ``` 
 
-#### Create the target
+<br>
 
-Create a single target for the nrf52.  NOTE: The nrf52 mynewt core does not
-yet have bootloader support, so we will create a single image to download
-to the device.
+### Create the targets
 
-```
+Create two targets - one for the bootloader and one for the nrf52 board.  
+
+<font color="#F2853F">
+Note: The correct bsp must be chosen for the board you are using. </font>
+
+* For the Nordic Preview Dev Kit choose @apache-mynewt-core/hw/bsp/nrf52pdk (as shown below)
+* For the Nordic Dev Kit choose @apache-mynewt-core/hw/bsp/nrf52dk instead (in the highlighted lines)
+* For the Rigado Eval Kit choose @apache-mynewt-core/hw/bsp/bmd300eval instead (in the highlighted lines)
+
+
+```hl_lines="3 8"
 $ newt target create blink_nordic
 $ newt target set blink_nordic app=apps/blinky
 $ newt target set blink_nordic bsp=@apache-mynewt-core/hw/bsp/nrf52pdk
 $ newt target set blink_nordic build_profile=debug
+
+$ newt target create nrf52_boot
+$ newt target set nrf52_boot app=@apache-mynewt-core/apps/boot
+$ newt target set nrf52_boot bsp=@apache-mynewt-core/hw/bsp/nrf52pdk
+$ newt target set nrf52_boot build_profile=optimized
+
 $ newt target show 
 targets/blink_nordic
     app=apps/blinky
     bsp=@apache-mynewt-core/hw/bsp/nrf52pdk
     build_profile=debug
+targets/nrf52_boot
+    app=@apache-mynewt-core/apps/boot
+    bsp=@apache-mynewt-core/hw/bsp/nrf52pdk
+    build_profile=optimized
 ```
 
-#### Build the image 
+<br>
+
+### Build the target executables 
 
 ```
+$ newt build nrf52_boot
+...
+Compiling log_shell.c
+Archiving log.a
+Linking boot.elf
+App successfully built: ~/dev/myproj/bin/nrf52_boot/apps/boot/boot.elf
+```
+```
 $ newt build blink_nordic
 ...
 Compiling main.c
@@ -71,23 +110,75 @@ Linking blinky.elf
 App successfully built: ~/dev/myproj/bin/blink_nordic/apps/blinky/blinky.elf
 ```
 
-#### Connect the board
+<br>
+
+### Sign and create the blinky application image 
+
+You must sign and version your application image to download it using newt to the board. Use the newt create-image command to perform this action. You may assign an arbitrary version (e.g. 1.0.0) to the image.
+
+```
+$ newt create-image blink_nordic 1.0.0
+App image succesfully generated: ~/dev/myproj/bin/blink_nordic/apps/blinky/blinky.img
+Build manifest: ~/dev/myproj/bin/blink_nordic/apps/blinky/manifest.json
+```
+
+<br>
+
+### Connect the board
 
 Connect the evaluation board via micro-USB to your PC via USB cable.
         
-#### Download to the target
+<br>
 
-Download the executable to the target platform.
+### Download to the target
+
+Download the bootloader first and then the blinky executable to the target platform. Don't forget to reset the board if you don't see the LED blinking right away!
 
 ```
+$ newt -v load nrf52_boot
 $ newt -v load blink_nordic
 ```
 
-#### Congratulations
+<br>
+
+**Note:** If you want to erase the flash and load the image again, you can use JLinkExe to issue an `erase` command.
+
+```
+$ JLinkExe -device nRF52 -speed 4000 -if SWD
+SEGGER J-Link Commander V5.12c (Compiled Apr 21 2016 16:05:51)
+DLL version V5.12c, compiled Apr 21 2016 16:05:45
+
+Connecting to J-Link via USB...O.K.
+Firmware: J-Link OB-SAM3U128-V2-NordicSemi compiled Mar 15 2016 18:03:17
+Hardware version: V1.00
+S/N: 682863966
+VTref = 3.300V
+
+
+Type "connect" to establish a target connection, '?' for help
+J-Link>erase
+Cortex-M4 identified.
+Erasing device (0;?i?)...
+Comparing flash   [100%] Done.
+Erasing flash     [100%] Done.
+Verifying flash   [100%] Done.
+J-Link: Flash download: Total time needed: 0.363s (Prepare: 0.093s, Compare: 0.000s, Erase: 0.262s, Program: 0.000s, Verify: 0.000s, Restore: 0.008s)
+Erasing done.
+J-Link>exit
+$
+```
+
+
+### Conclusion
 
 You have created, setup, compiled, loaded, and ran your first mynewt application
-for the nrf52 evaluation board.
+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/3d1f0469/docs/os/tutorials/olimex.md
----------------------------------------------------------------------
diff --git a/docs/os/tutorials/olimex.md b/docs/os/tutorials/olimex.md
index bdbbb7f..9b8f3af 100644
--- a/docs/os/tutorials/olimex.md
+++ b/docs/os/tutorials/olimex.md
@@ -4,15 +4,7 @@
 
 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 will guide you to achieve the following, assuming you have already set up the environment on your computer to use Mynewt OS and newt tool:
-
-* Download packages and use tools to create a runtime image for a board to make its LED blink. You have two choices here:
-    * [Download an image to SRAM](#use-sram-to-make-led-blink), or 
-    * [Download it to flash](#use-flash-to-make-led-blink).
-
-<br>
-
-** Time Requirement**: Allow yourself a couple of hours for this project if you are relatively new to embedded systems and playing with development boards. Those jumpers can be pesky!
+This tutorial shows you how to create a runtime image for an Olimex board to make its LED blink. Download the image to its flash memory and see the LED blink!
 
 <br>
 
@@ -31,19 +23,13 @@ Also, we assume that you're familiar with UNIX shells. Let's gets started!
 <br>
 
 
-### Use SRAM to make LED blink
-
-If you wish to build the image to run from the onboard SRAM on Olimex board, follow the steps below:
-
-<br>
-
-#### Prepare the Software
+### Prepare the Software
 
 * Make sure the PATH environment variable includes the $HOME/dev/go/bin directory. 
  
 <br>
 
-#### Create a project.  
+### Create a project.  
 
 Create a new project to hold your work.  For a deeper understanding, you can read about project creation in 
 [Get Started -- Creating Your First Project](../get_started/project_create.md)
@@ -68,7 +54,7 @@ or just follow the commands below.
 
 <br>
    
-#### Create a target
+### Create targets
 
 Change directory to ~/dev/myproj directory and define the *blinky* target inside myproj, using the *newt* tool. Starting with the target name, assign specific aspects of the project, as shown below, to pull the appropriate packages and build the right bundle or list for the board. For example, we set the build_profile, board support package (bsp), and app.
 
@@ -78,31 +64,31 @@ Change directory to ~/dev/myproj directory and define the *blinky* target inside
     $ newt target set blinky build_profile=debug
     $ newt target set blinky bsp=@apache-mynewt-core/hw/bsp/olimex_stm32-e407_devboard
     $ newt target set blinky app=apps/blinky
-    $ newt target show blinky
-    targets/boot_olimex
+    
+    $ newt target create boot_olimex
+    $ newt target set boot_olimex app=@apache-mynewt-core/apps/boot
+    $ newt target set boot_olimex bsp=@apache-mynewt-core/hw/bsp/olimex_stm32-e407_devboard
+    $ newt target set boot_olimex build_profile=optimized
+    
+    $ newt target show 
+    targets/blinky
         app=apps/blinky
-        bsp=hw/bsp/olimex_stm32-e407_devboard
+        bsp=@apache-mynewt-core/hw/bsp/olimex_stm32-e407_devboard
         build_profile=debug
+    targets/boot_olimex
+        app=@apache-mynewt-core/apps/boot
+        bsp=@apache-mynewt-core/hw/bsp/olimex_stm32-e407_devboard
+        build_profile=optimized
 ```
 
 <br>
 
-#### Build the image
-
-Next, let's build the image with the above values assigned. By default, the linker script within the `hw/bsp/olimex_stm32-e407_devboard` package builds an image for flash memory, which we don't want; instead, we want an image for the SRAM, so you need to switch that script with `run_from_sram.ld`. 
-
-<font color="red">
-(We are working to simplify this scheme whereby an executable for a project will correctly elect the linker scripts and generate the relevant image. For example, the scheme will key on project identity such as bootloader, RAM, Flash (default) and build accordingly.) </font>.
+### Build the images
 
-Afer you build the target, you can find the executable *blinky.elf* in the project directory *~/dev/myproj/bin/blinky/apps/blinky/.* 
+Next, let's build the images for the above targets. Afer you build the target, you can find the executable *blinky.elf* in the project directory *~/dev/myproj/bin/blinky/apps/blinky/.* 
     
     
 ```no-highlight
-    $ cd ~/dev/myproj/repos/apache-mynewt-core/hw/bsp/olimex_stm32-e407_devboard/
-    $ diff olimex_stm32-e407_devboard.ld run_from_sram.ld
-    (some diff will be displayed)
-    $ cp run_from_sram.ld olimex_stm32-e407_devboard.ld
-    $ cd ~/dev/myproj
     $ newt build blinky
     Compiling case.c
     Compiling suite.c
@@ -112,11 +98,27 @@ Afer you build the target, you can find the executable *blinky.elf* in the proje
     $ ls ~/dev/myproj/bin/blinky/apps/blinky/
         blinky.elf      blinky.elf.bin     blinky.elf.cmd  
         blinky.elf.lst  blinky.elf.map
+        
+    $ newt build boot_olimex
+    Building target targets/boot_olimex
+    App successfully built: ~/dev/myproj/bin/boot_olimex/apps/boot/boot.elf
 ```
 
 <br>
 
-#### Prepare the hardware to boot from embedded SRAM
+### Sign and create the blinky application image 
+
+You must sign and version your application image to download it using newt to the board. Use the newt create-image command to perform this action. You may assign an arbitrary version (e.g. 1.0.0) to the image.
+
+```
+$ newt create-image blinky 1.0.0
+App image succesfully generated: ~/dev/myproj/bin/blinky/apps/blinky/blinky.img
+Build manifest: ~/dev/myproj/bin/blinky/apps/blinky/manifest.json
+```
+
+<br>
+
+### Prepare the hardware to boot from flash
 
 * Locate the boot jumpers on the board.
 
@@ -128,7 +130,7 @@ Afer you build the target, you can find the executable *blinky.elf* in the proje
 <br>
 
 * B1_1/B1_0 and B0_1/B0_0 are PTH jumpers. Note that because the markings on the board may not always be accurate, when in doubt, you should always refer to the manual for the correct positioning. Since the jumpers are a pair, they should move together, and as such, the pair is responsible for the boot mode when bootloader is present. 
-To locate the bootloader, the board searches in three places: User Flash Memory, System Memory or the Embedded SRAM. For this Blinky project, we will configure it to boot from SRAM by jumpering **B0_1** and **B1_1**.
+To locate the bootloader, the board searches in three places: User Flash Memory, System Memory or the Embedded SRAM. For this Blinky project, we will configure it to boot from flash by jumpering **B0_0** and **B1_0**.
 
 * Connect USB-OTG#2 in the picture above to a USB port on your computer (or a powered USB hub to make sure there is enough power available to the board). 
 
@@ -138,127 +140,18 @@ To locate the bootloader, the board searches in three places: User Flash Memory,
 
 <br>
 
-#### Let's Go!
+### Let's Go!
 
-* Ensure that you are in the blinky project directory with the *blinky.elf* executable. Run the debug command in the *newt* tool. You'll see some status messages as shown below. In case you need to halt the debugging session, you can issue an `-c "reset halt"` command.
+* Load the images
 ```no-highlight
-    $ newt debug blinky
-    Debugging with ~/dev/core/hw/bsp/olimex_...
-    Debugging ~/dev/core/project/blinky/bin/blinky/blinky.elf
-    GNU gdb (GNU Tools for ARM Embedded Processors) 7.8.0.20150604-cvs
-    Copyright (C) 2014 Free Software Foundation, Inc.
-    License GPLv3+: GNU GPL version 3 <http://gnu.org/licenses/gpl.html>
-    ...
-    (info)
-    ...
-    target state: halted
-    target halted due to debug-request, current mode: Thread 
-    xPSR: 0x01000000 pc: 0x080003c0 msp: 0x10010000
-    Info : accepting 'gdb' connection on tcp/3333
-    Info : device id = 0x10036413
-    Info : flash size = 1024kbytes
-```
-<br>
+$ newt -v load boot_olimex
+Loading image with: ~/dev/myproj/repos/apache-mynewt-core/hw/bsp/olimex_stm32-e407_devboard/olimex_stm32-e407_devboard_download.sh ~/dev/myproj/repos/apache-mynewt-core/hw/bsp/olimex_stm32-e407_devboard/ ~/dev/myproj/bin/boot_olimex/apps/boot/boot BASELIBC FS LIBC NFFS bootloader
+Successfully loaded image.
 
-Check the value of the msp (main service pointer) register. If it is not 0x10010000 as indicated above, you will have to manually set it after you open the gdb tool and load the image on it. For example, 
-   
-```no-highlight
-    (gdb) set $msp=0x10010000
+$ newt -v load blinky
+Loading image with: ~/dev/myproj/repos/apache-mynewt-core/hw/bsp/olimex_stm32-e407_devboard/olimex_stm32-e407_devboard_download.sh ~/dev/myproj/repos/apache-mynewt-core/hw/bsp/olimex_stm32-e407_devboard/ ~/dev/myproj/bin/blinky/apps/blinky/blinky BASELIBC LIBC
+Successfully loaded image.
 ```
-
-<br>
-
-   Now load the image and type "c" or "continue" from the GNU debugger. 
-
-```no-highlight           
-    (gdb) load ~/dev/myproj/bin/blinky/apps/blinky/blinky.elf   
-    Loading section .text, size 0x16b88 lma 0x20000000
-    Loading section .ARM.exidx, size 0x18 lma 0x20016b88
-    Loading section .data, size 0x9ec lma 0x20016ba0
-    Start address 0x200004b8, load size 95628
-    Transfer rate: 74 KB/sec, 3825 bytes/write.
-    (gdb) c
-    Continuing.
-```   
-      
-* Voilà! The board's LED should be blinking at 1 Hz. Success!
-
-<br>
-
-### Use flash to make LED blink
-
-If you wish to build the image to run from the onboard flash memory on Olimex board, follow the steps below:
-
-* Configure the board to boot from flash by moving the two jumpers together to **B0_0** and **B1_0**. Refer to the pictures of the board under the section titled ["Prepare the hardware to boot from embedded SRAM"](#prepare-the-hardware-to-boot-from-embedded-sram).
-
-     You will have to reset the board once the image is uploaded to it.
-        
-* If you skipped the first option for the project [(downloading an image to SRAM)](#use-sram-to-make-led-blink), then skip this step. Otherwise, continue with this step. 
-
-   By default, the linker script (`olimex_stm32-e407_devboard.ld`) is configured to run from bootloader and flash. However, if you first ran the image from SRAM you had changed `olimex_stm32-e407_devboard.ld` to match `run_from_sram.ld`. You will, therefore, return to defaults with `olimex_stm32-e407_devboard.ld` linker script matching the contents of 'run_from_loader.ld'. Return to the project directory.
-
-```no-highlight
-$ cd ~/dev/myproj/repos/apache-mynewt-core/hw/bsp/olimex_stm32-e407_devboard/
-$ diff olimex_stm32-e407_devboard.ld run_from_sram.ld
-$ diff olimex_stm32-e407_devboard.ld run_from_loader.ld
-(some diff will be displayed)
-$ cp run_from_loader.ld olimex_stm32-e407_devboard.ld
-$ cd ~/dev/myproj
-```
-
-<br>
-
-* In order to run the image from flash, you need to build the bootloader as well. The bootloader does the initial set up of the Olimex board and then transfers control to the image stored at a location in flash known to it. 
-
-Let's create boot_olimex:
-
-```no-highlight
-    $ newt target create boot_olimex
-    $ newt target set boot_olimex build_profile=optimized
-    $ newt target set boot_olimex bsp=@apache-mynewt-core/hw/bsp/olimex_stm32-e407_devboard
-    $ newt target set boot_olimex app=@apache-mynewt-core/apps/boot
-    $ newt target show boot_olimex
-    targets/boot_olimex
-        app=@apache-mynewt-core/apps/boot
-        bsp=@apache-mynewt-core/hw/bsp/olimex_stm32-e407_devboard
-        build_profile=optimized
-```
-
-<br>
-
-* Now let's build both targets now.
-
-```no-highlight
-    $ newt build boot_olimex
-    ...
-    App successfully built: ~/dev/myproj/bin/boot_olimex/apps/boot/boot.elf
-    $ newt build blinky
-    ...
-    Linking blinky.elf
-    App successfully built: ~/dev/myproj/bin/blinky/apps/blinky/blinky.elf
-```
-
-<br>
-
-* Create the blinky image and download the bootloader and the image to flash ... in a flash! 
-When creating an image, you can assign a version number to your image; here we use '1.2.3'
-
-```no-highlight
-    $ newt create-image blinky 1.2.3
-    App image succesfully generated: ~/dev/myproj/bin/blinky/apps/blinky/blinky.img
-    Build manifest: ~/dev/myproj/bin/blinky/apps/blinky/manifest.json
-    $ newt load boot_olimex
-    Downloading~/dev/myproj/bin/boot_olimex/apps/boot/boot.elf.bin to 0x08000000
-    Open On-Chip Debugger 0.9.0 (2015-11-15-13:10)
-    ...
-    shutdown command invoked
-    $ newt load blinky
-    Downloading ~/dev/myproj/bin/blinky/apps/blinky/blinky.img to 0x08020000
-    Open On-Chip Debugger 0.9.0 (2015-11-15-13:10)
-    ...
-    shutdown command invoked
-```
-
 <br>
 
 * Voilà! The LED should be blinking! Success!
@@ -269,7 +162,7 @@ When creating an image, you can assign a version number to your image; here we u
 
    The LED light will start blinking again. Success!
   
-   **Note #1:** If you want to download the image to flash and a gdb session opened up, use `newt debug blinky` after `newt download blinky`.
+   **Note #1:** If you want to download the image to flash and a gdb session opened up, use `newt debug blinky`. Type `c` to continue inside the gdb session.
     
 ```no-highlight     
     $ newt debug blinky
@@ -310,8 +203,8 @@ When creating an image, you can assign a version number to your image; here we u
 
 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).
+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)
+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/3d1f0469/mkdocs.yml
----------------------------------------------------------------------
diff --git a/mkdocs.yml b/mkdocs.yml
index 417913a..d25569e 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -26,10 +26,11 @@ pages:
         - 'Blinky on Olimex': 'os/tutorials/olimex.md'
         - 'Blinky on STM32F303': 'os/tutorials/STM32F303.md'
         - 'Blinky on nRF52': 'os/tutorials/nRF52.md'
+        - 'Run Blinky from SRAM, no bootloader': 'os/tutorials/blinky_sram_olimex.md'
         - 'Add repo to project': 'os/tutorials/add_repos.md'
         - 'Create a repo': 'os/tutorials/create_repo.md'
         - 'Upgrade a repo': 'os/tutorials/upgrade_repo.md'
-        - 'BLE commands via console': 'os/tutorials/bletiny_project.md'
+        - 'Use BLE app to check stats via console': 'os/tutorials/bletiny_project.md'
         - 'Enable remote comms on sim device': 'os/tutorials/project-slinky.md'
         - 'Enable remote comms on STM32 board': 'os/tutorials/project-target-slinky.md'
         - 'Write a Test Suite for a Package': 'os/tutorials/unit_test.md'