# Arduino MBED Core and platform. # # For more info: # https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification name=Arduino Mbed OS Boards version=$VERSION # 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 # EXPERIMENTAL feature: optimization flags # - this is alpha and may be subject to change without notice compiler.optimization_flags=-Os compiler.optimization_flags.release=-Os compiler.optimization_flags.debug=-Og -g3 compiler.path={build.compiler_path} compiler.c.cmd={build.crossprefix}gcc compiler.c.flags=-c {compiler.warning_flags} -g3 -nostdlib "@{compiler.mbed.defines}" "@{compiler.mbed.cflags}" {compiler.mbed.arch.define} -MMD -mcpu={build.mcu} {build.float-abi} {build.fpu} compiler.c.elf.cmd={build.crossprefix}g++ compiler.c.elf.flags=-Wl,--gc-sections {compiler.warning_flags} -Wl,--as-needed compiler.S.cmd={build.crossprefix}g++ compiler.S.flags=-c -x assembler-with-cpp -mcpu={build.mcu} {build.fpu} compiler.cpp.cmd={build.crossprefix}g++ compiler.cpp.flags=-c {compiler.warning_flags} -g3 -nostdlib "@{compiler.mbed.defines}" "@{compiler.mbed.cxxflags}" {compiler.mbed.arch.define} -MMD -mcpu={build.mcu} {build.float-abi} {build.fpu} compiler.ar.cmd={build.crossprefix}ar compiler.ar.flags=rcs compiler.objcopy.cmd= compiler.objcopy.eep.flags= compiler.elf2hex.bin.flags=-O binary compiler.elf2hex.hex.flags=-O ihex -R .eeprom compiler.elf2hex.cmd={build.crossprefix}objcopy compiler.ldflags= compiler.libraries.ldflags= compiler.size.cmd={build.crossprefix}size compiler.define=-DARDUINO= # this can be overriden in boards.txt build.extra_flags= build.extra.startobjects= build.extra.endobjects= compiler.mbed= # 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= # {build.library_discovery_phase} is set to 1 by the builder during library discovery. # (this is available since arduino-builder>=1.5.5, keeping the default here for backward compatiblity) build.library_discovery_phase=0 build.library_discovery_phase_flag=-DARDUINO_LIBRARY_DISCOVERY_PHASE={build.library_discovery_phase} # USB Flags # --------- build.usb_flags= # Default usb manufacturer will be replaced at compile time using # numeric vendor ID if available or by board's specific value. #build.usb_manufacturer="Unknown" build.zip.pattern={recipe.size.pattern} # Linux compile patterns # ----------------------- ## Compile c files recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.c.flags} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DARDUINO_ARCH_MBED {build.library_discovery_phase_flag} {build.extra_flags} {compiler.c.extra_flags} "-I{build.core.path}/api/deprecated" "-I{build.core.path}/api/deprecated-avr-comp" {includes} "-iprefix{build.core.path}" "@{compiler.mbed.includes}" -o "{object_file}" "{source_file}" ## Compile c++ files recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DARDUINO_ARCH_MBED {build.library_discovery_phase_flag} {includes} {build.extra_flags} {compiler.cpp.extra_flags} "-I{build.core.path}/api/deprecated" "-I{build.core.path}/api/deprecated-avr-comp" "-iprefix{build.core.path}" "@{compiler.mbed.includes}" "{source_file}" -o "{object_file}" ## Compile asm files recipe.S.o.pattern="{compiler.path}{compiler.S.cmd}" {compiler.S.flags} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DARDUINO_ARCH_MBED {includes} {build.extra_flags} {compiler.cpp.extra_flags} "-I{build.core.path}/api/deprecated" "-I{build.core.path}/api/deprecated-avr-comp" "-iprefix{build.core.path}" "@{compiler.mbed.includes}" "{source_file}" -o "{object_file}" ## Create archives 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}" "-L{build.path}" {compiler.c.elf.flags} {compiler.c.elf.extra_flags} "@{compiler.mbed.ldflags}" "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" --specs=nosys.specs {compiler.ldflags} -o "{build.path}/{build.project_name}.elf" {object_files} -Wl,--whole-archive "{build.path}/{archive_file}" {compiler.mbed} -Wl,--no-whole-archive -Wl,--start-group {compiler.mbed.extra_ldflags} {compiler.libraries.ldflags} -Wl,--end-group ## Create eeprom recipe.objcopy.eep.pattern= ## Create output (bin file) recipe.objcopy.bin.pattern="{compiler.path}{compiler.elf2hex.cmd}" {compiler.elf2hex.bin.flags} {compiler.elf2hex.extra_flags} "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.bin" ## Create output (hex file) recipe.objcopy.hex.pattern="{compiler.path}{compiler.elf2hex.cmd}" {compiler.elf2hex.hex.flags} {compiler.elf2hex.extra_flags} "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.hex" ## Compute size recipe.size.pattern="{compiler.path}{compiler.size.cmd}" -A "{build.path}/{build.project_name}.elf" recipe.size.regex.data=^(?:\.data|\.bss)\s+([0-9]+).* recipe.size.regex=^(?:\.data|\.text)\s+([0-9]+).* ## Save hex recipe.output.tmp_file={build.project_name}.bin recipe.output.save_file={build.project_name}.{build.variant}.bin # Uploader tools # --------------------- tools.openocd.path={runtime.tools.openocd.path} tools.openocd.cmd=bin/openocd tools.openocd.cmd.windows=bin/openocd.exe tools.openocd.upload.params.verbose=-d2 tools.openocd.upload.params.quiet=-d0 tools.openocd.upload.pattern="{path}/{cmd}" {upload.verbose} -s "{path}/share/openocd/scripts/" {bootloader.programmer} {bootloader.config} -c "telnet_port disabled; init; reset init; halt; adapter speed 10000; program {{build.path}/{build.project_name}.elf}; reset run; shutdown" tools.openocd.program.params.verbose=-d2 tools.openocd.program.params.quiet=-d0 tools.openocd.program.pattern="{path}/{cmd}" {program.verbose} -s "{path}/share/openocd/scripts/" {bootloader.programmer} {bootloader.config} -c "telnet_port disabled; init; reset init; halt; adapter speed 10000; program {{build.path}/{build.project_name}.elf}; reset run; shutdown" tools.openocd.erase.params.verbose=-d2 tools.openocd.erase.params.quiet=-d0 tools.openocd.erase.pattern= tools.openocd.bootloader.params.verbose=-d2 tools.openocd.bootloader.params.quiet=-d0 tools.openocd.bootloader.pattern="{path}/{cmd}" {bootloader.verbose} -s "{path}/share/openocd/scripts/" {bootloader.programmer} {bootloader.config} -c "telnet_port disabled; init; reset init; halt; adapter speed 10000; {bootloader.extra_action.preflash}; program {{runtime.platform.path}/bootloaders/{bootloader.file}}; reset run; shutdown" # # BOSSA # tools.bossac.path={runtime.tools.bossac-1.9.1-arduino2.path} tools.bossac.cmd=bossac tools.bossac.cmd.windows=bossac.exe tools.bossac.upload.params.verbose=-d tools.bossac.upload.params.quiet= tools.bossac.upload.pattern="{path}/{cmd}" {upload.verbose} --port={serial.port.file} -U -i -e -w "{build.path}/{build.project_name}.bin" -R # STM32FLASH tools.stm32flash.cmd=stm32flash tools.stm32flash.path={runtime.platform.path}/tools/windows tools.stm32flash.path.macosx={runtime.platform.path}/tools/macosx tools.stm32flash.path.linux={runtime.platform.path}/tools/linux tools.stm32flash.upload.params.verbose=-v tools.stm32flash.upload.params.quiet= tools.stm32flash.upload.pattern="{path}/{cmd}" {serial.port} -e 1024 -b 2400 -w "{build.path}/{build.project_name}.bin" tools.stm32flash.program.params.verbose=-v tools.stm32flash.program.params.quiet= tools.stm32flash.program.pattern="{path}/{cmd}" {serial.port} -e 1024 -b 2400 -w "{build.path}/{build.project_name}.bin" tools.stm32flash.erase.params.verbose=-v tools.stm32flash.erase.params.quiet= tools.stm32flash.erase.pattern="{path}/{cmd}" {serial.port} -e 1024 -b 2400 # # DFU_UTIL # tools.dfu-util.path={runtime.tools.dfu-util.path} tools.dfu-util.cmd=dfu-util tools.dfu-util.upload.params.verbose=-d tools.dfu-util.upload.params.quiet= tools.dfu-util.upload.pattern="{path}/{cmd}" --device {upload.vid}:{upload.pid} -D "{build.path}/{build.project_name}.bin" -a{upload.interface} --dfuse-address={upload.address}:leave # # PICOTOOL # tools.picotool.path={runtime.tools.rp2040tools.path} tools.picotool.cmd=rp2040load tools.picotool.upload.params.verbose=-v tools.picotool.upload.params.quiet= tools.picotool.upload.pattern="{path}/{cmd}" {upload.verbose} -D "{build.path}/{build.project_name}.elf" # # GDB (Debugger) # # EXPERIMENTAL feature: debug.pattern # - this is alpha and may be subject to change without notice tools.gdb.path={runtime.tools.arm-none-eabi-gcc-7-2017q4.path}/bin/ tools.gdb.cmd=arm-none-eabi-gdb tools.gdb.cmd.windows=arm-none-eabi-gdb.exe tools.gdb.debug.pattern="{path}/{cmd}" --interpreter=mi2 -ex "set pagination off" --baud 115200 -ex "set target-charset ASCII" -ex "target remote {debug.port}" {build.path}/{build.project_name}.elf debug.executable={build.path}/{build.project_name}.elf debug.toolchain=gcc debug.toolchain.path={runtime.tools.arm-none-eabi-gcc-7-2017q4.path}/bin/ debug.toolchain.prefix=arm-none-eabi- debug.server=openocd debug.server.openocd.path={runtime.tools.openocd-0.10.0-arduino7.path}/bin/openocd debug.server.openocd.scripts_dir={runtime.tools.openocd-0.10.0-arduino7.path}/share/openocd/scripts/ debug.server.openocd.script={runtime.platform.path}/variants/{build.variant}/{build.openocdscript}