# GEX Firmware for STM32F072 This is the STM32F072 GEX firmware, supporting all STM32F072 GEX boards (including the F072 Discovery). ## Links GEX repositories are mirrored on GitHub to make it easier to submit issues and propose improvements via "pull requests". **Please use the upstream repository** when cloning to ensure you have the latest version of the code. The mirrors are kept up-to-date, but they may fall behind. - [git.ondrovo.com/gex/gex-f072](https://git.ondrovo.com/gex/gex-f072) - upstream (F072) - [git.ondrovo.com/gex/gex-core](https://git.ondrovo.com/gex/gex-f072) - upstream (GexCore submodule) - [github.com/gexpander/gex-f072](https://github.com/gexpander/gex-f072) - GitHub mirror (F072) - [github.com/gexpander/gex-core](https://github.com/gexpander/gex-core) - GitHub mirror (GexCore submodule) ## Building the Firmware Make sure you clone the repository recursively (`git clone --recursive ...`), or run `git submodule update --init` afterwards, to initialize the GexCore submodule. In order to build the firmware, first copy the configuration file template `build.mk.example` to `build.mk`, modify as desired, then run `make` to build the binary image (see the Make Targets section below for more options). Individual GEX units can be enabled or disabled in `build.mk`, and the target platform (your GEX board model) is selected here as well. The config file is excluded from version control. ## Requirements Listed versions were used during development. Other (particularly newer) versions may work too, but without a guarantee. Please submit patches needed to fix incompatibilities, or at least let me know. - **arm-none-eabi-gcc** (v8.1) - **arm-none-eabi-binutils** (v2.30) - **arm-none-eabi-newlib** (v3.0) - **make** (GNU, v4.2) - **tr** (GNU coreutils 8.29 - but any version should work) - **dfu-util** (v0.9) for DFU flashing - **stlink** (texane, v1.5) for ST-Link flashing ## Make Targets - **make** - basic build (recommended to use with `-j` for faster builds) - **make flash** - flash using `st-flash` - **make dfu** - flash using `dfu-convert` and `dfu-util` - **make clean** - clean files generated during build All make targets depend on all Makefiles, meaning any modification triggers a full (`-B`) rebuild the next time you try to build or flash the firmware.