Skip to main content
With prerequisites in place, you are ready to build firmware.

List supported targets

Running make with no arguments prints the full list of supported boards:
make
You will see output similar to:
   [Firmware]
     fw   - Build firmware for default target
                            supported boards are: 100_250 100_250_no_limits 100_500 ...
     fw_<board>           - Build firmware for target <board>
     PROJECT=<target> fw  - Build firmware for <target>
     fw_<board>_clean     - Remove firmware for <board>
     fw_<board>_flash     - Use OpenOCD + SWD/JTAG to write firmware to <target>
Identify the target name that matches your hardware. For example, a Trampa VESC 100/250 uses the target 100_250.

Build for a specific target

make 100_250
Replace 100_250 with the name of your board from the supported boards list.

Build output

Compiled firmware is placed in the build/<target>/ directory:
build/
└── 100_250/
    ├── 100_250.bin
    ├── 100_250.elf
    └── ...
The .bin file is used for USB upload via VESC Tool. The .elf file is used when flashing with a SWD debugger.

Additional make targets

TargetDescription
makePrint the help and supported board list
make <board>Build firmware for <board>
make <board>_flashBuild and flash to <board> via SWD/JTAG
make <board>_cleanRemove build artifacts for <board>
make all_fwBuild firmware for all supported boards
make arm_sdk_installInstall the ARM GCC toolchain
make qt_installInstall Qt Creator IDE
Add V=1 to any make command to see the full compiler invocation:
make 100_250 V=1

Custom hardware

To build firmware for a custom hardware configuration, supply the hardware source and header file paths directly:
make fw_custom HW_SRC=/path/to/hw_custom.c HW_HEADER=/path/to/hw_custom.h
Corresponding clean and flash targets are also available:
make fw_custom_clean
make fw_custom_flash

Build options in conf_general.h

Additional compile-time options are available in conf_general.h. Notable options include:
  • DISABLE_HW_LIMITS — disables hardware-enforced limits on configuration parameters (commented out by default)
  • USER_MC_CONF — path to a custom motor controller configuration header
  • USER_APP_CONF — path to a custom application configuration header
Uncomment or define these values before building to apply them.