![](./docs/IMG_2915.jpg) ## Build environment On Ubuntu/Debian install * ``gcc-arm-none-eabi`` * ``openocd`` Alternatively use a prepared Docker image docker run -it --rm -u ${UID} -v ${PWD}:/mnt wollud1969/build-env-arm-none-eabi:1.1.0 bash Start the container from the project root. Or use the script ``startBuildEnv.sh`` from the tools directory. Get the STM32CubeMX tool from the ST homepage. You may use this [link](https://www.st.com/en/development-tools/stm32cubemx.html). ## Preparing generated code to include user code After code generation in CubeMX the ``Makefile`` and the file ``main.c`` in ``Core/Src`` needs to be edited to include user code. From the ``cube`` directory in the project root run: ../tools/insertMyCode.sh User code has to life in ``User/Src`` and ``User/Inc``. All ``*.c`` file from ``User/Src`` will be attached to the ``C_SOURCES`` variable in the ``Makefile``. ## Building From the ``cube`` directory in the project root simply run make ## Uploading to the target Start ``openocd`` from the project root using the existing configuration file (for derived projects adjust the configuration concerning the use MCU) openocd -f openocd.cfg Connect to the started ``openocd`` server using nc localhost 4444 To upload a built binary enter reset init reset halt flash write_image erase /home/wn/Workspaces/$PROJECT/cube/build/cube.elf reset run Make sure to use the absolute path. Alternatively, use the script ``upload.sh`` from the tools directory.