We currently pass the -D (do not erase) option to avrdude unconditionally in order to work around an Arduino Mega bootloader bug. However, this has the side-effect of breaking the ispload target for all non-XMEGA chips, since a write operation on these chips essentially ANDs the new program with the existing memory contents. If the memory is not first erased to contain only 0xff, the resulting image is garbage. This patch makes it so we pass -D when we're using the Arduino bootloader but don't pass it when we're using ISP directly.
18 KiB
Documentation of variables
The following are the different variables that can be overwritten in the user makefiles.
- Global variables
- Installation/Directory variables
- Arduino IDE variables
- Sketch related variables
- ISP programming variables
- Compiler/Executable variables
- Avrdude setting variables
- Bootloader variables
- ChipKIT variables
Global variables
ARDUINO_QUIET
Description:
Suppress printing of Arduino-Makefile configuration.
Defaults to 0
(unset/disabled).
Example:
ARDUINO_QUIET = 1
Requirement: Optional
Installation/Directory variables
ARDMK_DIR
Description:
Directory where the *.mk
files are stored.
Usually can be auto-detected as AUTO_ARDUINO_DIR
(parent of Arduino.mk
).
Example:
ARDMK_DIR = /usr/share/arduino
Requirement: Optional
AVR_TOOLS_DIR
Description:
Directory where tools such as avrdude
, avr-g++
, avr-gcc
, etc. are stored in the bin/
subdirectory.
Usually can be auto-detected from $PATH
as SYSTEMPATH_AVR_TOOLS_DIR
or as BUNDLED_AVR_TOOLS_DIR
within the Arduino distribution.
Example:
AVR_TOOLS_DIR = /usr
# or
AVR_TOOLS_DIR = /usr/share/arduino/hardware/tools/avr
Requirement: Optional
RESET_CMD
Description:
Command to reset the MCU.
Defaults to ard-reset-arduino
with the extra --caterina
flag for atmega32u4 boards.
Example:
RESET_CMD = ~/gertduino/reset
Requirement: Optional
Arduino IDE variables
ARDUINO_DIR
Description:
Directory where the Arduino IDE and/or core files are stored.
Example:
# Linux
ARDUINO_DIR = /usr/share/arduino
# Mac OS X
ARDUINO_DIR = /Applications/Arduino.app/Contents/Resources/Java
Requirement: Optional
ARDUINO_PLATFORM_LIB_PATH
Description:
Directory where the Arduino platform dependent libraries are stored. (Used only for Arduino 1.5.x)
Example:
ARDUINO_PLATFORM_LIB_PATH = /usr/share/arduino/hardware/arduino/avr/libraries
Requirement: Optional
ARDUINO_VERSION
Description:
Version string for Arduino IDE and/or core.
Usually can be auto-detected as AUTO_ARDUINO_VERSION
from /usr/share/arduino/lib/version.txt
Example:
ARDUINO_VERSION = 105
Requirement: Optional
ARCHITECTURE
Description:
Architecture for Arduino 1.5
Defaults to unset for 1.0 or avr
for 1.5
Example:
ARCHITECTURE = sam
Requirement: Optional
VENDOR
Description:
Board vendor/maintainer.
Defaults to arduino
Example:
VENDOR = sparkfun
Requirement: Optional
ARDUINO_SKETCHBOOK
Description:
Path to sketchbook
directory.
Usually can be auto-detected from the Arduino preferences.txt
file or the default ~/sketchbook
Example:
ARDUINO_SKETCHBOOK = ~/sketches
Requirement: Optional
ARDUINO_PREFERENCES_PATH
Description:
Path to Arduino preferences.txt
file.
Usually can be auto-detected as AUTO_ARDUINO_PREFERENCES
from the defaults:
- on Linux :
~/.arduino/preferences.txt
- on Mac OS X :
~/Library/Arduino/preferences.txt
Example:
ARDUINO_PREFERENCES_PATH = ~/sketches/preferences.txt
Requirement: Optional
ARDUINO_CORE_PATH
Description:
Path to standard Arduino core files.
Example:
ARDUINO_CORE_PATH = /usr/share/arduino/hardware/arduino/cores/arduino
Requirement: Optional
Sketch related variables
ARDUINO_LIBS
Description:
Any libraries you intend to include.
Usually can be auto-detected from the sketch. Separated by spaces. If the library has a /utility
folder (like SD
or Wire
library), then the utility folder should also be specified.
Example:
ARDUINO_LIBS = SD SD/utility Wire Wire/utility
Requirement: Optional
BOARD_TAG
Description:
Device type as listed in boards.txt
or make show_boards
.
Example:
BOARD_TAG = uno or mega2560
Requirement: Mandatory
BOARD_SUB
Description:
1.5 submenu as listed in boards.txt
Example:
# diecimila.name=Arduino Duemilanove or Diecimila
BOARD_TAG=diecimila
# diecimila.menu.cpu.atmega168=ATmega168
BOARD_SUB=atmega168
Requirement: Mandatory for 1.5 if using a submenu CPU
MONITOR_PORT
Description:
Path to serial (USB) device used for uploading/serial comms.
Example:
# Linux
MONITOR_PORT = /dev/ttyUSB0
# or
MONITOR_PORT = /dev/ttyACM0
# Mac OS X
MONITOR_PORT = /dev/cu.usb*
# Windows
MONITOR_PORT = com3
Requirement: Mandatory
USER_LIB_PATH
Description:
Directory where additional libraries are stored.
Defaults to libraries
directory within user's sketchbook.
Example:
# Linux
USER_LIB_PATH = ~/sketchbook/libraries
# For a random project on *nix
USER_LIB_PATH = /path/to/my/project
Requirement: Optional
OBJDIR
Description:
Directory where binaries and compiled files are put.
Defaults to build-$(BOARD_TAG)
in your Makefile
directory.
Example:
OBJDIR = /path/to/my/project-directory/bin
Requirement: Optional
ALTERNATE_CORE
Description:
Non-standard core for Arduino-unsupported chips like the ATtiny.
Example:
# HLT core
ALTERNATE_CORE = attiny-master
# tiny core
ALTERNATE_CORE = arduino-tiny
# tiny core 2
ALTERNATE_CORE = tiny2
Requirement: Optional
ARDUINO_VAR_PATH
Description:
Path to non-standard core's variant files.
Example:
ARDUINO_VAR_PATH = ~/sketchbook/hardware/arduino-tiny/cores/tiny
Requirement: Optional
VARIANT
Description:
Variant of a standard board design.
Usually can be auto-detected as build.variant
from boards.txt
.
Example:
VARIANT = leonardo
Requirement: Optional
USB_VID
Description:
Override USB VID
for atmega32u4 boards.
Usually can be auto-detected as build.vid
from boards.txt
Example:
USB_VID = 0x2341
Requirement: Optional
USB_PID
Description:
Override USB PID
for atmega32u4 boards.
Usually can be auto-detected as build.pid
from boards.txt
Example:
USB_PID = 0x8039
Requirement: Optional
F_CPU
Description:
CPU speed in Hz
Usually can be auto-detected as build.f_cpu
from boards.txt
Example:
F_CPU = 8000000L
Requirement: Optional
HEX_MAXIMUM_SIZE
Description:
Maximum hex file size
Usually can be auto-detected as upload.maximum_size
from boards.txt
Example:
HEX_MAXIMUM_SIZE = 14336
Requirement: Optional
MCU
Description:
Microcontroller model.
Usually can be auto-detected as build.mcu
from boards.txt
Example:
MCU = atmega32u4
Requirement: Optional
MCU_FLAG_NAME
Description:
Override default MCU flags.
Defaults to mmcu
Example:
MCU_FLAG_NAME = mprocessor
Requirement: Optional
MONITOR_BAUDRATE
Description:
Baudrate of the serial monitor.
Defaults to 9600
if it can't find it in the sketch Serial.begin()
Example:
MONITOR_BAUDRATE = 57600
Requirement: Optional
ISP programming variables
ISP_PROG
Description:
Type of ISP. Either a USB device or ArduinoISP protocol.
Example:
ISP_PROG = usbasp
# or
ISP_PROG = usbtiny
# or
ISP_PROG = stk500v2
# or
ISP_PROG = stk500v1
Requirement: Optional
ISP_PORT
Description:
Device path to ArduinoISP. Not needed for hardware ISP's.
Example:
# Linux
ISP_PORT = /dev/ttyACM0
Requirement: Optional
ISP_LOCK_FUSE_PRE
Description:
Bootloader unlock bits.
Usually can be auto-detected from boards.txt
Example:
ISP_LOCK_FUSE_PRE = 0x3f
Requirement: Optional
ISP_LOCK_FUSE_POST
Description:
Bootloader lock bits.
Usually can be auto-detected from boards.txt
Example:
ISP_LOCK_FUSE_POST = 0xcf
Requirement: Optional
ISP_HIGH_FUSE
Description:
ISP_LOW_FUSE/ISP_EXT_FUSE
- high/low/extended fuse bits.
Usually can be auto-detected from boards.txt
Example:
ISP_HIGH_FUSE = 0xdf # or 0xff or 0x01
Requirement: Optional
ISP_EEPROM
Description:
Whether to upload the EEPROM file or not.
Defaults to 0
Example:
ISP_EEPROM = 1
Requirement: Optional
Compiler/Executable variables
CC_NAME
Description:
C compiler.
Defaults to avr-gcc
Example:
CC_NAME = pic32-gcc
Requirement: Optional
CXX_NAME
Description:
C++ compiler.
Defaults to avr-g++
Example:
CXX_NAME = pic32-g++
Requirement: Optional
OBJCOPY_NAME
Description:
Objcopy utility.
Defaults to avr-objcopy
Example:
OBJCOPY_NAME = pic32-objcopy
Requirement: Optional
OBJDUMP_NAME
Description:
Objdump utility.
Defaults to avr-objdump
Example:
OBJDUMP_NAME = pic32-objdump
Requirement: Optional
AR_NAME
Description:
Archive utility.
Defaults to avr-ar
Example:
AR_NAME = pic32-ar
Requirement: Optional
SIZE_NAME
Description:
Size utility.
Defaults to avr-size
Example:
SIZE_NAME = pic32-size
Requirement: Optional
NM_NAME
Description:
Nm utility.
Defaults to avr-nm
Example:
NM_NAME = pic32-nm
Requirement: Optional
OPTIMIZATION_LEVEL
Description:
Linker's -O
flag
Defaults to s
, which shouldn't really be changed as it breaks SoftwareSerial
and usually results in bigger hex files.
Example:
OPTIMIZATION_LEVEL = 3
Requirement: Optional
CFLAGS_STD
Description:
Controls, exclusively, which C standard is to be used for compilation.
Defaults to undefined
Possible values:
- With
avr-gcc 4.3
, shipped with the Arduino IDE:undefined
-std=c99
-std=gnu89
- This is the default for C code-std=gnu99
- With
avr-gcc 4.7, 4.8 or 4.9
, installed by youundefined
-std=c99
-std=c11
-std=gnu89
- This is the default for C code-std=gnu99
-std=gnu11
For more information, please refer to the Options Controlling C Dialect
Example:
CFLAGS_STD = = -std=gnu89
Requirement: Optional
CXXFLAGS_STD
Description:
Controls, exclusively, which C++ standard is to be used for compilation.
Defaults to undefined
Possible values:
- With
avr-gcc 4.3
, shipped with the Arduino IDE:undefined
-std=c++98
-std=c++0x
-std=gnu++98
- This is the default for C code-std=gnu++0x
- With
avr-gcc 4.7, 4.8 or 4.9
, installed by youundefined
-std=c++98
-std=c++11
-std=c++1y
-std=c++14
-std=gnu++98
- This is the default for C++ code-std=gnu++11
-std=gnu++1y
-std=gnu++14
For more information, please refer to the Options Controlling C Dialect
Example:
CXXFLAGS_STD = = -std=gnu++98
Requirement: Optional
CFLAGS
Description:
Flags passed to compiler for files compiled as C. Add more flags to this
variable using +=
.
Defaults to all flags required for a typical build.
Example:
CFLAGS += -my-c-only-flag
Requirement: Optional
CXXFLAGS
Description:
Flags passed to the compiler for files compiled as C++. Add more flags to this
variable using +=
.
Defaults to all flags required for a typical build.
Example:
CXXFLAGS += -my-c++-onlyflag
Requirement: Optional
ASFLAGS
Description:
Flags passed to compiler for files compiled as assembly (e.g. .S
files). Add
more flags to this variable using +=
.
Defaults to all flags required for a typical build.
Example:
ASFLAGS += -my-as-only-flag
Requirement: Optional
CPPFLAGS
Description:
Flags passed to the C pre-processor (for C, C++ and assembly source flies). Add
more flags to this variable using +=
.
Defaults to all flags required for a typical build.
Example:
CPPFLAGS += -DMY_DEFINE_FOR_ALL_SOURCE_TYPES
Requirement: Optional
OVERRIDE_EXECUTABLES
Description:
Override the default build tools.
If set to 1
, each tool (CC
, CXX
, AS
, OBJCOPY
, OBJDUMP
, AR
, SIZE
, NM
) must have its path explicitly defined. See chipKIT.mk
.
Example:
OVERRIDE_EXECUTABLES = 1
Requirement: Optional
MONITOR_CMD
Description:
Command to run the serial monitor.
Defaults to screen
Example:
MONITOR_CMD = minicom
Requirement: Optional
PRE_BUILD_HOOK
Description:
Path to shell script to be executed before build. Could be used to automatically bump revision number for example.
Defaults to pre-build-hook.sh
Example:
PRE_BUILD_HOOK = ~/bin/bump-revision.sh
Requirement: Optional
Avrdude setting variables
AVRDUDE
Description:
Path to avrdude
utility
Usually can be auto-detected within the parent of AVR_TOOLS_DIR
or in the $PATH
Example:
AVRDUDE = /usr/bin/avrdude
Requirement: Optional
AVRDUDE_CONF
Description:
Path to avrdude.conf
file
Usually can be auto-detected within the parent of AVR_TOOLS_DIR
Example:
AVRDUDE_CONF = /etc/avrdude.conf
# or
AVRDUDE_CONF = /usr/share/arduino/hardware/tools/avrdude.conf
Requirement: Optional
AVR_TOOLS_PATH
Description:
Directory where tools such as avrdude
, avr-g++
, avr-gcc
etc. are stored.
Usually can be auto-detected from AVR_TOOLS_DIR/bin
Example:
AVR_TOOLS_PATH = /usr/bin
# or
AVR_TOOLS_PATH = /usr/share/arduino/hardware/tools/avr/bin
Requirement: Optional
ARDUINO_LIB_PATH
Description:
Directory where the standard Arduino libraries are stored.
Defaults to ARDUINO_DIR/libraries
Example:
# Linux
ARDUINO_LIB_PATH = /usr/share/arduino/libraries
Requirement: Optional
ARDUINO_CORE_PATH
Description:
Directory where the standard Arduino cores are stored.
Defaults to ARDUINO_DIR/hardware/arduino/cores/arduino
Example:
ARDUINO_CORE_PATH = /usr/share/arduino/hardware/arduino/cores/robot
Requirement: Optional
ALTERNATE_CORE_PATH
Description:
Path to non-standard cores.
Defaults to ARDUINO_SKETCHBOOK/hardware/ALTERNATE_CORE
Example:
ALTERNATE_CORE_PATH = ~/sketchbook/hardware/arduino-tiny/cores/tiny
Requirement: Optional
BOARDS_TXT
Description:
Path to boards.txt
Defaults to ARDUINO_DIR/hardware/arduino/boards.txt
Example:
BOARD_TXT = ~/sketchbook/hardware/boards.txt
# or
BOARD_TXT = /usr/share/arduino/hardware/arduino/boards.txt
Requirement: Optional
AVRDUDE_ARD_BAUDRATE
Description:
Upload speed
Usually can be auto-detected as upload.speed
from boards.txt
Example:
AVRDUDE_ARD_BAUDRATE = 19200
Requirement: Optional
AVRDUDE_ARD_PROGRAMMER
Description:
Upload protocol
Usually can be auto-detected as upload.protocol
from boards.txt
Example:
AVRDUDE_ARD_PROGRAMMER = stk500v1
Requirement: Optional
AVRDUDE_ISP_BAUDRATE
Description:
ISP speed if different to upload.speed
Defaults to same as AVRDUDE_ARD_BAUDRATE
or 19200
Example:
AVRDUDE_ISP_BAUDRATE = 19200
Requirement: Optional
AVRDUDE_OPTS
Description:
Options to pass to avrdude
.
Defaults to -q -V
(quiet, don't verify). User values are not ANDed to the defaults, you have to set each option you require.
Example:
AVRDUDE_OPTS = -v
Requirement: Optional
Bootloader variables
BOOTLOADER_FILE
Description:
File for bootloader.
Usually can be auto-detected as bootloader.file
from boards.txt
Example:
BOOTLOADER_FILE = optiboot_atmega328.hex
Requirement: Optional
BOOTLOADER_PATH
Description:
Relative path to bootloader directory.
Usually can be auto-detected as a relative bootloader.path
from boards.txt
Deprecated in 1.5, now part of bootloader.file
Example:
BOOTLOADER_PATH = optiboot
# or
BOOTLOADER_PATH = arduino:atmega
Requirement: Optional
BOOTLOADER_PARENT
Description:
Absolute path to bootloader file's parent directory.
Defaults to /usr/share/arduino/hardware/arduino/bootloaders
(Linux)
Example:
BOOTLOADER_PARENT = ~/sketchbook/hardware/promicro/bootloaders
BOOTLOADER_PATH = caterina
BOOTLOADER_FILE = Caterina-promicro16.hex
Would result in an absolute path to the bootloader hex file of ~/sketchbook/hardware/promicro/bootloaders/caterina/Caterina-promicro16.hex
Requirement: Optional, unless BOOTLOADER_FILE and/or BOOTLOADER_PATH are user-defined
ChipKIT variables
MPIDE_DIR
Description:
Path to chipKIT MP IDE
Usually can be auto-detected as AUTO_MPIDE_DIR
from the defaults /usr/share/mpide
(Linux) or /Applications/Mpide.app/Contents/Resources/Java
(OSX)
Example:
MPIDE_DIR = ~/mpide
Requirement: Optional
MPIDE_PREFERENCES_PATH
Description:
Path to chipKIT preferences.txt
file.
Usually can be auto-detected as AUTO_MPIDE_PREFERENCES_PATH
from the defaults ~/.mpide/preferences.txt
(Linux) or ~/Library/Mpide/preferences.txt
(OSX)
Example:
MPIDE_PREFERENCES_PATH = ~/chipkit/preferences.txt
Requirement: Optional