Table of Contents

libmaple

libmaple is a firmware library for the Leaflabs Maple mini and clones with STM32 CPUs.

The firmware library is built with this compiler. dfu-util is required to program the chip.

Download

Here we fetch the source to the maple libraries.

mkdir -p /embedded/arm-cortex/src
cd /embedded/arm-cortex/src
git clone https://github.com/leaflabs/libmaple.git
cd libmaple

Help

The help function of the make file gives us some clues about how to create our own projects with it.

make CROSS_COMPILE=/embedded/arm-cortex/gcc-arm-none-eabi-4_9-2015q1/bin/arm-none-eabi- help

Basic usage (BOARD defaults to maple):
    $ cp your-main.cpp main.cpp
    $ make BOARD=your_board
    $ make BOARD=your_board install

(Multiple source files? Link with libmaple.a (`$ make library')
or hack build-targets.mk appropriately.)

Important targets:
    sketch:   Compile for BOARD to MEMORY_TARGET (default).
    install:  Compile and upload over USB using Maple bootloader

You *must* set BOARD if not compiling for Maple (e.g.
use BOARD=maple_mini for mini, etc.), and MEMORY_TARGET
if not compiling to Flash. Run `$ make list-boards' for
a list of all boards.

Valid MEMORY_TARGETs (default=flash):
    ram:    Compile to RAM (doesn't touch Flash)
    flash:  Compile to Flash (for Maple bootloader)
    jtag:   Compile for JTAG/SWD upload (overwrites bootloader)

Other targets:
    clean: Remove all build and object files
    doxygen: Build Doxygen HTML and XML documentation
    help: Show this message
    mrproper: Remove all generated files

List boards

This function didn't list the boards correctly for me, so this is a sanitised listing.

make CROSS_COMPILE=/embedded/arm-cortex/gcc-arm-none-eabi-4_9-2015q1/bin/arm-none-eabi- list-boards
 cm900
 maple_mini
 maple
 maple_native
 maple_RET6
 nucleo
 olimex_stm32_h103
 opencm904
 st_stm3220g_eval
 VLDiscovery  

Demo

This is the standard LED demo for the Maple mini. You may wish to edit the example to create a blink unlike the default empty firmware blink to confirm that this is working.

cp examples/blinky.cpp main.cpp
make CROSS_COMPILE=/embedded/arm-cortex/gcc-arm-none-eabi-4_9-2015q1/bin/arm-none-eabi- BOARD=maple_mini install