Blinky, your "Hello World!", on STM32F4-Discovery
-------------------------------------------------

This tutorial shows you how to create, build, and run the Blinky
application on the STM32F4-Discovery board.

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

-  Meet the prerequisites listed in :doc:`Project Blinky <blinky>`.
-  Have a STM32F4-Discovery board.
-  Have a USB type A to Mini-B cable.
-  Install a patched version of OpenOCD 0.10.0 described in :doc:`Install OpenOCD <../../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 have a project created.

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 upgrade
        Downloading repository mynewt-core (commit: master) ...
        apache-mynewt-core successfully upgraded to version 1.7.0
        $

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

Create two targets for the STM32F4-Discovery 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 ``stm32f4disc_boot``:

.. code-block:: console

    $ newt target create stm32f4disc_boot
    $ newt target set stm32f4disc_boot app=@mcuboot/boot/mynewt
    $ newt target set stm32f4disc_boot bsp=@apache-mynewt-core/hw/bsp/stm32f4discovery
    $ newt target set stm32f4disc_boot build_profile=optimized

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

.. code-block:: console

    $ newt target create stm32f4disc_blinky
    $ newt target set stm32f4disc_blinky app=apps/blinky
    $ newt target set stm32f4disc_blinky bsp=@apache-mynewt-core/hw/bsp/stm32f4discovery
    $ newt target set stm32f4disc_blinky build_profile=debug

You can run the ``newt target show`` command to verify the target
settings:

.. code-block:: console

    $ newt target show
    targets/my_blinky_sim
        app=apps/blinky
        bsp=@apache-mynewt-core/hw/bsp/native
        build_profile=debug
    targets/stm32f4disc_blinky
        app=apps/blinky
        bsp=@apache-mynewt-core/hw/bsp/stm32f4discovery
        build_profile=debug
    targets/stm32f4disc_boot
        app=@mcuboot/boot/mynewt
        bsp=@apache-mynewt-core/hw/bsp/stm32f4discovery
        build_profile=optimized

Build the Target Executables
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

.. code-block:: console

    $ newt build stm32f4disc_boot
    Building target targets/stm32f4disc_boot
    Compiling repos/mcuboot/boot/bootutil/src/image_ec.c
    Compiling repos/mcuboot/boot/bootutil/src/image_ec256.c
    Compiling repos/mcuboot/boot/bootutil/src/bootutil_misc.c
    Compiling repos/mcuboot/boot/mynewt/src/main.c
    Compiling repos/mcuboot/boot/bootutil/src/image_rsa.c
    Compiling repos/mcuboot/boot/bootutil/src/image_validate.c
    Compiling repos/mcuboot/boot/bootutil/src/loader.c

        ...

    Archiving sys_flash_map.a
    Archiving sys_mfg.a
    Archiving sys_sysinit.a
    Archiving util_mem.a
    Linking ~/dev/myproj/bin/targets/stm32f4disc_boot/app/boot/mynwet/mynewt.elf
    Target successfully built: targets/stm32f4disc_boot

Run the ``newt build stm32f4disc_blinky`` command to build the Blinky
application:

.. code-block:: console

    $newt build stm32f4disc_blinky
    Building target targets/stm32f4disc_blinky
    Compiling apps/blinky/src/main.c
    Compiling repos/apache-mynewt-core/hw/bsp/stm32f4discovery/src/sbrk.c
    Compiling repos/apache-mynewt-core/hw/bsp/stm32f4discovery/src/system_stm32f4xx.c
    Compiling repos/apache-mynewt-core/hw/bsp/stm32f4discovery/src/hal_bsp.c
    Assembling repos/apache-mynewt-core/hw/bsp/stm32f4discovery/src/arch/cortex_m4/startup_STM32F40x.s
    Compiling repos/apache-mynewt-core/hw/cmsis-core/src/cmsis_nvic.c
    Compiling repos/apache-mynewt-core/hw/drivers/uart/src/uart.c
    Compiling repos/apache-mynewt-core/hw/drivers/uart/uart_hal/src/uart_hal.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_sysinit.a
    Archiving util_mem.a
    Linking ~/dev/myproj/bin/targets/stm32f4disc_blinky/app/apps/blinky/blinky.elf
    Target successfully built: targets/stm32f4disc_blinky

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

Run the ``newt create-image stm32f4disc_blinky 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.

.. code-block:: console

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

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

Connect a USB type A to Mini-B cable from your computer to the port the
board indicated on the diagram:

.. figure:: ../pics/stm32f4_disc.jpg

You should see the small PWR red LED light up.

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

Run the ``newt load stm32f4disc_boot`` command to load the bootloader
onto the board:

.. code-block:: console

    $ newt load stm32f4disc_boot
    Loading bootloader

Note: If you are using Windows and get an ``open failed`` or
``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 ``STM32 STLink`` from the drop down menu.
-  Select the ``WinUSB`` driver.
-  Click Install Driver.
-  Run the ``newt load stm32f4disc_boot`` command again.

Note: If you are running Linux and get an ``open failed`` message, there
are two common issues with this board. If you have a board produced
before mid-2016, it is likely that you have an older version of the
ST-LINK programmer. To correct this, open the
``repos/apache-mynewt-core/hw/bsp/stm32f4discovery/f4discovery.cfg``
file in a text editor, and change the line:

.. code-block:: console

    source [find interface/stlink-v2-1.cfg]

to:

.. code-block:: console

    source [find interface/stlink-v2.cfg]

If you receive an error like
``libusb_open() failed with LIBUSB_ERROR_ACCESS``, it means that your
``udev`` rules are not correctly set up for this device. You can find
some example ``udev`` rules for ST-LINK programmers
`here <https://github.com/texane/stlink/tree/master/etc/udev/rules.d>`__.

Run the ``newt load stm32f4disc_blinky`` command to load the Blinky
application image onto the board.

.. code-block:: console

    $ newt load stm32f4disc_blinky
    Loading app image into slot 1

You should see the small green LD4 LED on the board blink!

Note: If the LED does not blink, try resetting your board.

If you want to erase the flash and load the image again, start a debug
session, and enter ``mon  stm32f2x mass_erase 0`` at the gdb prompt:

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

.. code-block:: console

    $ newt debug stm32f4disc_blinky
    [~/dev/myproj/repos/apache-mynewt-core/hw/bsp/stm32f4discovery/stm32f4discovery_debug.sh ~/dev/myproj/repos/apache-mynewt-core/hw/bsp/stm32f4discovery ~/dev/myproj/bin/targets/stm32f4disc_blinky/app/apps/blinky/blinky]
    Open On-Chip Debugger 0.10.0
    Licensed under GNU GPL v2
    For bug reports, read
            http://openocd.org/doc/doxygen/bugs.html
    Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
    adapter speed: 2000 kHz
    adapter_nsrst_delay: 100
    none separate
    Info : Unable to match requested speed 2000 kHz, using 1800 kHz
    Info : Unable to match requested speed 2000 kHz, using 1800 kHz
    Info : clock speed 1800 kHz
    Info : STLINK v2 JTAG v25 API v2 SWIM v14 VID 0x0483 PID 0x374B
    Info : using stlink api v2
    Info : Target voltage: 2.881129
    Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints
    target halted due to debug-request, current mode: Thread

               ...

    Reading symbols from ~/dev/myproj/bin/targets/stm32f4disc_blinky/app/apps/blinky/blinky.elf...done.
    target halted due to debug-request, current mode: Thread
    xPSR: 0x41000000 pc: 0x08021e90 psp: 0x20002290
    Info : accepting 'gdb' connection on tcp/3333
    Info : device id = 0x10076413
    Info : flash size = 1024kbytes
    0x08021e90 in __WFI () at repos/apache-mynewt-core/hw/cmsis-core/src/ext/core_cmInstr.h:342
    342       __ASM volatile ("wfi");
    (gdb) mon stm32f2x mass_erase 0
    stm32x mass erase complete
    stm32x mass erase complete
    (gdb)
