==== libmaple ==== libmaple is a firmware library for the Leaflabs [[:boards:maple|Maple mini]] and clones with STM32 CPUs. The firmware library is built with [[:tools:gccarm|this]] compiler. [[:tools:dfu-util|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 [[:boards:maple|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