summaryrefslogtreecommitdiff
path: root/firmware/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/README.md')
-rw-r--r--firmware/README.md48
1 files changed, 48 insertions, 0 deletions
diff --git a/firmware/README.md b/firmware/README.md
new file mode 100644
index 0000000..1fee659
--- /dev/null
+++ b/firmware/README.md
@@ -0,0 +1,48 @@
+
+# ledcontrol
+
+A firmware project for the STM32F103C8T6 to control LED strips.
+
+## 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
+
+- Nice [tutorial](https://jacobmossberg.se/posts/2018/08/11/run-c-program-bare-metal-on-arm-cortex-m3.html) about C programs on bare-metal ARM chips
+- Another useful [tutorial](https://www.rhye.org/post/stm32-with-opencm3-0-compiling-and-uploading/) about STM32 programming with libopencm3
+- A nice [PWM example](https://github.com/libopencm3/libopencm3-examples/blob/master/examples/stm32/f1/obldc/pwmleds/pwmleds.c) from the libopencm3 project
+