Blinky, your "Hello World!", on Olimex
--------------------------------------

This tutorial shows you how to create, build, and run the Blinky
application on an Olimex STM32-E407 board.

.. contents::
  :local:
  :depth: 2

Prerequisites
~~~~~~~~~~~~~

-  Meet the prerequisites listed in :doc:`Project Blinky <blinky>`.
-  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.
-  Install the :doc:`OpenOCD debugger <../../get_started/native_install/cross_tools>`.

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`_ if
you already created a project.

Run the following commands to create a new project:

.. code-block:: console

        $ mkdir ~/dev
        $ cd ~/dev
        $ newt new myproj
        Downloading project skeleton from apache/mynewt-blinky...
        Installing skeleton in myproj...
        Project myproj successfully created.

        $ cd myproj

        $ newt install
        apache-mynewt-core
        $

Create the Targets
~~~~~~~~~~~~~~~~~~

Create two targets for the Olimex board - one for the bootloader and one
for the Blinky application.

Run the following ``newt target`` commands, from your project directory,
to create a bootloader target. We name the target ``boot_olimex``.

.. code-block:: console

    $ newt target create boot_olimex
    $ newt target set boot_olimex build_profile=optimized
    $ 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

Run the following ``newt target`` commands to create a target for the
Blinky application. We name the target ``olimex_blinky``.

.. code-block:: console

    $ newt target create olimex_blinky
    $ newt target set olimex_blinky build_profile=debug
    $ newt target set olimex_blinky bsp=@apache-mynewt-core/hw/bsp/olimex_stm32-e407_devboard
    $ newt target set olimex_blinky app=apps/blinky

Build the Bootloader
~~~~~~~~~~~~~~~~~~~~

Run the ``newt build boot_olimex`` command to build the bootloader:

.. code-block:: console

    $ newt build boot_olimex
    Building target targets/boot_olimex
    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 bin/targets/boot_olimex/generated/src/boot_olimex-sysflash.c

         ...

    Archiving libc_baselibc.a
    Archiving sys_flash_map.a
    Archiving sys_mfg.a
    Archiving sys_sysinit.a
    Archiving util_mem.a
    Linking ~/dev/myproj/bin/targets/boot_olimex/app/apps/boot/boot.elf
    Target successfully built: targets/boot_olimex

Build the Blinky Application
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Run the ``newt build olimex_blinky`` command to build the blinky application:

.. code-block:: console

    $ newt build olimex_blinky
    Building target targets/olimex_blinky
    Assembling repos/apache-mynewt-core/hw/bsp/olimex_stm32-e407_devboard/src/arch/cortex_m4/startup_STM32F40x.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/olimex_stm32-e407_devboard/src/sbrk.c
    Compiling apps/blinky/src/main.c
    Compiling repos/apache-mynewt-core/hw/drivers/uart/uart_hal/src/uart_hal.c
    Compiling repos/apache-mynewt-core/hw/bsp/olimex_stm32-e407_devboard/src/hal_bsp.c
    Compiling repos/apache-mynewt-core/hw/bsp/olimex_stm32-e407_devboard/src/system_stm32f4xx.c
    Compiling repos/apache-mynewt-core/hw/hal/src/hal_common.c
    Compiling repos/apache-mynewt-core/hw/hal/src/hal_flash.c

       ...

    Archiving sys_mfg.a
    Archiving sys_sysinit.a
    Archiving util_mem.a
    Linking ~/dev/myproj/bin/targets/olimex_blinky/app/apps/blinky/blinky.elf
    Target successfully built: targets/olimex_blinky

Sign and Create the Blinky Application Image
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Run the ``newt create-image olimex_blinky 1.0.0`` command to sign and
create an image file for the blinky application. You may assign an
arbitrary version (e.g. 1.0.0) number.

.. code-block:: console

    $ newt create-image olimex_blinky 1.0.0
    App image succesfully generated: ~/dev/myproj/bin/targets/olimex_blinky/app/apps/blinky/blinky.img

Connect to the Board
~~~~~~~~~~~~~~~~~~~~

Configure the board to bootload from flash memory and to use USB-OTG2
for the power source. Refer to the following diagrams to locate the boot
jumpers and power input select jumpers on the board.

**Note:** The labels for the **USB-OTG1** and **USB-OTG2** ports on the
diagram are reversed. The port labeled USB-OTG1 on the diagram is the
USB-OTG2 port and the port labeled USB-OTG2 on the diagram is the
USB-OTG1 port.

.. figure:: ../pics/STM32-E407_top_small.jpg

.. figure:: ../pics/STM32-E407_bot_small.jpg

-  Locate the boot jumpers on the lower right corner of the board.
   **B1_1/B1_0** and **B0_1/B0_0** are PTH jumpers to control the
   boot mode when a bootloader is present. These two jumpers must be
   moved together. The board searches for the bootloader in three
   places: User Flash Memory, System Memory or the Embedded SRAM. For
   this Blinky project, we configure the board to boot from flash by
   jumpering **B0_0** and **B1_0**. **Note:** The markings on the
   board may not always be accurate, and you should always refer to the
   manual for the correct positioning.

-  Locate the **Power Input Select** jumpers on the lower left corner of
   the board. Set the Power Select jumpers to position 5 and 6 to use
   the USB-OTG2 port for the power source. If you would like to use a
   different power source, refer to the `OLIMEX STM32-E407 user
   manual <https://www.olimex.com/Products/ARM/ST/STM32-E407/resources/STM32-E407.pdf>`__
   for pin specifications.

-  Connect the USB Micro-A cable to the USB-OTG2 port on the board.

-  Connect the JTAG connector to the JTAG/SWD interface on the board.

-  Connect the USB A-B cable to the ARM-USB-TINY-H connector and your
   computer.

-  Check that the red PWR LED lights up.

Load the Bootloader and Blinky Application
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Run the ``newt load boot_olimex`` command to load the bootloader image
onto the board:

.. code-block:: console

    $ newt load -v boot_olimex
    Loading bootloader
    Load command: ~/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/targets/boot_olimex/app/apps/boot/boot
    Successfully loaded image.

Note: If you are using Windows and get a ``no device found`` error, you
will need to install the usb driver. Download
`Zadig <http://zadig.akeo.ie>`__ and run it:

-  Select Options > List All Devices.
-  Select ``Olimex OpenOCD JTAG ARM-USB-TINY-H`` from the drop down
   menu.
-  Select the ``WinUSB`` driver.
-  Click Install Driver.
-  Run the ``newt load boot_olimex`` command again.

Run the ``newt load olimex_blinky`` command to load the blinky
application image onto the board:

.. code-block:: console

    $ newt load -v olimex_blinky
    Loading app image into slot 1
    Load command: ~/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/targets/olimex_blinky/app/apps/blinky/blinky
    Successfully loaded image.

The LED should be blinking!

Let's double check that it is indeed booting from flash and making the
LED blink from the image in flash. Pull the USB cable off the Olimex
JTAG adaptor, severing the debug connection to the JTAG port. Next power
off the Olimex board by pulling out the USB cable from the board. Wait
for a couple of seconds and plug the USB cable back to the board.

The LED light will start blinking again. Success!

If you want to download the image to flash and open a gdb session, use
``newt debug blinky``.

**Note:** 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.

Type ``c`` to continue inside the gdb session.

.. code-block:: console

        $ newt debug blinky
        Debugging with ~/dev/myproj/hw/bsp/olimex_stm32-e407_...
        Debugging ~/dev/myproj/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: 0x08000250 msp: 0x10010000
        Info : accepting 'gdb' connection from 3333
        Info : device id = 0x10036413
        Info : flash size = 1024kbytes
        Reset_Handler () at startup_STM32F40x.s:199
        199     ldr    r1, =__etext
        (gdb)

If you want to erase the flash and load the image again you may use the
following commands from within gdb. ``flash erase_sector 0 0 x`` tells
it to erase sectors 0 through x. When you ask it to display (in hex
notation) the contents of the sector starting at location 'lma,' you
should see all f's. The memory location 0x8000000 is the start or origin
of the flash memory contents and is specified in the
olimex_stm32-e407_devboard.ld linker script. The flash memory
locations is specific to the processor.

.. code-block:: console

        (gdb) monitor flash erase_sector 0 0 4
        erased sectors 0 through 4 on flash bank 0 in 2.296712s
        (gdb) monitor mdw 0x08000000 16
        0x08000000: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
        (0x08000020: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
        (0x08000000: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
        (0x08000020: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
        (gdb) monitor flash info 0
