<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        
        
        <!-- This is broken by doc revisioning.
        <link rel="canonical" href="http://mynewt.apache.org/os/tutorials/rbnano2/"> -->
        <link rel="shortcut icon" href="../../../img/favicon.ico">

	    <title>Blinky on RedBear Nano 2 - Apache Mynewt</title>

        <link href="../../../css/bootstrap-3.0.3.min.css" rel="stylesheet">
        <link rel="stylesheet" href="../../../css/highlight.css">
        <link href="../../../css/base.css" rel="stylesheet">
        <link href="../../../css/custom.css" rel="stylesheet">
        <link href="../../../css/v2.css" rel="stylesheet">
        <link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
        <link href="../../../extra.css" rel="stylesheet">

        <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
        <!--[if lt IE 9]>
            <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
            <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
        <![endif]-->

        
            <script>
            (function(i, s, o, g, r, a, m) {
    i["GoogleAnalyticsObject"] = r;
    (i[r] =
        i[r] ||
        function() {
            (i[r].q = i[r].q || []).push(arguments);
        }),
        (i[r].l = 1 * new Date());
    (a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);
    a.async = 1;
    a.src = g;
    m.parentNode.insertBefore(a, m);
})(window, document, "script", "//www.google-analytics.com/analytics.js", "ga");

ga("create", "UA-72162311-1", "auto");
ga("send", "pageview");
</script>
        
    </head>


    <body class="Blinky on RedBear Nano 2">


        <div class="container">
    <div class="row v2-main-banner">
        <a class="logo-cell" href="/">
            <img class="logo" src="/img/logo.png">
        </a>
        <div class="tagline-cell">
            <h4 class="tagline">An OS to build, deploy and securely manage billions of devices</h4>
        </div>
        <div class="news-cell">
            <div class="well">
                <h4>Latest News:</h4> <a href="/download">Apache Mynewt 1.5.0 </a> released (Nov 5, 2018)
            </div>
        </div>
    </div>
</div>

        






<nav id="navbar" class="navbar navbar-inverse affix-top" data-spy="affix" data-offset-top="150" role="navigation">
    <div class="container">
        <!-- Collapsed navigation -->
        <div class="navbar-header">
            <!-- Expander button -->
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>

        </div>

        <!-- Expanded navigation -->
        <div class="navbar-collapse collapse">
            <!-- Main navigation -->
            <ul class="nav navbar-nav navbar-right">
                <li 
  class=""
>
                    <a href="/"><i class="fa fa-home" style="font-size: larger;"></i></a>
                </li>
                <li 
  class="important"
>
                    <a href="/quick-start/">Quick Start</a>
                </li>
                <li 
  class=""
>
                    <a href="/about/">About</a>
                </li>
                <li 
  class=""
>
                    <a href="/talks/">Talks</a>
                </li>
                <li 
  class="active"
>
                    <a href="/documentation/">Documentation</a>
                </li>
                <li 
  class=""
>
                    <a href="/download/">Download</a>
                </li>
                <li 
  class=""
>
                    <a href="/community/">Community</a>
                </li>
                <li 
  class=""
>
                    <a href="/events/">Events</a>
                </li>
            </ul>

        </div>
    </div>
</nav>

        

        <div class="container">
            
                <div class="row">
                    <div class="col-md-3 v2-sidebar sidebar-container"><div id="docSidebar" class="hidden-print" role="complementary">
    <div class="top">
        <div role="search">
            <form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
                <div class="form-group">
                    <input type="text" name="q" class="form-control" placeholder="Search documentation" />
                </div>
            </form>
        </div>
    </div>
    <ul class="toc-nav">
      <li class="doc-version"><select class="form-control" onchange="if (this.value) window.location.href=this.value">
  <option value="/latest">
    Version: master
  </option>
  <option value="/v1_4_0">
    Version: 1.4.0
  </option>
  <option value="/v1_3_0/os/introduction" >
    Version: 1.3.0
  </option>
  <option value="/v1_2_0/os/introduction" >
    Version: 1.2.0
  </option>
  <option value="/v1_1_0/os/introduction" >
    Version: 1.1.0
  </option>
  <option value="/v1_0_0/os/introduction" selected="selected" >
    Version: 1.0.0
  </option>
  <option value="/v0_9_0/os/introduction" >
    Version: 0.9.0
  </option>
</select></li>
      
        
      
        
      
        
      
        
      
        
      
        
      
        
      
        
      
        
          
  
  
    <li ><a href="../../introduction/">Mynewt Documentation</a>
  
  
    <ul>
          
              
          
              
                
  
  
    <li ><a href="../../get_started/get_started/">Basic Setup</a>
  
  
    </li>

              
          
              
                
    <li >
      <a href="../../get_started/vocabulary/">Concepts</a>
    </li>

              
          
              
                
  
  
    <li ><a href="../tutorials/">Tutorials</a>
  
  
    <ul>
          
              
          
              
                
  
  
    <li ><a href="../blinky/">Project Blinky</a>
  
  
    <ul>
          
              
          
              
                
    <li >
      <a href="../arduino_zero/">Blinky on Arduino Zero</a>
    </li>

              
          
              
                
    <li >
      <a href="../blinky_primo/">Blinky on Arduino Primo</a>
    </li>

              
          
              
                
    <li >
      <a href="../olimex/">Blinky on Olimex</a>
    </li>

              
          
              
                
    <li >
      <a href="../nRF52/">Blinky on nRF52</a>
    </li>

              
          
              
                
    <li class="active">
      <a href="./">Blinky on RedBear Nano 2</a>
    </li>

              
          
              
                
    <li >
      <a href="../blinky_stm32f4disc/">Blinky on STM32F4-Discovery</a>
    </li>

              
          
              
                
    <li >
      <a href="../blinky_console/">Add Console and Shell to Blinky</a>
    </li>

              
          
    </ul>
  
    </li>

              
          
              
                
  
  
    <li ><a href="../repo/add_repos/">Work with repositories</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../project-slinky/">Project Slinky for Remote Comms</a>
  
  
    </li>

              
          
              
                
    <li >
      <a href="../ibeacon/">BLE iBeacon</a>
    </li>

              
          
              
                
    <li >
      <a href="../eddystone/">BLE Eddystone</a>
    </li>

              
          
              
                
    <li >
      <a href="../add_newtmgr/">Enable Newt Manager in any app</a>
    </li>

              
          
              
                
    <li >
      <a href="../add_shell/">Enable the OS Shell and Console</a>
    </li>

              
          
              
                
    <li >
      <a href="../tasks_lesson/">Tasks and Priority Management</a>
    </li>

              
          
              
                
    <li >
      <a href="../wi-fi_on_arduino/">Enable Wi-Fi on Arduino MKR1000</a>
    </li>

              
          
              
                
    <li >
      <a href="../unit_test/">Write a Test Suite for a Package</a>
    </li>

              
          
              
                
    <li >
      <a href="../event_queue/">Events and Event Queues</a>
    </li>

              
          
              
                
    <li >
      <a href="../bletiny_project/">BLE app to check stats via console</a>
    </li>

              
          
              
                
  
  
    <li ><a href="../bleprph/bleprph-intro/">BLE peripheral project</a>
  
  
    </li>

              
          
              
                
    <li >
      <a href="../blehci_project/">BLE HCI interface</a>
    </li>

              
          
              
                
  
  
    <li><a href="
  ../air_quality_sensor/
">Air-quality Sensor project</a>
  
  
    </li>

              
          
              
                
    <li >
      <a href="../nrf52_adc/">Add an Analog Sensor</a>
    </li>

              
          
    </ul>
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../os_user_guide/">OS User Guide</a>
  
  
    </li>

              
          
              
                
  
  
    <li><a href="
  ../../../network/ble/ble_intro/
">BLE User Guide</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../newt/newt_intro/">Newt Tool Guide</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../newtmgr/overview/">Newt Manager Guide</a>
  
  
    </li>

              
          
              
                
    <li >
      <a href="../../../known_issues/">Known Issues</a>
    </li>

              
          
    </ul>
  
    </li>

        
      
        
          
  
  
    <li><a href="
  ../../../faq/go_env/
">Appendix</a>
  
  
    </li>

        
      
    </ul>
</div></div>

                    <div class="col-md-9" role="main">
                        <div class="doc-header">
                            <div role="navigation" aria-label="breadcrumbs navigation">
  <ul class="wy-breadcrumbs">
    <li><a href="/documentation/">Docs</a></li>
    
    
        
          <li>&raquo; <a href="../tutorials/">Tutorials</a></li>
        
      
        
          <li>&raquo; <a href="../blinky/">Project Blinky</a></li>
        
      
      
        <li>&raquo; Blinky on RedBear Nano 2</li>
      
    
    
  </ul>
</div>
                        </div>
                        
                          
                        
                          
                        
                          
                            <div class="alert alert-warning">
                                <p>
                                    Version 1.0.0 is not the most recent version of the Apache Mynewt
                                    documentation. Click <a href="/latest">here</a> to read the latest
                                    version.
                                </p>
                            </div>
                          
                        
                        
                            <h2 id="blinky-your-hello-world-on-redbear-nano-2">Blinky, your "Hello World!", on RedBear Nano 2</h2>
<p>This tutorial shows you how to create, build and run the Blinky application on a RedBear Nano 2 board.
<br></p>
<h3 id="prerequisites">Prerequisites</h3>
<ul>
<li>Meet the prerequisites listed in <a href="../blinky/">Project Blinky</a>.</li>
<li>Have a RedBear Nano 2 board. </li>
<li>Install a patched version of OpenOCD 0.10.0 described in <a href="../../../os/get_started/cross_tools/">Install OpenOCD</a>.</li>
</ul>
<h3 id="create-a-project">Create a Project</h3>
<p>Create a new project if you do not have an existing one.  You can skip this step and proceed to <a href="#create_targets">create the targets</a> if you already have a project created.  </p>
<p>Run the following commands to create a new project:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%"><span></span>    $ 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
    apache-mynewt-core
    $
</pre></div>


<p><br></p>
<h3 id="create-the-targets"><a name="create_targets"></a>Create the Targets</h3>
<p>Create two targets for the RedBear Nano 2 board - one for the bootloader and one for the Blinky application.</p>
<p>Run the following <code>newt target</code> commands, from your project directory, to create a bootloader target. We name the target <code>rbnano2_boot</code>:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%"><span></span>$ newt target create rbnano2_boot
$ newt target set rbnano2_boot app=@apache-mynewt-core/apps/boot
$ newt target set rbnano2_boot bsp=@apache-mynewt-core/hw/bsp/rb-nano2
$ newt target set rbnano2_boot build_profile=optimized
</pre></div>


<p><br>
Run the following <code>newt target</code> commands to create a target for the Blinky application. We name the target <code>nrf52_blinky</code>.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%"><span></span>$ newt target create rbnano2_blinky
$ newt target set rbnano2_blinky app=apps/blinky
$ newt target set rbnano2_blinky bsp=@apache-mynewt-core/hw/bsp/rb-nano2
$ newt target set rbnano2_blinky build_profile=debug
</pre></div>


<p><br>
You can run the <code>newt target show</code> command to verify the target settings:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%"><span></span>$ newt target show 
targets/rbnano2_blinky
    app=apps/blinky
    bsp=@apache-mynewt-core/hw/bsp/rb-nano2
    build_profile=debug
targets/rbnano2_boot
    app=@apache-mynewt-core/apps/boot
    bsp=@apache-mynewt-core/hw/bsp/rb-nano2
    build_profile=optimized
</pre></div>


<p><br></p>
<h3 id="build-the-target-executables">Build the Target Executables</h3>
<p>Run the <code>newt build rbnano2_boot</code> command to build the bootloader:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%"><span></span>$newt build rbnano2_boot
Building target targets/rbnano2_boot
Compiling repos/apache-mynewt-core/boot/bootutil/src/image_rsa.c
Compiling repos/apache-mynewt-core/boot/bootutil/src/image_ec256.c
Compiling repos/apache-mynewt-core/boot/bootutil/src/loader.c
Compiling repos/apache-mynewt-core/crypto/mbedtls/src/aes.c
Compiling repos/apache-mynewt-core/boot/bootutil/src/image_validate.c
Compiling repos/apache-mynewt-core/boot/bootutil/src/image_ec.c
Compiling repos/apache-mynewt-core/boot/bootutil/src/bootutil_misc.c
Compiling repos/apache-mynewt-core/apps/boot/src/boot.c

      ...

Archiving sys_sysinit.a
Archiving util_mem.a
Linking ~/dev/myproj/bin/targets/rbnano2_boot/app/apps/boot/boot.elf
Target successfully built: targets/rbnano2_boot
</pre></div>


<p><br>
Run the <code>newt build rbnano2_blinky</code> command to build the Blinky application:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%"><span></span>$newt build rbnano2_blinky
Building target targets/rbnano2_blinky
Assembling repos/apache-mynewt-core/hw/bsp/rb-nano2/src/arch/cortex_m4/gcc_startup_nrf52_split.s
Compiling repos/apache-mynewt-core/hw/drivers/uart/src/uart.c
Compiling repos/apache-mynewt-core/hw/cmsis-core/src/cmsis_nvic.c
Compiling repos/apache-mynewt-core/hw/bsp/rb-nano2/src/sbrk.c
Compiling apps/blinky/src/main.c

     ...

Archiving sys_sysinit.a
Archiving util_mem.a
Linking ~/dev/myproj/bin/targets/rbnano2_blinky/app/apps/blinky/blinky.elf
Target successfully built: targets/rbnano2_blinky
</pre></div>


<p><br></p>
<h3 id="sign-and-create-the-blinky-application-image">Sign and Create the Blinky Application Image</h3>
<p>Run the <code>newt create-image rbnano2_blinky 1.0.0</code> command to create and sign the application image. You may assign an arbitrary version (e.g. 1.0.0) to the image.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%"><span></span>$newt create-image rbnano2_blinky 1.0.0
App image succesfully generated: ~/dev/myproj/bin/targets/rbnano2_blinky/app/apps/blinky/blinky.img
</pre></div>


<p><br></p>
<h3 id="connect-to-the-board">Connect to the Board</h3>
<p>Connect the RedBear Nano 2 USB to a USB port on your computer. You should see an orange LED light up on the board.</p>
<h3 id="load-the-bootloader">Load the Bootloader</h3>
<p>Run the <code>newt load rbnano2_boot</code> command to load the bootloader onto the board: </p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%"><span></span>$ newt load rbnano2_boot
Loading bootloader
$
</pre></div>


<p><br></p>
<p><strong>Note:</strong> On Windows platforms, if you get an <code>unable to find CMSIS-DAP device</code> error, you will need to download and install the mbed Windows serial port driver from <a href="https://developer.mbed.org/handbook/Windows-serial-configuration">https://developer.mbed.org/handbook/Windows-serial-configuration</a>. Follow the instructions from the site to install the driver.  Here are some additional notes about the installation:</p>
<ol>
<li>The instructions indicate that the mbed Windows serial port driver is not required for Windows 10. If you are using Windows 10 and get the <code>unable to find CMSIS-DAP device</code> error, we recommend that you install the driver.</li>
<li>If the driver installation fails, we recommend that you unplug the board, plug it back in, and retry the installation.</li>
</ol>
<p>Run the <code>newt load rbnano2_boot</code> command again.</p>
<p><br></p>
<h4 id="clear-the-write-protection-on-the-flash-memory">Clear the Write Protection on the Flash Memory</h4>
<p>The flash memory on the RedBear Nano 2 comes write protected from the factory. If you get an error loading the bootloader and you are using a brand new chip, you need to clear the write protection from the debugger and then load the bootloader again.  Run the <code>newt debug rbnano2_blinky</code> command and issue the following commands at the highlighted (gdb) prompts.  </p>
<p><strong>Note:</strong> The output of the debug session below is for Mac OS and Linux platforms. On Windows, openocd and gdb are started in separate Windows Command Prompt terminals, and the terminals are automatically closed when you quit gdb. In addition,  the output of openocd is logged to the openocd.log file in your project's base directory instead of the terminal.</p>
<p><br></p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%"><span></span>$newt debug rbnano2_blinky
[~/dev/myproj/repos/apache-mynewt-core/hw/bsp/rb-nano2/rb-nano2_debug.sh  ~/dev/myproj/repos/apache-mynewt-core/hw/bsp/rb-nano2 ~/dev/myproj/bin/targets/rbnano2_blinky/app/apps/blinky/blinky]
Open On-Chip Debugger 0.10.0-dev-snapshot (2017-03-28-11:24)
Licensed under GNU GPL v2

     ...

<span style="background-color: #ffffcc">(gdb) set {unsigned long}0x4001e504=2
</span><span style="background-color: #ffffcc">(gdb) x/1wx 0x4001e504
</span>0x4001e504:0x00000002
<span style="background-color: #ffffcc">(gdb) set {unsigned long}0x4001e50c=1
</span>Info : SWD DPIDR 0x2ba01477
Error: Failed to read memory at 0x00009ef4
<span style="background-color: #ffffcc">(gdb) x/32wx 0x00
</span>0x0:0xffffffff0xffffffff0xffffffff0xffffffff
0x10:0xffffffff0xffffffff0xffffffff0xffffffff
0x20:0xffffffff0xffffffff0xffffffff0xffffffff
0x30:0xffffffff0xffffffff0xffffffff0xffffffff
0x40:0xffffffff0xffffffff0xffffffff0xffffffff
0x50:0xffffffff0xffffffff0xffffffff0xffffffff
0x60:0xffffffff0xffffffff0xffffffff0xffffffff
0x70:0xffffffff0xffffffff0xffffffff0xffffffff
(gdb)
</pre></div>


<p><br></p>
<h3 id="load-the-blinky-application-image">Load the Blinky Application Image</h3>
<p><br>
Run the <code>newt load rbnano2_blinky</code> command to load the Blinky application image onto the board:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%"><span></span>$ newt load rbnano2_blinky
Loading app image into slot 1
</pre></div>


<p>You should see a blue LED on the board blink!</p>
<p>Note: If the LED does not blink, try resetting your board.</p>
                        
                        <div class="row">
                            



<ul class="nav nav-pills" style="margin-bottom: 10px">
    <li>
    
    <a href=../nRF52/>
        <span class="fa fa-arrow-left"></span>
        Previous: Blinky on nRF52
    </a>
    
    </li>
    <li class="pull-right">
    
    <a href=../blinky_stm32f4disc/>
        Next: Blinky on STM32F4-Discovery
        <span class="fa fa-arrow-right"></span>
    </a>
    
    </li>
</ul>
                        </div>
                        <footer class="row">
    <div class="col-xs-12">
        
            <p class="copyright">Apache Mynewt (incubating) is available under Apache License, version 2.0.</p>
        
    </div>
    <div class="col-xs-12">
        <div class="logos">
            <img src="/img/asf_logo_wide_small.png" alt="Apache" title="Apache">
            <small class="footnote">
            Apache Mynewt, Mynewt, Apache, the Apache feather logo, and the Apache Mynewt project logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and other countries.
            </small>
             <a href="https://join.slack.com/mynewt/shared_invite/MTkwMTg1ODM1NTg5LTE0OTYxNzQ4NzQtZTU1YmNhYjhkMg">
                <img src="/img/add_to_slack.png" alt="Slack Icon" title="Join our Slack Community" />
             </a>
        </div>
    </div>
</footer>
                    </div>
                </div>
            
            
        </div>

        <script src="../../../js/jquery-1.10.2.min.js"></script>
        <script src="../../../js/bootstrap-3.0.3.min.js"></script>
        <script src="../../../js/highlight.pack.js"></script>
        <script src="../../../js/base.js"></script>
        <script src="../../../js/custom.js"></script>

    </body>
</html>