Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/libopencm3/libopencm3-examples
Simple example projects showing how to use libopencm3.
https://github.com/libopencm3/libopencm3-examples
Last synced: 18 days ago
JSON representation
Simple example projects showing how to use libopencm3.
- Host: GitHub
- URL: https://github.com/libopencm3/libopencm3-examples
- Owner: libopencm3
- Created: 2013-04-20T02:27:12.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2024-03-27T14:28:38.000Z (8 months ago)
- Last Synced: 2024-07-31T22:45:40.112Z (3 months ago)
- Language: Makefile
- Size: 990 KB
- Stars: 484
- Watchers: 55
- Forks: 327
- Open Issues: 61
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# README
[![Build Status](https://travis-ci.org/libopencm3/libopencm3-examples.svg?branch=master)](https://travis-ci.org/libopencm3/libopencm3-examples)[![Gitter channel](https://badges.gitter.im/libopencm3/discuss.svg)](https://gitter.im/libopencm3/discuss)
This repository contains assorted example projects for libopencm3.
The libopencm3 project aims to create an open-source firmware library for
various ARM Cortex-M microcontrollers.For more information visit http://libopencm3.org
The examples are meant as starting points for different subsystems on multitude
of platforms. If you're just looking to test your build environment and hardware,
the [libopencm3-miniblink](https://github.com/libopencm3/libopencm3-miniblink)
may be more useful, as it covers _many_ more boards, but it is much more limited.Feel free to add new examples and send them to us either via the mailinglist or
preferably via a github pull request.## Usage
You _must_ run "make" in the top level directory first. This builds the
library and all examples. If you're simply hacking on a single example after
that, you can type "make clean; make" in any of the individual project
directories later.For more verbose output, to see compiler command lines, use "make V=1"
For insanity levels of verboseness, use "make V=99"The makefiles are generally useable for your own projects with
only minimal changes for the libopencm3 install path (See Reuse)## Make Flash Target
Please note, the "make flash" target is complicated and not always self-consistent. Please see: https://github.com/libopencm3/libopencm3-examples/issues/34
For flashing the 'miniblink' example (after you built libopencm3 and the
examples by typing 'make' at the top-level directory) onto the Olimex
STM32-H103 eval board (ST STM32F1 series microcontroller), you can execute:cd examples/stm32/f1/stm32-h103/miniblink
make flash V=1The Makefiles of the examples are configured to use a certain OpenOCD
flash programmer, you might need to change some of the variables in the
Makefile if you use a different one.To program via a Black Magic Probe, simply provide the serial port, eg:
cd examples/stm32/f1/stm32-h103/miniblink
make flash BMP_PORT=/dev/ttyACM0To program via texane/stlink (st-flash utility), use the special target:
cd examples/stm32/f1/stm32vl-discovery/miniblink
make miniblink.stlink-flashIf you rather use GDB to connect to the st-util you can provide the STLINK\_PORT
to the flash target.cd examples/stm32/f1/stm32vl-discovery/miniblink
make flash STLINK_PORT=:4242## Flashing Manually
You can also flash manually. Using a miriad of different tools depending on
your setup. Here are a few examples.### OpenOCD
openocd -f interface/jtagkey-tiny.cfg -f target/stm32f1x.cfg
telnet localhost 4444
reset halt
flash write_image erase foobar.hex
resetReplace the "jtagkey-tiny.cfg" with whatever JTAG device you are using, and/or
replace "stm32f1x.cfg" with your respective config file. Replace "foobar.hex"
with the file name of the image you want to flash.### Black Magic Probe
cd examples/stm32/f1/stm32vl-discovery/miniblink
arm-none-eabi-gdb miniblink.elf
target extended_remote /dev/ttyACM0
monitor swdp_scan
attach 1
load
runTo exit the gdb session type `-C` and `-D`. It is useful to add the
following to the .gdbinit to make the flashing and debugging easier:set target-async on
set confirm off
set mem inaccessible-by-default off
#set debug remote 1
tar ext /dev/ttyACM0
mon version
mon swdp_scan
att 1Having this in your .gdbinit boils down the flashing/debugging process to:
cd examples/stm32/f1/stm32vl-discovery/miniblink
arm-none-eabi-gdb miniblink.elf
load
run### ST-Link (st-util)
This example uses the st-util by texane that you can find on [GitHub](https://github.com/texane/stlink).
cd examples/stm32/f1/stm32vl-discovery/miniblink
arm-none-eabi-gdb miniblink.elf
target extended-remote :4242
load
run## Reuse
If you want to use libopencm3 in your own project, the _easiest_ way is
to use the template repository we created for this purpose.See https://github.com/libopencm3/libopencm3-template