0% found this document useful (0 votes)
47 views4 pages

Platform

This document contains the core configuration and recipes for compiling, uploading, and programming code on Arduino AVR boards. It defines the compiler flags, tools, and patterns used to build and upload code to AVR microcontrollers from Arduino IDEs and command line interfaces.

Uploaded by

Julio Mozzi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
47 views4 pages

Platform

This document contains the core configuration and recipes for compiling, uploading, and programming code on Arduino AVR boards. It defines the compiler flags, tools, and patterns used to build and upload code to AVR microcontrollers from Arduino IDEs and command line interfaces.

Uploaded by

Julio Mozzi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 4

# Arduino AVR Core and platform.

# ------------------------------
#
# For more info:
# https://arduino.github.io/arduino-cli/latest/platform-specification/

name=Arduino AVR Boards


version=1.8.5

# AVR compile variables


# ---------------------

compiler.warning_flags=-w
compiler.warning_flags.none=-w
compiler.warning_flags.default=
compiler.warning_flags.more=-Wall
compiler.warning_flags.all=-Wall -Wextra

# Default "compiler.path" is correct, change only if you want to override the


initial value
compiler.path={runtime.tools.avr-gcc.path}/bin/
compiler.c.cmd=avr-gcc
compiler.c.flags=-c -g -Os {compiler.warning_flags} -std=gnu11 -ffunction-sections
-fdata-sections -MMD -flto -fno-fat-lto-objects
compiler.c.elf.flags={compiler.warning_flags} -Os -g -flto -fuse-linker-plugin -
Wl,--gc-sections
compiler.c.elf.cmd=avr-gcc
compiler.S.flags=-c -g -x assembler-with-cpp -flto -MMD
compiler.cpp.cmd=avr-g++
compiler.cpp.flags=-c -g -Os {compiler.warning_flags} -std=gnu++11 -fpermissive -
fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-
error=narrowing -MMD -flto
compiler.ar.cmd=avr-gcc-ar
compiler.ar.flags=rcs
compiler.objcopy.cmd=avr-objcopy
compiler.objcopy.eep.flags=-O ihex -j .eeprom --set-section-
flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0
compiler.elf2hex.flags=-O ihex -R .eeprom
compiler.elf2hex.cmd=avr-objcopy
compiler.ldflags=
compiler.libraries.ldflags=
compiler.size.cmd=avr-size

# This can be overridden in boards.txt


build.extra_flags=

# These can be overridden in platform.local.txt


compiler.c.extra_flags=
compiler.c.elf.extra_flags=
compiler.S.extra_flags=
compiler.cpp.extra_flags=
compiler.ar.extra_flags=
compiler.objcopy.eep.extra_flags=
compiler.elf2hex.extra_flags=

# AVR compile patterns


# --------------------
## Compile c files
recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.c.flags} -
mmcu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -
DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.c.extra_flags}
{build.extra_flags} {includes} "{source_file}" -o "{object_file}"

## Compile c++ files


recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} -
mmcu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -
DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags}
{build.extra_flags} {includes} "{source_file}" -o "{object_file}"

## Compile S files
recipe.S.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.S.flags} -
mmcu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -
DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.S.extra_flags}
{build.extra_flags} {includes} "{source_file}" -o "{object_file}"

## Create archives
# archive_file_path is needed for backwards compatibility with IDE 1.6.5 or older,
IDE 1.6.6 or newer overrides this value
archive_file_path={build.path}/{archive_file}
recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags}
{compiler.ar.extra_flags} "{archive_file_path}" "{object_file}"

## Combine gc-sections, archives, and objects


recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}"
{compiler.c.elf.flags} -mmcu={build.mcu} {compiler.c.elf.extra_flags}
{compiler.ldflags} -o "{build.path}/{build.project_name}.elf" {object_files}
{compiler.libraries.ldflags} "{build.path}/{archive_file}" "-L{build.path}" -lm

## Create output files (.eep and .hex)


recipe.objcopy.eep.pattern="{compiler.path}{compiler.objcopy.cmd}"
{compiler.objcopy.eep.flags} {compiler.objcopy.eep.extra_flags}
"{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.eep"
recipe.objcopy.hex.pattern="{compiler.path}{compiler.elf2hex.cmd}"
{compiler.elf2hex.flags} {compiler.elf2hex.extra_flags}
"{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.hex"

## Save hex
recipe.output.tmp_file={build.project_name}.hex
recipe.output.save_file={build.project_name}.{build.variant}.hex

## Compute size
recipe.size.pattern="{compiler.path}{compiler.size.cmd}" -A
"{build.path}/{build.project_name}.elf"
recipe.size.regex=^(?:\.text|\.data|\.bootloader)\s+([0-9]+).*
recipe.size.regex.data=^(?:\.data|\.bss|\.noinit)\s+([0-9]+).*
recipe.size.regex.eeprom=^(?:\.eeprom)\s+([0-9]+).*

## Preprocessor
preproc.includes.flags=-w -x c++ -M -MG -MP
recipe.preproc.includes="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags}
{preproc.includes.flags} -mmcu={build.mcu} -DF_CPU={build.f_cpu} -
DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch}
{compiler.cpp.extra_flags} {build.extra_flags} {includes} "{source_file}"

preproc.macros.flags=-w -x c++ -E -CC


recipe.preproc.macros="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags}
{preproc.macros.flags} -mmcu={build.mcu} -DF_CPU={build.f_cpu} -
DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch}
{compiler.cpp.extra_flags} {build.extra_flags} {includes} "{source_file}" -o
"{preprocessed_file_path}"

# Required discoveries and monitors


# ---------------------------------
pluggable_discovery.required.0=builtin:serial-discovery
pluggable_discovery.required.1=builtin:mdns-discovery
pluggable_monitor.required.serial=builtin:serial-monitor

# AVR Uploader/Programmers tools


# ------------------------------

tools.avrdude.path={runtime.tools.avrdude.path}
tools.avrdude.cmd.path={path}/bin/avrdude
tools.avrdude.config.path={path}/etc/avrdude.conf

tools.avrdude.upload.params.verbose=-v
tools.avrdude.upload.params.quiet=-q -q
# tools.avrdude.upload.verify is needed for backwards compatibility with IDE 1.6.8
or older, IDE 1.6.9 or newer overrides this value
tools.avrdude.upload.verify=
tools.avrdude.upload.params.noverify=-V
tools.avrdude.upload.pattern="{cmd.path}" "-C{config.path}" {upload.verbose}
{upload.verify} -p{build.mcu} -c{upload.protocol} "-P{serial.port}" -
b{upload.speed} -D "-Uflash:w:{build.path}/{build.project_name}.hex:i"

tools.avrdude.program.params.verbose=-v
tools.avrdude.program.params.quiet=-q -q
# tools.avrdude.program.verify is needed for backwards compatibility with IDE 1.6.8
or older, IDE 1.6.9 or newer overrides this value
tools.avrdude.program.verify=
tools.avrdude.program.params.noverify=-V
tools.avrdude.program.pattern="{cmd.path}" "-C{config.path}" {program.verbose}
{program.verify} -p{build.mcu} -c{protocol} {program.extra_params} "-Uflash:w:
{build.path}/{build.project_name}.hex:i"

tools.avrdude.erase.params.verbose=-v
tools.avrdude.erase.params.quiet=-q -q
tools.avrdude.erase.pattern="{cmd.path}" "-C{config.path}" {erase.verbose} -
p{build.mcu} -c{protocol} {program.extra_params} -e -Ulock:w:
{bootloader.unlock_bits}:m -Uefuse:w:{bootloader.extended_fuses}:m -Uhfuse:w:
{bootloader.high_fuses}:m -Ulfuse:w:{bootloader.low_fuses}:m

tools.avrdude.bootloader.params.verbose=-v
tools.avrdude.bootloader.params.quiet=-q -q
tools.avrdude.bootloader.pattern="{cmd.path}" "-C{config.path}"
{bootloader.verbose} -p{build.mcu} -c{protocol} {program.extra_params} "-Uflash:w:
{runtime.platform.path}/bootloaders/{bootloader.file}:i" -Ulock:w:
{bootloader.lock_bits}:m

tools.avrdude_remote.upload.pattern=/usr/bin/run-avrdude /tmp/sketch.hex
{upload.verbose} -p{build.mcu}

# The following rule is deprecated by pluggable discovery.


# We keep it to avoid breaking compatibility with the Arduino Java IDE.
tools.avrdude.network_cmd={runtime.tools.arduinoOTA.path}/bin/arduinoOTA
tools.avrdude.upload.network_pattern="{network_cmd}" -address {serial.port} -port
{upload.network.port} -sketch "{build.path}/{build.project_name}.hex" -upload
{upload.network.endpoint_upload} -sync {upload.network.endpoint_sync} -reset
{upload.network.endpoint_reset} -sync_exp {upload.network.sync_return}

# arduino ota
tools.arduino_ota.cmd={runtime.tools.arduinoOTA.path}/bin/arduinoOTA
tools.arduino_ota.upload.pattern="{cmd}" -address {upload.port.address} -port
{upload.port.properties.port} -sketch "{build.path}/{build.project_name}.hex" -
upload {upload.port.properties.endpoint_upload} -sync
{upload.port.properties.endpoint_sync} -reset
{upload.port.properties.endpoint_reset} -sync_exp
{upload.port.properties.sync_return}

# USB Default Flags


# Default blank usb manufacturer will be filled in at compile time
# - from numeric vendor ID, set to Unknown otherwise
build.usb_manufacturer="Unknown"
build.usb_flags=-DUSB_VID={build.vid} -DUSB_PID={build.pid} '-
DUSB_MANUFACTURER={build.usb_manufacturer}' '-DUSB_PRODUCT={build.usb_product}'

You might also like