summaryrefslogtreecommitdiff
path: root/firmware/README.txt
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/README.txt')
-rw-r--r--firmware/README.txt54
1 files changed, 54 insertions, 0 deletions
diff --git a/firmware/README.txt b/firmware/README.txt
new file mode 100644
index 0000000..7257338
--- /dev/null
+++ b/firmware/README.txt
@@ -0,0 +1,54 @@
+
+
+---------------------
+ledcontrol / firmware
+---------------------
+
+This folder contains the firmware for the ledcontrol project. It assumes a
+STM32F103C8T6 microcontroller.
+
+
+Usage
+-----
+
+Install the necessary software. For Arch Linux this works like this:
+
+ sudo pacman -S \
+ base-devel \
+ arm-none-eabi-binutils \
+ arm-none-eabi-gcc \
+ arm-none-eabi-gdb \
+ arm-none-eabi-newlib
+
+Clone this repository with all Git submodules:
+
+ git clone --recurse-submodules https://cgit.xengineering.eu/ledcontrol
+
+Enter the repository and build the software:
+
+ cd ledcontrol
+ make
+
+Connect your STM32F103C8T6 with an STLINK V2 debugger and flash the firmware:
+
+ bash ocd.sh
+ # switch to a second terminal in the same folder
+ bash gdb.sh build/ledcontrol.elf
+ load
+ run
+ # CTRL + C will stop the execution
+ # leave GDB with CTRL + D
+
+Mention that you do not have to quit GDB to upload new compiled firmware. Just
+call `load` and `run` again.
+
+
+External References
+-------------------
+
+- tutorial about C programs on bare-metal ARM chips:
+ https://jacobmossberg.se/posts/2018/08/11/run-c-program-bare-metal-on-arm-cortex-m3.html
+- tutorial about STM32 programming with libopencm3:
+ https://www.rhye.org/post/stm32-with-opencm3-0-compiling-and-uploading/
+- PWM example from the libopencm3 project:
+ https://github.com/libopencm3/libopencm3-examples/blob/master/examples/stm32/f1/obldc/pwmleds/pwmleds.c