diff --git a/Packages_Patches/Seeeduino/hardware/samd/1.7.9/platform.txt b/Packages_Patches/Seeeduino/hardware/samd/1.7.9/platform.txt new file mode 100644 index 0000000..986663b --- /dev/null +++ b/Packages_Patches/Seeeduino/hardware/samd/1.7.9/platform.txt @@ -0,0 +1,227 @@ +# Copyright (c) 2014-2015 Arduino LLC. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +# Arduino SAMD Core and platform. +# +# For more info: +# https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification + +name=Seeed SAMD (32-bits ARM Cortex-M0+ and Cortex-M4) Boards +version=1.7.9 + +# Compile variables +# ----------------- + +compiler.warning_flags=-w +compiler.warning_flags.none=-w +compiler.warning_flags.default= +compiler.warning_flags.more=-Wall -Wno-expansion-to-defined +compiler.warning_flags.all=-Wall -Wextra -Wno-expansion-to-defined + +compiler.path={runtime.tools.arm-none-eabi-gcc-7-2017q4.path}/bin/ +compiler.c.cmd=arm-none-eabi-gcc +compiler.c.flags=-mcpu={build.mcu} -mthumb -c -g -Os {compiler.warning_flags} -std=gnu11 -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -MMD -D__SKETCH_NAME__="""{build.project_name}""" +compiler.c.elf.cmd=arm-none-eabi-g++ +compiler.c.elf.flags=-Os -Wl,--gc-sections -save-temps +compiler.S.cmd=arm-none-eabi-gcc +compiler.S.flags=-c -g -x assembler-with-cpp -MMD +compiler.cpp.cmd=arm-none-eabi-g++ +compiler.cpp.flags=-mcpu={build.mcu} -mthumb -c -g -Os {compiler.warning_flags} -std=gnu++14 -ffunction-sections -fdata-sections -fno-threadsafe-statics -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -MMD -D__SKETCH_NAME__="""{build.project_name}""" +compiler.ar.cmd=arm-none-eabi-ar +compiler.ar.flags=rcs +compiler.objcopy.cmd=arm-none-eabi-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.bin.flags=-O binary +compiler.elf2hex.hex.flags=-O ihex -R .eeprom +compiler.elf2hex.cmd=arm-none-eabi-objcopy +compiler.ldflags=-mcpu={build.mcu} -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -u _printf_float -u _scanf_float -Wl,--wrap,_write -u __wrap__write +compiler.size.cmd=arm-none-eabi-size +compiler.define=-DARDUINO= +compiler.readelf.cmd=arm-none-eabi-readelf + +# this can be overriden in boards.txt +build.extra_flags= +build.project_flags= +build.cache_flags= +build.flags.optimize= +build.flags.maxspi= +build.flags.maxqspi= +build.flags.usbstack= +build.flags.debug= + +# These can be overridden in platform.local.txt +compiler.c.extra_flags= +compiler.c.elf.extra_flags= +#compiler.c.elf.extra_flags=-v +compiler.cpp.extra_flags= +compiler.S.extra_flags= +compiler.ar.extra_flags= +compiler.elf2hex.extra_flags= + +compiler.arm.cmsis.c.flags="-I{runtime.tools.CMSIS-5.4.0.path}/CMSIS/Core/Include/" "-I{runtime.tools.CMSIS-5.4.0.path}/CMSIS/DSP/Include/" "-I{runtime.tools.CMSIS-Atmel-1.2.1.path}/CMSIS-Atmel/CMSIS/Device/ATMEL/" +compiler.arm.cmsis.ldflags="-L{runtime.tools.CMSIS-5.4.0.path}/CMSIS/Lib/GCC/" -larm_cortexM0l_math + +compiler.libraries.ldflags= + +# USB Flags +# --------- +build.usb_flags=-DUSB_VID={build.vid} -DUSB_PID={build.pid} -DUSBCON -DUSB_CONFIG_POWER={build.usb_power} '-DUSB_MANUFACTURER={build.usb_manufacturer}' '-DUSB_PRODUCT={build.usb_product}' {build.flags.usbstack} {build.flags.debug} "-I{build.core.path}/TinyUSB" "-I{build.core.path}/TinyUSB/Adafruit_TinyUSB_ArduinoCore" "-I{build.core.path}/TinyUSB/Adafruit_TinyUSB_ArduinoCore/tinyusb/src" + +# Default advertised device power setting in mA +build.usb_power=100 + +# 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" + + +# Compile patterns +# ---------------- + +## Compile c files +## KH Add -DBOARD_NAME="{build.board}" +recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.c.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DBOARD_NAME="{build.board}" -DARDUINO_ARCH_{build.arch} {compiler.c.extra_flags} {build.extra_flags} {build.project_flags} {build.cache_flags} {build.flags.debug} {build.flags.optimize} {build.flags.maxspi} {build.flags.maxqspi} {compiler.arm.cmsis.c.flags} {includes} "{source_file}" -o "{object_file}" + +## Compile c++ files +## KH Add -DBOARD_NAME="{build.board}" +recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DBOARD_NAME="{build.board}" -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {build.project_flags} {build.cache_flags} {build.flags.debug} {build.flags.optimize} {build.flags.maxspi} {build.flags.maxqspi} {build.extra_flags} {build.project_flags} {compiler.arm.cmsis.c.flags} {includes} "{source_file}" -o "{object_file}" + +## Compile S files +## KH Add -DBOARD_NAME="{build.board}" +recipe.S.o.pattern="{compiler.path}{compiler.S.cmd}" {compiler.S.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DBOARD_NAME="{build.board}" -DARDUINO_ARCH_{build.arch} {compiler.S.extra_flags} {build.extra_flags} {build.project_flags} {build.cache_flags} {compiler.arm.cmsis.c.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}" "-L{build.path}" {compiler.c.elf.flags} {compiler.c.elf.extra_flags} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" --specs=nano.specs --specs=nosys.specs {compiler.ldflags} -o "{build.path}/{build.project_name}.elf" {object_files} {compiler.libraries.ldflags} -Wl,--start-group {compiler.arm.cmsis.ldflags} "-L{build.variant.path}" -lm "{build.path}/{archive_file}" -Wl,--end-group + +## 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" + +build.preferred_out_format=bin + +## Save hex +recipe.output.tmp_file={build.project_name}.{build.preferred_out_format} +recipe.output.save_file={build.project_name}.{build.variant}.{build.preferred_out_format} + +## Compute size +recipe.size.pattern="{compiler.path}{compiler.size.cmd}" -A "{build.path}/{build.project_name}.elf" +recipe.size.regex=\.text\s+([0-9]+).* + +# +# BOSSA +# +tools.bossac.path={runtime.tools.bossac-1.7.0-arduino3.path} +tools.bossac.cmd=bossac +tools.bossac.cmd.windows=bossac.exe + +tools.bossac.upload.params.verbose=-i -d +tools.bossac.upload.params.quiet= +tools.bossac.upload.pattern="{path}/{cmd}" {upload.verbose} --port={serial.port.file} -U {upload.native_usb} -i -e -w -v "{build.path}/{build.project_name}.bin" -R + +tools.bossac_remote.upload.pattern=/usr/bin/run-bossac {upload.verbose} --port=ttyATH0 -U {upload.native_usb} -e -w -v /tmp/sketch.bin -R + +tools.bossac.network_cmd={runtime.tools.arduinoOTA.path}/bin/arduinoOTA +tools.bossac.upload.network_pattern="{network_cmd}" -address {serial.port} -port 65280 -username arduino -password "{network.password}" -sketch "{build.path}/{build.project_name}.bin" -upload /sketch -b + +# v1.8.0 + +tools.bossac18.path={runtime.tools.bossac-1.8.0-48-gb176eee.path} +tools.bossac18.cmd=bossac + +tools.bossac18.upload.params.verbose=-i -d +tools.bossac18.upload.params.quiet= +tools.bossac18.upload.pattern="{path}/{cmd}" {upload.verbose} --port={serial.port.file} -U -i --offset={upload.offset} -w -v "{build.path}/{build.project_name}.bin" -R + +tools.bossac18.network_cmd={runtime.tools.arduinoOTA.path}/bin/arduinoOTA +tools.bossac18.upload.network_pattern="{network_cmd}" -address {serial.port} -port 65280 -username arduino -password "{network.password}" -sketch "{build.path}/{build.project_name}.bin" -upload /sketch -b + +# +# BOSSA (ignore binary size) +# +tools.bossacI.path={runtime.tools.bossac-1.7.0-arduino3.path} +tools.bossacI.cmd=bossac +tools.bossacI.cmd.windows=bossac.exe + +tools.bossacI.upload.params.verbose=-i -d +tools.bossacI.upload.params.quiet= +tools.bossacI.upload.pattern="{path}/{cmd}" {upload.verbose} --port={serial.port.file} -I -U {upload.native_usb} -i -e -w "{build.path}/{build.project_name}.bin" -R + +tools.bossacI_remote.upload.pattern=/usr/bin/run-bossac {upload.verbose} --port=ttyATH0 -U {upload.native_usb} -e -w -v /tmp/sketch.bin -R + +tools.bossacI.network_cmd={runtime.tools.arduinoOTA.path}/bin/arduinoOTA +tools.bossacI.upload.network_pattern="{network_cmd}" -address {serial.port} -port 65280 -username arduino -password "{network.password}" -sketch "{build.path}/{build.project_name}.bin" -upload /sketch -b + + +# +# OpenOCD sketch upload +# + +tools.openocd.path={runtime.tools.openocd-0.10.0-arduino7.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/" -f "{runtime.platform.path}/variants/{build.variant}/{build.openocdscript}" -c "telnet_port disabled; program {{build.path}/{build.project_name}.bin} verify reset 0x2000; shutdown" + +tools.openocd.network_cmd={runtime.tools.arduinoOTA.path}/bin/arduinoOTA +tools.openocd.upload.network_pattern={network_cmd} -address {serial.port} -port 65280 -username arduino -password "{network.password}" -sketch "{build.path}/{build.project_name}.bin" -upload /sketch -b + +# Program flashes the binary at 0x0000, so use the linker script without_bootloader +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/" -f "{runtime.platform.path}/variants/{build.variant}/{build.openocdscript}" -c "telnet_port disabled; program {{build.path}/{build.project_name}.elf} verify reset; shutdown" + +tools.openocd.erase.params.verbose=-d3 +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/" -f "{runtime.platform.path}/variants/{build.variant}/{build.openocdscript}" -c "telnet_port disabled; init; halt; at91samd bootloader 0; program {{runtime.platform.path}/bootloaders/{bootloader.file}} verify reset; shutdown" + +# +# OpenOCD sketch upload - version with configurable bootloader size +# FIXME: this programmer is a workaround for default options being overwritten by uploadUsingPreferences +# + +tools.openocd-withbootsize.path={runtime.tools.openocd-0.10.0-arduino7.path} +tools.openocd-withbootsize.cmd=bin/openocd +tools.openocd-withbootsize.cmd.windows=bin/openocd.exe + +tools.openocd-withbootsize.upload.params.verbose=-d2 +tools.openocd-withbootsize.upload.params.quiet=-d0 +tools.openocd-withbootsize.upload.pattern="{path}/{cmd}" {upload.verbose} -s "{path}/share/openocd/scripts/" -f "{runtime.platform.path}/variants/{build.variant}/{build.openocdscript}" -c "telnet_port disabled; program {{build.path}/{build.project_name}.bin} verify reset {bootloader.size}; shutdown" + +# Program flashes the binary at 0x0000, so use the linker script without_bootloader +tools.openocd-withbootsize.program.params.verbose=-d2 +tools.openocd-withbootsize.program.params.quiet=-d0 +tools.openocd-withbootsize.program.pattern="{path}/{cmd}" {program.verbose} -s "{path}/share/openocd/scripts/" -f "{runtime.platform.path}/variants/{build.variant}/{build.openocdscript}" -c "telnet_port disabled; program {{build.path}/{build.project_name}.elf} verify reset; shutdown" + +tools.openocd-withbootsize.erase.params.verbose=-d3 +tools.openocd-withbootsize.erase.params.quiet=-d0 +tools.openocd-withbootsize.erase.pattern= + +tools.openocd-withbootsize.bootloader.params.verbose=-d2 +tools.openocd-withbootsize.bootloader.params.quiet=-d0 +tools.openocd-withbootsize.bootloader.pattern="{path}/{cmd}" {bootloader.verbose} -s "{path}/share/openocd/scripts/" -f "{runtime.platform.path}/variants/{build.variant}/{build.openocdscript}" -c "telnet_port disabled; init; halt; at91samd bootloader 0; program {{runtime.platform.path}/bootloaders/{bootloader.file}} verify reset; shutdown" diff --git a/Packages_Patches/adafruit/hardware/nrf52/0.21.0/boards.txt b/Packages_Patches/adafruit/hardware/nrf52/0.21.0/boards.txt new file mode 100644 index 0000000..762f02f --- /dev/null +++ b/Packages_Patches/adafruit/hardware/nrf52/0.21.0/boards.txt @@ -0,0 +1,649 @@ +# Copyright (c) 2014-2015 Arduino LLC. All right reserved. +# Copyright (c) 2016 Sandeep Mistry All right reserved. +# Copyright (c) 2017 Adafruit Industries. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +menu.softdevice=Bootloader +menu.debug=Debug + +# ---------------------------------- +# Bluefruit Feather nRF52832 +# ---------------------------------- +feather52832.name=Adafruit Feather nRF52832 +feather52832.bootloader.tool=bootburn + +# Upload +feather52832.upload.tool=nrfutil +feather52832.upload.protocol=nrfutil +feather52832.upload.use_1200bps_touch=false +feather52832.upload.wait_for_upload_port=false +feather52832.upload.native_usb=false +feather52832.upload.maximum_size=290816 +feather52832.upload.maximum_data_size=52224 + +# Build +feather52832.build.mcu=cortex-m4 +feather52832.build.f_cpu=64000000 +feather52832.build.board=NRF52832_FEATHER +feather52832.build.core=nRF5 +feather52832.build.variant=feather_nrf52832 +feather52832.build.usb_manufacturer="Adafruit LLC" +feather52832.build.usb_product="Feather nRF52832" +feather52832.build.extra_flags=-DNRF52832_XXAA -DNRF52 +feather52832.build.ldscript=nrf52832_s132_v6.ld + +# SofDevice Menu +feather52832.menu.softdevice.s132v6=0.3.2 SoftDevice s132 6.1.1 +feather52832.menu.softdevice.s132v6.build.sd_name=s132 +feather52832.menu.softdevice.s132v6.build.sd_version=6.1.1 +feather52832.menu.softdevice.s132v6.build.sd_fwid=0x00B7 + +# Debug Menu +feather52832.menu.debug.l0=Level 0 (Release) +feather52832.menu.debug.l0.build.debug_flags=-DCFG_DEBUG=0 +feather52832.menu.debug.l1=Level 1 (Error Message) +feather52832.menu.debug.l1.build.debug_flags=-DCFG_DEBUG=1 +feather52832.menu.debug.l2=Level 2 (Full Debug) +feather52832.menu.debug.l2.build.debug_flags=-DCFG_DEBUG=2 +feather52832.menu.debug.l3=Level 3 (Segger SystemView) +feather52832.menu.debug.l3.build.debug_flags=-DCFG_DEBUG=3 +feather52832.menu.debug.l3.build.sysview_flags=-DCFG_SYSVIEW=1 + +# ---------------------------------- +# Bluefruit Feather nRF52840 Express +# ---------------------------------- +feather52840.name=Adafruit Feather nRF52840 Express + +# VID/PID for bootloader with/without UF2, Arduino + Circuitpython App +feather52840.vid.0=0x239A +feather52840.pid.0=0x8029 +feather52840.vid.1=0x239A +feather52840.pid.1=0x0029 +feather52840.vid.2=0x239A +feather52840.pid.2=0x002A +feather52840.vid.3=0x239A +feather52840.pid.3=0x802A + +# Upload +feather52840.bootloader.tool=bootburn +feather52840.upload.tool=nrfutil +feather52840.upload.protocol=nrfutil +feather52840.upload.use_1200bps_touch=true +feather52840.upload.wait_for_upload_port=true +feather52840.upload.maximum_size=815104 +feather52840.upload.maximum_data_size=237568 + +# Build +feather52840.build.mcu=cortex-m4 +feather52840.build.f_cpu=64000000 +feather52840.build.board=NRF52840_FEATHER +feather52840.build.core=nRF5 +feather52840.build.variant=feather_nrf52840_express +feather52840.build.usb_manufacturer="Adafruit LLC" +feather52840.build.usb_product="Feather nRF52840 Express" +feather52840.build.extra_flags=-DNRF52840_XXAA {build.flags.usb} +feather52840.build.ldscript=nrf52840_s140_v6.ld +feather52840.build.vid=0x239A +feather52840.build.pid=0x8029 + +# SofDevice Menu +feather52840.menu.softdevice.s140v6=0.3.2 SoftDevice s140 6.1.1 +feather52840.menu.softdevice.s140v6.build.sd_name=s140 +feather52840.menu.softdevice.s140v6.build.sd_version=6.1.1 +feather52840.menu.softdevice.s140v6.build.sd_fwid=0x00B6 + +# Debug Menu +feather52840.menu.debug.l0=Level 0 (Release) +feather52840.menu.debug.l0.build.debug_flags=-DCFG_DEBUG=0 +feather52840.menu.debug.l1=Level 1 (Error Message) +feather52840.menu.debug.l1.build.debug_flags=-DCFG_DEBUG=1 +feather52840.menu.debug.l2=Level 2 (Full Debug) +feather52840.menu.debug.l2.build.debug_flags=-DCFG_DEBUG=2 +feather52840.menu.debug.l3=Level 3 (Segger SystemView) +feather52840.menu.debug.l3.build.debug_flags=-DCFG_DEBUG=3 +feather52840.menu.debug.l3.build.sysview_flags=-DCFG_SYSVIEW=1 + + +# ---------------------------------- +# Feather Bluefruit sense +# ---------------------------------- +feather52840sense.name=Adafruit Feather Bluefruit Sense + +# VID/PID for bootloader with/without UF2, Arduino + Circuitpython App +feather52840sense.vid.0=0x239A +feather52840sense.pid.0=0x8087 +feather52840sense.vid.1=0x239A +feather52840sense.pid.1=0x0087 +feather52840sense.vid.2=0x239A +feather52840sense.pid.2=0x0088 +feather52840sense.vid.3=0x239A +feather52840sense.pid.3=0x8088 + +# Upload +feather52840sense.bootloader.tool=bootburn +feather52840sense.upload.tool=nrfutil +feather52840sense.upload.protocol=nrfutil +feather52840sense.upload.use_1200bps_touch=true +feather52840sense.upload.wait_for_upload_port=true +feather52840sense.upload.maximum_size=815104 +feather52840sense.upload.maximum_data_size=237568 + +# Build +feather52840sense.build.mcu=cortex-m4 +feather52840sense.build.f_cpu=64000000 +feather52840sense.build.board=NRF52840_FEATHER_SENSE +feather52840sense.build.core=nRF5 +feather52840sense.build.variant=feather_nrf52840_sense +feather52840sense.build.usb_manufacturer="Adafruit LLC" +feather52840sense.build.usb_product="Feather nRF52840 Sense" +feather52840sense.build.extra_flags=-DNRF52840_XXAA {build.flags.usb} +feather52840sense.build.ldscript=nrf52840_s140_v6.ld +feather52840sense.build.vid=0x239A +feather52840sense.build.pid=0x8087 + +# SofDevice Menu +feather52840sense.menu.softdevice.s140v6=0.3.2 SoftDevice s140 6.1.1 +feather52840sense.menu.softdevice.s140v6.build.sd_name=s140 +feather52840sense.menu.softdevice.s140v6.build.sd_version=6.1.1 +feather52840sense.menu.softdevice.s140v6.build.sd_fwid=0x00B6 + +# Debug Menu +feather52840sense.menu.debug.l0=Level 0 (Release) +feather52840sense.menu.debug.l0.build.debug_flags=-DCFG_DEBUG=0 +feather52840sense.menu.debug.l1=Level 1 (Error Message) +feather52840sense.menu.debug.l1.build.debug_flags=-DCFG_DEBUG=1 +feather52840sense.menu.debug.l2=Level 2 (Full Debug) +feather52840sense.menu.debug.l2.build.debug_flags=-DCFG_DEBUG=2 +feather52840sense.menu.debug.l3=Level 3 (Segger SystemView) +feather52840sense.menu.debug.l3.build.debug_flags=-DCFG_DEBUG=3 +feather52840sense.menu.debug.l3.build.sysview_flags=-DCFG_SYSVIEW=1 + + +# --------------------------------------------- +# Bluefruit ItsyBitsy nRF52840 Express +# --------------------------------------------- +itsybitsy52840.name=Adafruit ItsyBitsy nRF52840 Express + +# VID/PID for bootloader with/without UF2, Arduino + Circuitpython App +itsybitsy52840.vid.0=0x239A +itsybitsy52840.pid.0=0x8051 +itsybitsy52840.vid.1=0x239A +itsybitsy52840.pid.1=0x0051 +itsybitsy52840.vid.2=0x239A +itsybitsy52840.pid.2=0x0052 +itsybitsy52840.vid.3=0x239A +itsybitsy52840.pid.3=0x8052 + +# Upload +itsybitsy52840.bootloader.tool=bootburn +itsybitsy52840.upload.tool=nrfutil +itsybitsy52840.upload.protocol=nrfutil +itsybitsy52840.upload.use_1200bps_touch=true +itsybitsy52840.upload.wait_for_upload_port=true +itsybitsy52840.upload.maximum_size=815104 +itsybitsy52840.upload.maximum_data_size=237568 + +# Build +itsybitsy52840.build.mcu=cortex-m4 +itsybitsy52840.build.f_cpu=64000000 +itsybitsy52840.build.board=NRF52840_ITSYBITSY +itsybitsy52840.build.core=nRF5 +itsybitsy52840.build.variant=itsybitsy_nrf52840_express +itsybitsy52840.build.usb_manufacturer="Adafruit LLC" +itsybitsy52840.build.usb_product="ItsyBitsy nRF52840 Express" +itsybitsy52840.build.extra_flags=-DNRF52840_XXAA -DARDUINO_NRF52_ITSYBITSY {build.flags.usb} +itsybitsy52840.build.ldscript=nrf52840_s140_v6.ld +itsybitsy52840.build.vid=0x239A +itsybitsy52840.build.pid=0x8051 + +# SofDevice Menu +itsybitsy52840.menu.softdevice.s140v6=0.2.11 SoftDevice s140 6.1.1 +itsybitsy52840.menu.softdevice.s140v6.build.sd_name=s140 +itsybitsy52840.menu.softdevice.s140v6.build.sd_version=6.1.1 +itsybitsy52840.menu.softdevice.s140v6.build.sd_fwid=0x00B6 + +# Debug Menu +itsybitsy52840.menu.debug.l0=Level 0 (Release) +itsybitsy52840.menu.debug.l0.build.debug_flags=-DCFG_DEBUG=0 +itsybitsy52840.menu.debug.l1=Level 1 (Error Message) +itsybitsy52840.menu.debug.l1.build.debug_flags=-DCFG_DEBUG=1 +itsybitsy52840.menu.debug.l2=Level 2 (Full Debug) +itsybitsy52840.menu.debug.l2.build.debug_flags=-DCFG_DEBUG=2 +itsybitsy52840.menu.debug.l3=Level 3 (Segger SystemView) +itsybitsy52840.menu.debug.l3.build.debug_flags=-DCFG_DEBUG=3 +itsybitsy52840.menu.debug.l3.build.sysview_flags=-DCFG_SYSVIEW=1 + +# --------------------------------------------- +# Bluefruit Circuit Playground nRF52840 Express +# --------------------------------------------- +cplaynrf52840.name=Adafruit Circuit Playground Bluefruit + +# VID/PID for bootloader with/without UF2, Arduino + Circuitpython App +cplaynrf52840.vid.0=0x239A +cplaynrf52840.pid.0=0x8045 +cplaynrf52840.vid.1=0x239A +cplaynrf52840.pid.1=0x0045 +cplaynrf52840.vid.2=0x239A +cplaynrf52840.pid.2=0x0046 +cplaynrf52840.vid.3=0x239A +cplaynrf52840.pid.3=0x8046 + +# Upload +cplaynrf52840.bootloader.tool=bootburn +cplaynrf52840.upload.tool=nrfutil +cplaynrf52840.upload.protocol=nrfutil +cplaynrf52840.upload.use_1200bps_touch=true +cplaynrf52840.upload.wait_for_upload_port=true +cplaynrf52840.upload.maximum_size=815104 +cplaynrf52840.upload.maximum_data_size=237568 + +# Build +cplaynrf52840.build.mcu=cortex-m4 +cplaynrf52840.build.f_cpu=64000000 +cplaynrf52840.build.board=NRF52840_CIRCUITPLAY +cplaynrf52840.build.core=nRF5 +cplaynrf52840.build.variant=circuitplayground_nrf52840 +cplaynrf52840.build.usb_manufacturer="Adafruit LLC" +cplaynrf52840.build.usb_product="Circuit Playground Bluefruit" +cplaynrf52840.build.extra_flags=-DNRF52840_XXAA {build.flags.usb} +cplaynrf52840.build.ldscript=nrf52840_s140_v6.ld +cplaynrf52840.build.vid=0x239A +cplaynrf52840.build.pid=0x8045 + +# SofDevice Menu +cplaynrf52840.menu.softdevice.s140v6=0.3.2 SoftDevice s140 6.1.1 +cplaynrf52840.menu.softdevice.s140v6.build.sd_name=s140 +cplaynrf52840.menu.softdevice.s140v6.build.sd_version=6.1.1 +cplaynrf52840.menu.softdevice.s140v6.build.sd_fwid=0x00B6 + +# Debug Menu +cplaynrf52840.menu.debug.l0=Level 0 (Release) +cplaynrf52840.menu.debug.l0.build.debug_flags=-DCFG_DEBUG=0 +cplaynrf52840.menu.debug.l1=Level 1 (Error Message) +cplaynrf52840.menu.debug.l1.build.debug_flags=-DCFG_DEBUG=1 +cplaynrf52840.menu.debug.l2=Level 2 (Full Debug) +cplaynrf52840.menu.debug.l2.build.debug_flags=-DCFG_DEBUG=2 +cplaynrf52840.menu.debug.l3=Level 3 (Segger SystemView) +cplaynrf52840.menu.debug.l3.build.debug_flags=-DCFG_DEBUG=3 +cplaynrf52840.menu.debug.l3.build.sysview_flags=-DCFG_SYSVIEW=1 + + +# --------------------------------------------- +# Clue nRF52840 +# --------------------------------------------- +cluenrf52840.name=Adafruit CLUE + +# VID/PID for bootloader with/without UF2, Arduino + Circuitpython App +cluenrf52840.vid.0=0x239A +cluenrf52840.pid.0=0x8072 +cluenrf52840.vid.1=0x239A +cluenrf52840.pid.1=0x0072 +cluenrf52840.vid.2=0x239A +cluenrf52840.pid.2=0x0071 +cluenrf52840.vid.3=0x239A +cluenrf52840.pid.3=0x8071 + +# Upload +cluenrf52840.bootloader.tool=bootburn +cluenrf52840.upload.tool=nrfutil +cluenrf52840.upload.protocol=nrfutil +cluenrf52840.upload.use_1200bps_touch=true +cluenrf52840.upload.wait_for_upload_port=true +cluenrf52840.upload.maximum_size=815104 +cluenrf52840.upload.maximum_data_size=237568 + +# Build +cluenrf52840.build.mcu=cortex-m4 +cluenrf52840.build.f_cpu=64000000 +cluenrf52840.build.board=NRF52840_CLUE +cluenrf52840.build.core=nRF5 +cluenrf52840.build.variant=clue_nrf52840 +cluenrf52840.build.usb_manufacturer="Adafruit LLC" +cluenrf52840.build.usb_product="CLUE" +cluenrf52840.build.extra_flags=-DNRF52840_XXAA {build.flags.usb} +cluenrf52840.build.ldscript=nrf52840_s140_v6.ld +cluenrf52840.build.vid=0x239A +cluenrf52840.build.pid=0x8071 + +# SofDevice Menu +cluenrf52840.menu.softdevice.s140v6=0.3.2 SoftDevice s140 6.1.1 +cluenrf52840.menu.softdevice.s140v6.build.sd_name=s140 +cluenrf52840.menu.softdevice.s140v6.build.sd_version=6.1.1 +cluenrf52840.menu.softdevice.s140v6.build.sd_fwid=0x00B6 + +# Debug Menu +cluenrf52840.menu.debug.l0=Level 0 (Release) +cluenrf52840.menu.debug.l0.build.debug_flags=-DCFG_DEBUG=0 +cluenrf52840.menu.debug.l1=Level 1 (Error Message) +cluenrf52840.menu.debug.l1.build.debug_flags=-DCFG_DEBUG=1 +cluenrf52840.menu.debug.l2=Level 2 (Full Debug) +cluenrf52840.menu.debug.l2.build.debug_flags=-DCFG_DEBUG=2 +cluenrf52840.menu.debug.l3=Level 3 (Segger SystemView) +cluenrf52840.menu.debug.l3.build.debug_flags=-DCFG_DEBUG=3 +cluenrf52840.menu.debug.l3.build.sysview_flags=-DCFG_SYSVIEW=1 + +# ---------------------------------- +# Bluefruit Metro nRF52840 Express +# ---------------------------------- +metro52840.name=Adafruit Bluefruit Metro nRF52840 Express + +# VID/PID for bootloader with/without UF2, Arduino + Circuitpython App +metro52840.vid.0=0x239A +metro52840.pid.0=0x803F +metro52840.vid.1=0x239A +metro52840.pid.1=0x003F +metro52840.vid.2=0x239A +metro52840.pid.2=0x0040 +metro52840.vid.3=0x239A +metro52840.pid.3=0x8040 + +# Upload +metro52840.bootloader.tool=bootburn +metro52840.upload.tool=nrfutil +metro52840.upload.protocol=nrfutil +metro52840.upload.use_1200bps_touch=true +metro52840.upload.wait_for_upload_port=true +metro52840.upload.maximum_size=815104 +metro52840.upload.maximum_data_size=237568 + +# Build +metro52840.build.mcu=cortex-m4 +metro52840.build.f_cpu=64000000 +metro52840.build.board=NRF52840_METRO +metro52840.build.core=nRF5 +metro52840.build.variant=metro_nrf52840_express +metro52840.build.usb_manufacturer="Adafruit LLC" +metro52840.build.usb_product="Metro nRF52840 Express" +metro52840.build.extra_flags=-DNRF52840_XXAA {build.flags.usb} +metro52840.build.ldscript=nrf52840_s140_v6.ld +metro52840.build.vid=0x239A +metro52840.build.pid=0x803F + +# SofDevice Menu +metro52840.menu.softdevice.s140v6=0.3.2 SoftDevice s140 6.1.1 +metro52840.menu.softdevice.s140v6.build.sd_name=s140 +metro52840.menu.softdevice.s140v6.build.sd_version=6.1.1 +metro52840.menu.softdevice.s140v6.build.sd_fwid=0x00B6 + +# Debug Menu +metro52840.menu.debug.l0=Level 0 (Release) +metro52840.menu.debug.l0.build.debug_flags=-DCFG_DEBUG=0 +metro52840.menu.debug.l1=Level 1 (Error Message) +metro52840.menu.debug.l1.build.debug_flags=-DCFG_DEBUG=1 +metro52840.menu.debug.l2=Level 2 (Full Debug) +metro52840.menu.debug.l2.build.debug_flags=-DCFG_DEBUG=2 +metro52840.menu.debug.l3=Level 3 (Segger SystemView) +metro52840.menu.debug.l3.build.debug_flags=-DCFG_DEBUG=3 +metro52840.menu.debug.l3.build.sysview_flags=-DCFG_SYSVIEW=1 + + + + +# ------------------------------------------------------- +# +# Boards that aren't made by Adafruit +# +# ------------------------------------------------------- + + +# ---------------------------------- +# Nordic nRF52840DK (PCA10056) +# ---------------------------------- +pca10056.name=Nordic nRF52840DK (PCA10056) +pca10056.bootloader.tool=bootburn + +# Upload +pca10056.upload.tool=nrfutil +pca10056.upload.protocol=nrfutil +pca10056.upload.use_1200bps_touch=true +pca10056.upload.wait_for_upload_port=true +pca10056.upload.maximum_size=815104 +pca10056.upload.maximum_data_size=237568 + +# Build +pca10056.build.mcu=cortex-m4 +pca10056.build.f_cpu=64000000 +pca10056.build.board=NRF52840_PCA10056 +pca10056.build.core=nRF5 +pca10056.build.variant=pca10056 +pca10056.build.usb_manufacturer="Nordic" +pca10056.build.usb_product="nRF52840 DK" +pca10056.build.extra_flags=-DNRF52840_XXAA {build.flags.usb} +pca10056.build.ldscript=nrf52840_s140_v6.ld +pca10056.build.vid=0x239A +pca10056.build.pid=0x8029 + +# SofDevice Menu +pca10056.menu.softdevice.s140v6=0.3.2 SoftDevice s140 6.1.1 +pca10056.menu.softdevice.s140v6.build.sd_name=s140 +pca10056.menu.softdevice.s140v6.build.sd_version=6.1.1 +pca10056.menu.softdevice.s140v6.build.sd_fwid=0x00B6 + +# Debug Menu +pca10056.menu.debug.l0=Level 0 (Release) +pca10056.menu.debug.l0.build.debug_flags=-DCFG_DEBUG=0 +pca10056.menu.debug.l1=Level 1 (Error Message) +pca10056.menu.debug.l1.build.debug_flags=-DCFG_DEBUG=1 +pca10056.menu.debug.l2=Level 2 (Full Debug) +pca10056.menu.debug.l2.build.debug_flags=-DCFG_DEBUG=2 +pca10056.menu.debug.l3=Level 3 (Segger SystemView) +pca10056.menu.debug.l3.build.debug_flags=-DCFG_DEBUG=3 +pca10056.menu.debug.l3.build.sysview_flags=-DCFG_SYSVIEW=1 + +# ---------------------------------- +# Particle Xenon +# ---------------------------------- +particle_xenon.name=Particle Xenon + +# VID/PID for bootloader with/without UF2, Arduino + Circuitpython App +particle_xenon.vid.0=0x239A +particle_xenon.pid.0=0x8029 +particle_xenon.vid.1=0x239A +particle_xenon.pid.1=0x0029 +particle_xenon.vid.2=0x239A +particle_xenon.pid.2=0x002A +particle_xenon.vid.3=0x239A +particle_xenon.pid.3=0x802A + +# Upload +particle_xenon.bootloader.tool=bootburn +particle_xenon.upload.tool=nrfutil +particle_xenon.upload.protocol=nrfutil +particle_xenon.upload.use_1200bps_touch=true +particle_xenon.upload.wait_for_upload_port=true +particle_xenon.upload.maximum_size=815104 +particle_xenon.upload.maximum_data_size=237568 + +# Build +particle_xenon.build.mcu=cortex-m4 +particle_xenon.build.f_cpu=64000000 +particle_xenon.build.board=PARTICLE_XENON +particle_xenon.build.core=nRF5 +particle_xenon.build.variant=particle_xenon +particle_xenon.build.usb_manufacturer="Particle Industries" +particle_xenon.build.usb_product="Particle Xenon" +particle_xenon.build.extra_flags=-DNRF52840_XXAA {build.flags.usb} +particle_xenon.build.ldscript=nrf52840_s140_v6.ld +particle_xenon.build.vid=0x239A +particle_xenon.build.pid=0x8029 + +# SofDevice Menu +particle_xenon.menu.softdevice.s140v6=0.2.11 SoftDevice s140 6.1.1 +particle_xenon.menu.softdevice.s140v6.build.sd_name=s140 +particle_xenon.menu.softdevice.s140v6.build.sd_version=6.1.1 +particle_xenon.menu.softdevice.s140v6.build.sd_fwid=0x00B6 + +# Debug Menu +particle_xenon.menu.debug.l0=Level 0 (Release) +particle_xenon.menu.debug.l0.build.debug_flags=-DCFG_DEBUG=0 +particle_xenon.menu.debug.l1=Level 1 (Error Message) +particle_xenon.menu.debug.l1.build.debug_flags=-DCFG_DEBUG=1 +particle_xenon.menu.debug.l2=Level 2 (Full Debug) +particle_xenon.menu.debug.l2.build.debug_flags=-DCFG_DEBUG=2 +particle_xenon.menu.debug.l3=Level 3 (Segger SystemView) +particle_xenon.menu.debug.l3.build.debug_flags=-DCFG_DEBUG=3 +particle_xenon.menu.debug.l3.build.sysview_flags=-DCFG_SYSVIEW=1 + +# ---------------------------------- +# Raytac MDBT50Q - RX +# ---------------------------------- +mdbt50qrx.name=Raytac MDBT50Q-RX Dongle + +# VID/PID for bootloader with/without UF2, Arduino + Circuitpython App +mdbt50qrx.vid.0=0x239A +mdbt50qrx.pid.0=0x8029 +mdbt50qrx.vid.1=0x239A +mdbt50qrx.pid.1=0x0029 +mdbt50qrx.vid.2=0x239A +mdbt50qrx.pid.2=0x002A +mdbt50qrx.vid.3=0x239A +mdbt50qrx.pid.3=0x802A + +# Upload +mdbt50qrx.bootloader.tool=bootburn +mdbt50qrx.upload.tool=nrfutil +mdbt50qrx.upload.protocol=nrfutil +mdbt50qrx.upload.use_1200bps_touch=true +mdbt50qrx.upload.wait_for_upload_port=true +mdbt50qrx.upload.maximum_size=815104 +mdbt50qrx.upload.maximum_data_size=237568 + +# Build +mdbt50qrx.build.mcu=cortex-m4 +mdbt50qrx.build.f_cpu=64000000 +mdbt50qrx.build.board=MDBT50Q_RX +mdbt50qrx.build.core=nRF5 +mdbt50qrx.build.variant=raytac_mdbt50q_rx +mdbt50qrx.build.usb_manufacturer="Raytac Corporation" +mdbt50qrx.build.usb_product="Raytac MDBT50Q - RX" +mdbt50qrx.build.extra_flags=-DNRF52840_XXAA {build.flags.usb} +mdbt50qrx.build.ldscript=nrf52840_s140_v6.ld +mdbt50qrx.build.vid=0x239A +mdbt50qrx.build.pid=0x8029 + +# SofDevice Menu +mdbt50qrx.menu.softdevice.s140v6=0.3.2 SoftDevice s140 6.1.1 +mdbt50qrx.menu.softdevice.s140v6.build.sd_name=s140 +mdbt50qrx.menu.softdevice.s140v6.build.sd_version=6.1.1 +mdbt50qrx.menu.softdevice.s140v6.build.sd_fwid=0x00B6 + +# Debug Menu +mdbt50qrx.menu.debug.l0=Level 0 (Release) +mdbt50qrx.menu.debug.l0.build.debug_flags=-DCFG_DEBUG=0 +mdbt50qrx.menu.debug.l1=Level 1 (Error Message) +mdbt50qrx.menu.debug.l1.build.debug_flags=-DCFG_DEBUG=1 +mdbt50qrx.menu.debug.l2=Level 2 (Full Debug) +mdbt50qrx.menu.debug.l2.build.debug_flags=-DCFG_DEBUG=2 +mdbt50qrx.menu.debug.l3=Level 3 (Segger SystemView) +mdbt50qrx.menu.debug.l3.build.debug_flags=-DCFG_DEBUG=3 +mdbt50qrx.menu.debug.l3.build.sysview_flags=-DCFG_SYSVIEW=1 + +# ---------------------------------- +# NINA B302 +# ---------------------------------- +ninab302.name=NINA B302 ublox + +# VID/PID for bootloader with/without UF2, Arduino + Circuitpython App +ninab302.vid.0=0x239A +ninab302.pid.0=0x8029 +ninab302.vid.1=0x239A +ninab302.pid.1=0x0029 +ninab302.vid.2=0x7239A +ninab302.pid.2=0x002A +ninab302.vid.3=0x239A +ninab302.pid.3=0x802A + +# Upload +ninab302.bootloader.tool=bootburn +ninab302.upload.tool=nrfutil +ninab302.upload.protocol=nrfutil +ninab302.upload.use_1200bps_touch=true +ninab302.upload.wait_for_upload_port=true +ninab302.upload.maximum_size=815104 +ninab302.upload.maximum_data_size=237568 + +# Build +ninab302.build.mcu=cortex-m4 +ninab302.build.f_cpu=64000000 +ninab302.build.board=NINA_B302_ublox +ninab302.build.core=nRF5 +ninab302.build.variant=NINA_B302_ublox +ninab302.build.usb_manufacturer="Nordic" +ninab302.build.usb_product="NINA B302 ublox" +ninab302.build.extra_flags=-DNRF52840_XXAA -DNINA_B302_ublox {build.flags.usb} +ninab302.build.ldscript=nrf52840_s140_v6.ld +ninab302.build.vid=0x239A +ninab302.build.pid=0x8029 + +# SofDevice Menu +ninab302.menu.softdevice.s140v6=0.3.2 SoftDevice s140 6.1.1 +ninab302.menu.softdevice.s140v6.build.sd_name=s140 +ninab302.menu.softdevice.s140v6.build.sd_version=6.1.1 +ninab302.menu.softdevice.s140v6.build.sd_fwid=0x00B6 + +# Debug Menu +ninab302.menu.debug.l0=Level 0 (Release) +ninab302.menu.debug.l0.build.debug_flags=-DCFG_DEBUG=0 +ninab302.menu.debug.l1=Level 1 (Error Message) +ninab302.menu.debug.l1.build.debug_flags=-DCFG_DEBUG=1 +ninab302.menu.debug.l2=Level 2 (Full Debug) +ninab302.menu.debug.l2.build.debug_flags=-DCFG_DEBUG=2 +ninab302.menu.debug.l3=Level 3 (Segger SystemView) +ninab302.menu.debug.l3.build.debug_flags=-DCFG_DEBUG=3 +ninab302.menu.debug.l3.build.sysview_flags=-DCFG_SYSVIEW=1 + +# ---------------------------------- +# NINA B112 +# ---------------------------------- +ninab112.name=NINA B112 ublox +ninab112.bootloader.tool=bootburn + +# Upload +ninab112.upload.tool=nrfutil +ninab112.upload.protocol=nrfutil +ninab112.upload.use_1200bps_touch=false +ninab112.upload.wait_for_upload_port=false +ninab112.upload.native_usb=false +ninab112.upload.maximum_size=290816 +ninab112.upload.maximum_data_size=52224 + +# Build +ninab112.build.mcu=cortex-m4 +ninab112.build.f_cpu=64000000 +ninab112.build.board=NINA_B112_ublox +ninab112.build.core=nRF5 +ninab112.build.variant=NINA_B112_ublox +feather52840.build.usb_manufacturer="Adafruit LLC" +feather52840.build.usb_product="Feather nRF52832" +ninab112.build.extra_flags=-DNRF52832_XXAA -DNINA_B112_ublox -DNRF52 +ninab112.build.ldscript=nrf52832_s132_v6.ld + +# SofDevice Menu +ninab112.menu.softdevice.s132v6=0.3.2 SoftDevice s132 6.1.1 +ninab112.menu.softdevice.s132v6.build.sd_name=s132 +ninab112.menu.softdevice.s132v6.build.sd_version=6.1.1 +ninab112.menu.softdevice.s132v6.build.sd_fwid=0x00B7 + +# Debug Menu +ninab112.menu.debug.l0=Level 0 (Release) +ninab112.menu.debug.l0.build.debug_flags=-DCFG_DEBUG=0 +ninab112.menu.debug.l1=Level 1 (Error Message) +ninab112.menu.debug.l1.build.debug_flags=-DCFG_DEBUG=1 +ninab112.menu.debug.l2=Level 2 (Full Debug) +ninab112.menu.debug.l2.build.debug_flags=-DCFG_DEBUG=2 +ninab112.menu.debug.l3=Level 3 (Segger SystemView) +ninab112.menu.debug.l3.build.debug_flags=-DCFG_DEBUG=3 +ninab112.menu.debug.l3.build.sysview_flags=-DCFG_SYSVIEW=1 diff --git a/Packages_Patches/adafruit/hardware/nrf52/0.21.0/cores/nRF5/Udp.h b/Packages_Patches/adafruit/hardware/nrf52/0.21.0/cores/nRF5/Udp.h new file mode 100644 index 0000000..cc814d3 --- /dev/null +++ b/Packages_Patches/adafruit/hardware/nrf52/0.21.0/cores/nRF5/Udp.h @@ -0,0 +1,92 @@ +/* + * Udp.cpp: Library to send/receive UDP packets. + * + * NOTE: UDP is fast, but has some important limitations (thanks to Warren Gray for mentioning these) + * 1) UDP does not guarantee the order in which assembled UDP packets are received. This + * might not happen often in practice, but in larger network topologies, a UDP + * packet can be received out of sequence. + * 2) UDP does not guard against lost packets - so packets *can* disappear without the sender being + * aware of it. Again, this may not be a concern in practice on small local networks. + * For more information, see http://www.cafeaulait.org/course/week12/35.html + * + * MIT License: + * Copyright (c) 2008 Bjoern Hartmann + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * bjoern@cs.stanford.edu 12/30/2008 + */ + +#ifndef udp_h +#define udp_h + +#include +#include + +class UDP : public Stream { + +public: + virtual uint8_t begin(uint16_t) =0; // initialize, start listening on specified port. Returns 1 if successful, 0 if there are no sockets available to use + + // KH, add virtual function to support Multicast, necessary for many services (MDNS, UPnP, etc.) + virtual uint8_t beginMulticast(IPAddress, uint16_t) { return 0; } // initialize, start listening on specified multicast IP address and port. Returns 1 if successful, 0 on failure + + virtual void stop() =0; // Finish with the UDP socket + + // Sending UDP packets + + // Start building up a packet to send to the remote host specific in ip and port + // Returns 1 if successful, 0 if there was a problem with the supplied IP address or port + virtual int beginPacket(IPAddress ip, uint16_t port) =0; + // Start building up a packet to send to the remote host specific in host and port + // Returns 1 if successful, 0 if there was a problem resolving the hostname or port + virtual int beginPacket(const char *host, uint16_t port) =0; + // Finish off this packet and send it + // Returns 1 if the packet was sent successfully, 0 if there was an error + virtual int endPacket() =0; + // Write a single byte into the packet + virtual size_t write(uint8_t) =0; + // Write size bytes from buffer into the packet + virtual size_t write(const uint8_t *buffer, size_t size) =0; + + // Start processing the next available incoming packet + // Returns the size of the packet in bytes, or 0 if no packets are available + virtual int parsePacket() =0; + // Number of bytes remaining in the current packet + virtual int available() =0; + // Read a single byte from the current packet + virtual int read() =0; + // Read up to len bytes from the current packet and place them into buffer + // Returns the number of bytes read, or 0 if none are available + virtual int read(unsigned char* buffer, size_t len) =0; + // Read up to len characters from the current packet and place them into buffer + // Returns the number of characters read, or 0 if none are available + virtual int read(char* buffer, size_t len) =0; + // Return the next byte from the current packet without moving on to the next byte + virtual int peek() =0; + virtual void flush() =0; // Finish reading the current packet + + // Return the IP address of the host who sent the current incoming packet + virtual IPAddress remoteIP() =0; + // Return the port of the host who sent the current incoming packet + virtual uint16_t remotePort() =0; +protected: + uint8_t* rawIPAddress(IPAddress& addr) { return addr.raw_address(); }; +}; + +#endif diff --git a/Packages_Patches/adafruit/hardware/nrf52/0.21.0/platform.txt b/Packages_Patches/adafruit/hardware/nrf52/0.21.0/platform.txt new file mode 100644 index 0000000..3de4b45 --- /dev/null +++ b/Packages_Patches/adafruit/hardware/nrf52/0.21.0/platform.txt @@ -0,0 +1,164 @@ +# Copyright (c) 2014-2015 Arduino LLC. All right reserved. +# Copyright (c) 2016 Sandeep Mistry All right reserved. +# Copyright (c) 2017 Adafruit Industries. All rights reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +name=Adafruit nRF52 Boards +version=0.21.0 + +# 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 -Wno-unused-parameter -Wno-missing-field-initializers -Wno-pointer-arith + +# Allow changing optimization settings via platform.local.txt / boards.local.txt +compiler.optimization_flag=-Ofast + +compiler.path={runtime.tools.arm-none-eabi-gcc.path}/bin/ +compiler.c.cmd=arm-none-eabi-gcc +compiler.c.flags=-mcpu={build.mcu} -mthumb -c -g {compiler.warning_flags} {build.float_flags} -std=gnu11 -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -MMD + +# KH, Error here to use gcc, must use g++ +#compiler.c.elf.cmd=arm-none-eabi-gcc +compiler.c.elf.cmd=arm-none-eabi-g++ + +compiler.c.elf.flags={compiler.optimization_flag} -Wl,--gc-sections -save-temps +compiler.S.cmd=arm-none-eabi-gcc +compiler.S.flags=-c -g -x assembler-with-cpp +compiler.cpp.cmd=arm-none-eabi-g++ +compiler.cpp.flags=-mcpu={build.mcu} -mthumb -c -g {compiler.warning_flags} {build.float_flags} -std=gnu++11 -ffunction-sections -fdata-sections -fno-threadsafe-statics -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -MMD +compiler.ar.cmd=arm-none-eabi-ar +compiler.ar.flags=rcs +compiler.objcopy.cmd=arm-none-eabi-objcopy +compiler.objcopy.eep.flags=-O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 +compiler.elf2bin.flags=-O binary +compiler.elf2bin.cmd=arm-none-eabi-objcopy +compiler.elf2hex.flags=-O ihex +compiler.elf2hex.cmd=arm-none-eabi-objcopy +compiler.ldflags=-mcpu={build.mcu} -mthumb {build.float_flags} -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align --specs=nano.specs --specs=nosys.specs +compiler.size.cmd=arm-none-eabi-size + +# this can be overriden in boards.txt +build.float_flags=-mfloat-abi=hard -mfpu=fpv4-sp-d16 -u _printf_float +build.debug_flags=-DCFG_DEBUG=0 +build.logger_flags=-DCFG_LOGGER=1 +build.sysview_flags=-DCFG_SYSVIEW=0 + +# common compiler for nrf +rtos.path={build.core.path}/freertos +nordic.path={build.core.path}/nordic + +# build.logger_flags and build.sysview_flags and intentionally empty, +# to allow modification via a user's own boards.local.txt or platform.local.txt files. +build.flags.nrf= -DSOFTDEVICE_PRESENT -DARDUINO_NRF52_ADAFRUIT -DNRF52_SERIES -DLFS_NAME_MAX=64 {compiler.optimization_flag} {build.debug_flags} {build.logger_flags} {build.sysview_flags} "-I{build.core.path}/cmsis/Core/Include" "-I{nordic.path}" "-I{nordic.path}/nrfx" "-I{nordic.path}/nrfx/hal" "-I{nordic.path}/nrfx/mdk" "-I{nordic.path}/nrfx/soc" "-I{nordic.path}/nrfx/drivers/include" "-I{nordic.path}/nrfx/drivers/src" "-I{nordic.path}/softdevice/{build.sd_name}_nrf52_{build.sd_version}_API/include" "-I{nordic.path}/softdevice/{build.sd_name}_nrf52_{build.sd_version}_API/include/nrf52" "-I{rtos.path}/Source/include" "-I{rtos.path}/config" "-I{rtos.path}/portable/GCC/nrf52" "-I{rtos.path}/portable/CMSIS/nrf52" "-I{build.core.path}/sysview/SEGGER" "-I{build.core.path}/sysview/Config" "-I{build.core.path}/TinyUSB" "-I{build.core.path}/TinyUSB/Adafruit_TinyUSB_ArduinoCore" "-I{build.core.path}/TinyUSB/Adafruit_TinyUSB_ArduinoCore/tinyusb/src" + +# usb flags +build.flags.usb= -DUSBCON -DUSE_TINYUSB -DUSB_VID={build.vid} -DUSB_PID={build.pid} '-DUSB_MANUFACTURER={build.usb_manufacturer}' '-DUSB_PRODUCT={build.usb_product}' + +# These can be overridden in platform.local.txt +compiler.c.extra_flags= +compiler.c.elf.extra_flags= +compiler.cpp.extra_flags= +compiler.S.extra_flags= +compiler.ar.extra_flags= +compiler.libraries.ldflags= +compiler.elf2bin.extra_flags= +compiler.elf2hex.extra_flags= + + +# Compile patterns +# ---------------- + +## Compile c files +## KH Add -DBOARD_NAME="{build.board}" +recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.c.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DBOARD_NAME="{build.board}" -DARDUINO_ARCH_{build.arch} '-DARDUINO_BSP_VERSION="{version}"' {compiler.c.extra_flags} {build.extra_flags} {build.flags.nrf} {includes} "{source_file}" -o "{object_file}" + +## Compile c++ files +## KH Add -DBOARD_NAME="{build.board}" +recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DBOARD_NAME="{build.board}" -DARDUINO_ARCH_{build.arch} '-DARDUINO_BSP_VERSION="{version}"' {compiler.cpp.extra_flags} {build.extra_flags} {build.flags.nrf} {includes} "{source_file}" -o "{object_file}" + +## Compile S files +## KH Add -DBOARD_NAME="{build.board}" +recipe.S.o.pattern="{compiler.path}{compiler.S.cmd}" {compiler.S.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DBOARD_NAME="{build.board}" -DARDUINO_ARCH_{build.arch} {compiler.S.extra_flags} {build.extra_flags} {build.flags.nrf} {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} "-L{build.core.path}/linker" "-T{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.ldflags} -o "{build.path}/{build.project_name}.elf" {object_files} {compiler.libraries.ldflags} -Wl,--start-group -lm "{build.path}/{archive_file}" -Wl,--end-group + +## Create output (bin file) +#recipe.objcopy.bin.pattern="{compiler.path}{compiler.elf2bin.cmd}" {compiler.elf2bin.flags} {compiler.elf2bin.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.flags} {compiler.elf2hex.extra_flags} "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.hex" + +## Create dfu package zip file +recipe.objcopy.zip.pattern="{tools.nrfutil.cmd}" dfu genpkg --dev-type 0x0052 --sd-req {build.sd_fwid} --application "{build.path}/{build.project_name}.hex" "{build.path}/{build.project_name}.zip" + +## Create uf2 file +#recipe.objcopy.uf2.pattern=python "{runtime.platform.path}/tools/uf2conv/uf2conv.py" -f 0xADA52840 -c -o "{build.path}/{build.project_name}.uf2" "{build.path}/{build.project_name}.hex" + +## Save bin +recipe.output.tmp_file_bin={build.project_name}.bin +recipe.output.save_file_bin={build.project_name}.save.bin + +## Save hex +recipe.output.tmp_file_hex={build.project_name}.hex +recipe.output.save_file_hexu={build.project_name}.save.hex + +## Compute size +recipe.size.pattern="{compiler.path}{compiler.size.cmd}" -A "{build.path}/{build.project_name}.elf" +recipe.size.regex=^(?:\.text|\.data|)\s+([0-9]+).* +recipe.size.regex.data=^(?:\.data|\.bss)\s+([0-9]+).* + +## Export Compiled Binary +recipe.output.tmp_file={build.project_name}.hex +recipe.output.save_file={build.project_name}.{build.variant}.hex + +#*************************************************** +# adafruit-nrfutil for uploading +# https://github.com/adafruit/Adafruit_nRF52_nrfutil +# pre-built binaries are provided for macos and windows +#*************************************************** +tools.nrfutil.cmd=adafruit-nrfutil +tools.nrfutil.cmd.windows={runtime.platform.path}/tools/adafruit-nrfutil/win32/adafruit-nrfutil.exe +tools.nrfutil.cmd.macosx={runtime.platform.path}/tools/adafruit-nrfutil/macos/adafruit-nrfutil + +tools.nrfutil.upload.params.verbose=--verbose +tools.nrfutil.upload.params.quiet= +tools.nrfutil.upload.pattern="{cmd}" {upload.verbose} dfu serial -pkg "{build.path}/{build.project_name}.zip" -p {serial.port} -b 115200 --singlebank + +#*************************************************** +# Burning bootloader with either jlink or nrfutil +#*************************************************** + +# Bootloader version +tools.bootburn.bootloader.file={runtime.platform.path}/bootloader/{build.variant}/{build.variant}_bootloader-0.3.2_{build.sd_name}_{build.sd_version} + +tools.bootburn.bootloader.params.verbose= +tools.bootburn.bootloader.params.quiet= +tools.bootburn.bootloader.pattern={program.burn_pattern} + +# erase flash page while programming +tools.bootburn.erase.params.verbose= +tools.bootburn.erase.params.quiet= +tools.bootburn.erase.pattern= + diff --git a/Packages_Patches/adafruit/hardware/nrf52/0.21.0/variants/NINA_B112_ublox/pins_arduino.h b/Packages_Patches/adafruit/hardware/nrf52/0.21.0/variants/NINA_B112_ublox/pins_arduino.h new file mode 100644 index 0000000..3ef4d4a --- /dev/null +++ b/Packages_Patches/adafruit/hardware/nrf52/0.21.0/variants/NINA_B112_ublox/pins_arduino.h @@ -0,0 +1,17 @@ +/* + Copyright (c) 2014-2015 Arduino LLC. All right reserved. + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +// API compatibility +#include "variant.h" diff --git a/Packages_Patches/adafruit/hardware/nrf52/0.21.0/variants/NINA_B112_ublox/variant.cpp b/Packages_Patches/adafruit/hardware/nrf52/0.21.0/variants/NINA_B112_ublox/variant.cpp new file mode 100644 index 0000000..a68820c --- /dev/null +++ b/Packages_Patches/adafruit/hardware/nrf52/0.21.0/variants/NINA_B112_ublox/variant.cpp @@ -0,0 +1,62 @@ +/* + Copyright (c) 2014-2015 Arduino LLC. All right reserved. + Copyright (c) 2016 Sandeep Mistry All right reserved. + Copyright (c) 2018, Adafruit Industries (adafruit.com) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ +// Thanks to great work of [Miguel Alexandre Wisintainer](https://github.com/tcpipchip). +// See [u-blox nina b](https://github.com/khoih-prog/WiFiNINA_Generic/issues/1) + +#include "variant.h" +#include "wiring_constants.h" +#include "wiring_digital.h" +#include "nrf.h" + +const uint32_t g_ADigitalPinMap[] = { + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31 + }; + diff --git a/Packages_Patches/adafruit/hardware/nrf52/0.21.0/variants/NINA_B112_ublox/variant.h b/Packages_Patches/adafruit/hardware/nrf52/0.21.0/variants/NINA_B112_ublox/variant.h new file mode 100644 index 0000000..42c7791 --- /dev/null +++ b/Packages_Patches/adafruit/hardware/nrf52/0.21.0/variants/NINA_B112_ublox/variant.h @@ -0,0 +1,173 @@ +/* + Copyright (c) 2014-2015 Arduino LLC. All right reserved. + Copyright (c) 2016 Sandeep Mistry All right reserved. + Copyright (c) 2018, Adafruit Industries (adafruit.com) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef _VARIANT_NINA_B112_UBLOX_ +#define _VARIANT_NINA_B112_UBLOX_ + +#define NRF_CLOCK_LFCLKSRC {.source = NRF_CLOCK_LF_SRC_XTAL, \ + .rc_ctiv = 0, \ +.rc_temp_ctiv = 0, \ +.xtal_accuracy = NRF_CLOCK_LF_XTAL_ACCURACY_20_PPM} + +/** Master clock frequency */ +#define VARIANT_MCK (64000000ul) + +#define USE_LFXO // Board uses 32khz crystal for LF +// define USE_LFRC // Board uses RC for LF + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ + +#include "WVariant.h" + +#ifdef __cplusplus +extern "C" +{ +#endif // __cplusplus + +// Number of pins defined in PinDescription array +#define PINS_COUNT (32u) +#define NUM_DIGITAL_PINS (32u) +#define NUM_ANALOG_INPUTS (6u) +#define NUM_ANALOG_OUTPUTS (0u) + +// LEDs +#define PIN_LED LED1 +#define LED_BUILTIN PIN_LED + +//LEDs onboard +#define LED1 (8) // Red +#define LED2 (16) // Green/SW1 +#define LED3 (18) // Blue + +#define LED_STATE_ON 1 // State when LED is litted + +//Switch + +#define SW1 (16) +#define SW2 (30) + +// NFC +#define PIN_NFC_1 (9) // P0.9 +#define PIN_NFC_2 (10) // P0.10 + +/* + * Analog pins + */ +#define PIN_A0 (3) // P0.03 +#define PIN_A1 (2) // P0.02 +#define PIN_A2 (4) // P0.04 +#define PIN_A3 (30) // P0.30 +#define PIN_A4 (29) // P0.29 +#define PIN_A5 (28) // P0.28 + +static const uint8_t A0 = PIN_A0 ; +static const uint8_t A1 = PIN_A1 ; +static const uint8_t A2 = PIN_A2 ; +static const uint8_t A3 = PIN_A3 ; +static const uint8_t A4 = PIN_A4 ; +static const uint8_t A5 = PIN_A5 ; + +#define ADC_RESOLUTION 14 + +#define PIN_D0 (5) // P0.05 +#define PIN_D1 (6) // P0.06 +#define PIN_D2 (7) // P0.07 +#define PIN_D3 (31) // P0.31 +#define PIN_D4 (18) // P0.18 +#define PIN_D6 (9) // P0.09 +#define PIN_D7 (10) // P0.10 +#define PIN_D9 (8) // P0.8 +#define PIN_D10 (11) // P0.11 +#define PIN_D11 (13) // P0.13 +#define PIN_D12 (12) // P0.12 +#define PIN_D13 (14) // P0.14 +#define PIN_D14 (2) // P0.02 +#define PIN_D15 (3) // P0.03 + +static const uint8_t D0 = PIN_D0 ; +static const uint8_t D1 = PIN_D1 ; +static const uint8_t D2 = PIN_D2 ; +static const uint8_t D3 = PIN_D3 ; +static const uint8_t D4 = PIN_D4 ; +static const uint8_t D6 = PIN_D6 ; +static const uint8_t D7 = PIN_D7 ; +static const uint8_t D9 = PIN_D9 ; +static const uint8_t D10 = PIN_D10 ; +static const uint8_t D11 = PIN_D11 ; +static const uint8_t D12 = PIN_D12 ; +static const uint8_t D13 = PIN_D13 ; +static const uint8_t D14 = PIN_D14 ; +static const uint8_t D15 = PIN_D15 ; + +// Other pins +//static const uint8_t AREF = PIN_AREF; + +//#define PIN_AREF (24) +//#define PIN_VBAT PIN_A7 + +/* + * Serial interfaces + */ +//#define PIN_SERIAL_RX (8) //used for original Adafruit Bootloader +//#define PIN_SERIAL_TX (6) //used for original Adafruit Bootloader + +#define PIN_SERIAL_RX (5) // P0.05 +#define PIN_SERIAL_TX (6) // P0.06 +#define PIN_SERIAL_CTS (7) // P0.07 +#define PIN_SERIAL_RTS (31) // P0.31 +#define PIN_SERIAL_DTR (28) // P0.28 +#define PIN_SERIAL_DSR (29) // P0.29 + +/* + * SPI Interfaces + */ +#define SPI_INTERFACES_COUNT 1 + +#define PIN_SPI_MISO (12) // P0.12 +#define PIN_SPI_MOSI (13) // P0.13 +#define PIN_SPI_SCK (14) // P0.14 + +static const uint8_t SS = 11 ; // P0.11 +static const uint8_t MOSI = PIN_SPI_MOSI ; +static const uint8_t MISO = PIN_SPI_MISO ; +static const uint8_t SCK = PIN_SPI_SCK ; + +/* + * Wire Interfaces + */ +#define WIRE_INTERFACES_COUNT 1 + +#define PIN_WIRE_SDA (2) // P0.02 +#define PIN_WIRE_SCL (3) // P0.03 + +static const uint8_t SDA = PIN_WIRE_SDA; +static const uint8_t SCL = PIN_WIRE_SCL; + + +#ifdef __cplusplus +} +#endif + +/*---------------------------------------------------------------------------- + * Arduino objects - C++ only + *----------------------------------------------------------------------------*/ + + +#endif //_VARIANT_NINA_B112_UBLOX_ diff --git a/Packages_Patches/adafruit/hardware/nrf52/0.21.0/variants/NINA_B302_ublox/pins_arduino.h b/Packages_Patches/adafruit/hardware/nrf52/0.21.0/variants/NINA_B302_ublox/pins_arduino.h new file mode 100644 index 0000000..3ef4d4a --- /dev/null +++ b/Packages_Patches/adafruit/hardware/nrf52/0.21.0/variants/NINA_B302_ublox/pins_arduino.h @@ -0,0 +1,17 @@ +/* + Copyright (c) 2014-2015 Arduino LLC. All right reserved. + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +// API compatibility +#include "variant.h" diff --git a/Packages_Patches/adafruit/hardware/nrf52/0.21.0/variants/NINA_B302_ublox/variant.cpp b/Packages_Patches/adafruit/hardware/nrf52/0.21.0/variants/NINA_B302_ublox/variant.cpp new file mode 100644 index 0000000..b51ac2f --- /dev/null +++ b/Packages_Patches/adafruit/hardware/nrf52/0.21.0/variants/NINA_B302_ublox/variant.cpp @@ -0,0 +1,109 @@ +/* + Copyright (c) 2014-2015 Arduino LLC. All right reserved. + Copyright (c) 2016 Sandeep Mistry All right reserved. + Copyright (c) 2018, Adafruit Industries (adafruit.com) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ +// Thanks to great work of [Miguel Alexandre Wisintainer](https://github.com/tcpipchip). +// See [u-blox nina b](https://github.com/khoih-prog/WiFiNINA_Generic/issues/1) + +#include "variant.h" +#include "wiring_constants.h" +#include "wiring_digital.h" +#include "nrf.h" + +const uint32_t g_ADigitalPinMap[] = +{ + // D0 .. D13 + 29, // D0 is P0.29 (UART TX) + 45, // D1 is P1.13 (UART RX + 44, // D2 is P1.12 (NFC2) + 31, // D3 is P0.31 (LED1) + 13, // D4 is P0.13 (LED2) + 11, // D5 is P0.11 + 9, // D6 is P0.09 + 10, // D7 is P0.10 (Button) + 41, // D8 is P1.09 (NeoPixel) + 12, // D9 is P0.12 + 14, // D10 is P0.14 + 15, // D11 is P0.15 + 32, // D12 is P1.00 + 7, // D13 is P0.07 + + // D14 .. D21 (aka A0 .. A7) + 4, // D14 is P0.04 (A0) + 30, // D15 is P0.30 (A1) + 5, // D16 is P0.05 (A2) + 2, // D17 is P0.02 (A3) + 28, // D18 is P0.28 (A4) + 3, // D19 is P0.03 (A5) + 29, // D20 is P0.29 (A6, Battery) ???? + 31, // D21 is P0.31 (A7, ARef) ???? + + // D22 .. D23 (aka I2C pins) + 16, // D22 is P0.16 (SDA) + 24, // D23 is P0.24 (SCL) + + // D24 .. D26 (aka SPI pins) + 32, // D24 is P1.00 (SPI MISO) + 15, // D25 is P0.15 (SPI MOSI) + 7, // D26 is P0.07 (SPI SCK ) + + // QSPI pins (not exposed via any header / test point) + 19, // D27 is P0.19 (QSPI CLK) + 17, // D28 is P0.17 (QSPI CS) + 20, // D29 is P0.20 (QSPI Data 0) + 21, // D30 is P0.21 (QSPI Data 1) + 22, // D31 is P0.22 (QSPI Data 2) + 23, // D32 is P0.23 (QSPI Data 3) + + // The remaining NFC pin + 9, // D33 is P0.09 (NFC1, exposed only via test point on bottom of board) + + // Thus, there are 34 defined pins + + // The remaining pins are not usable: + // + // + // The following pins were never listed as they were considered unusable + // 0, // P0.00 is XL1 (attached to 32.768kHz crystal) + // 1, // P0.01 is XL2 (attached to 32.768kHz crystal) + // 18, // P0.18 is RESET (attached to switch) + // 32, // P1.00 is SWO (attached to debug header) + // + // The remaining pins are not connected (per schematic) + // 33, // P1.01 is not connected per schematic + // 35, // P1.03 is not connected per schematic + // 36, // P1.04 is not connected per schematic + // 37, // P1.05 is not connected per schematic + // 38, // P1.06 is not connected per schematic + // 39, // P1.07 is not connected per schematic + // 43, // P1.11 is not connected per schematic + // 44, // P1.12 is not connected per schematic + // 45, // P1.13 is not connected per schematic + // 46, // P1.14 is not connected per schematic +}; + +void initVariant() +{ + // LED1 & LED2 + pinMode(PIN_LED1, OUTPUT); + ledOff(PIN_LED1); + + pinMode(PIN_LED2, OUTPUT); + ledOff(PIN_LED2); +} + diff --git a/Packages_Patches/adafruit/hardware/nrf52/0.21.0/variants/NINA_B302_ublox/variant.h b/Packages_Patches/adafruit/hardware/nrf52/0.21.0/variants/NINA_B302_ublox/variant.h new file mode 100644 index 0000000..a5b7eb9 --- /dev/null +++ b/Packages_Patches/adafruit/hardware/nrf52/0.21.0/variants/NINA_B302_ublox/variant.h @@ -0,0 +1,159 @@ + /* + Copyright (c) 2014-2015 Arduino LLC. All right reserved. + Copyright (c) 2016 Sandeep Mistry All right reserved. + Copyright (c) 2018, Adafruit Industries (adafruit.com) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +// Thanks to great work of [Miguel Alexandre Wisintainer](https://github.com/tcpipchip). +// See [u-blox nina b](https://github.com/khoih-prog/WiFiNINA_Generic/issues/1) + +#ifndef _VARIANT_NINA_B302_UBLOX_ +#define _VARIANT_NINA_B302_UBLOX_ + +/** Master clock frequency */ +#define VARIANT_MCK (64000000ul) + +#define USE_LFXO // Board uses 32khz crystal for LF +// define USE_LFRC // Board uses RC for LF + +/*---------------------------------------------------------------------------- + * Headers + *----------------------------------------------------------------------------*/ + +#include "WVariant.h" + +#ifdef __cplusplus +extern "C" +{ +#endif // __cplusplus +// (XX) = TABLE INDEX +// Number of pins defined in PinDescription array +#define PINS_COUNT (34) +#define NUM_DIGITAL_PINS (34) +#define NUM_ANALOG_INPUTS (6) // A6 is used for battery, A7 is analog reference +#define NUM_ANALOG_OUTPUTS (0) + +// LEDs +#define PIN_LED1 (3) +#define PIN_LED2 (4) +#define PIN_NEOPIXEL (8) + +#define LED_BUILTIN PIN_LED1 +#define LED_CONN PIN_LED2 + +#define LED_RED PIN_LED1 +#define LED_BLUE PIN_LED2 + +#define LED_STATE_ON 1 // State when LED is litted + +/* + * Buttons + */ +#define PIN_BUTTON1 (7) + +/* + * Analog pins + */ +#define PIN_A0 (14) +#define PIN_A1 (15) +#define PIN_A2 (16) +#define PIN_A3 (17) +#define PIN_A4 (18) +#define PIN_A5 (19) +#define PIN_A6 (20) +#define PIN_A7 (21) + +#define D0 (0) +#define D1 (1) +#define D2 (2) +#define D3 (3) +#define D4 (4) +#define D5 (5) +#define D6 (6) +#define D7 (7) +#define D8 (8) +#define D9 (9) +#define D10 (10) +#define D11 (11) +#define D12 (12) +#define D13 (13) + +static const uint8_t A0 = PIN_A0 ; +static const uint8_t A1 = PIN_A1 ; +static const uint8_t A2 = PIN_A2 ; +static const uint8_t A3 = PIN_A3 ; +static const uint8_t A4 = PIN_A4 ; +static const uint8_t A5 = PIN_A5 ; +static const uint8_t A6 = PIN_A6 ; +static const uint8_t A7 = PIN_A7 ; +#define ADC_RESOLUTION 14 + +// Other pins +#define PIN_AREF PIN_A7 +#define PIN_VBAT PIN_A6 +#define PIN_NFC1 (33) +#define PIN_NFC2 (2) + +static const uint8_t AREF = PIN_AREF; + +/* + * Serial interfaces + */ +#define PIN_SERIAL1_RX (1) +#define PIN_SERIAL1_TX (0) + +/* + * SPI Interfaces + */ +#define SPI_INTERFACES_COUNT 1 + +#define PIN_SPI_MISO (24) //24 original +#define PIN_SPI_MOSI (25) //25 original +#define PIN_SPI_SCK (26) //26 original + +static const uint8_t SS = (13); +static const uint8_t MOSI = PIN_SPI_MOSI; +static const uint8_t MISO = PIN_SPI_MISO; +static const uint8_t SCK = PIN_SPI_SCK; + +/* + * Wire Interfaces + */ +#define WIRE_INTERFACES_COUNT 1 + +#define PIN_WIRE_SDA (22) +#define PIN_WIRE_SCL (23) + +// QSPI Pins +#define PIN_QSPI_SCK 27 +#define PIN_QSPI_CS 28 +#define PIN_QSPI_IO0 29 +#define PIN_QSPI_IO1 30 +#define PIN_QSPI_IO2 31 +#define PIN_QSPI_IO3 32 + +// On-board QSPI Flash +#define EXTERNAL_FLASH_DEVICES GD25Q16C +#define EXTERNAL_FLASH_USE_QSPI + +#ifdef __cplusplus +} +#endif + +/*---------------------------------------------------------------------------- + * Arduino objects - C++ only + *----------------------------------------------------------------------------*/ + +#endif //_VARIANT_NINA_B302_UBLOX_ diff --git a/Packages_Patches/adafruit/hardware/samd/1.6.3/platform.txt b/Packages_Patches/adafruit/hardware/samd/1.6.3/platform.txt new file mode 100644 index 0000000..9683594 --- /dev/null +++ b/Packages_Patches/adafruit/hardware/samd/1.6.3/platform.txt @@ -0,0 +1,226 @@ +# Copyright (c) 2014-2015 Arduino LLC. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +# Arduino SAMD Core and platform. +# +# For more info: +# https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification + +name=Adafruit SAMD (32-bits ARM Cortex-M0+ and Cortex-M4) Boards +version=1.6.3 + +# Compile variables +# ----------------- + +compiler.warning_flags=-w +compiler.warning_flags.none=-w +compiler.warning_flags.default= +compiler.warning_flags.more=-Wall -Wno-expansion-to-defined +compiler.warning_flags.all=-Wall -Wextra -Wno-expansion-to-defined + +compiler.path={runtime.tools.arm-none-eabi-gcc.path}/bin/ +compiler.c.cmd=arm-none-eabi-gcc +compiler.c.flags=-mcpu={build.mcu} -mthumb -c -g -Os {compiler.warning_flags} -std=gnu11 -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -MMD -D__SKETCH_NAME__="""{build.project_name}""" +compiler.c.elf.cmd=arm-none-eabi-g++ +compiler.c.elf.flags=-Os -Wl,--gc-sections -save-temps +compiler.S.cmd=arm-none-eabi-gcc +compiler.S.flags=-c -g -x assembler-with-cpp -MMD +compiler.cpp.cmd=arm-none-eabi-g++ +compiler.cpp.flags=-mcpu={build.mcu} -mthumb -c -g -Os {compiler.warning_flags} -std=gnu++11 -ffunction-sections -fdata-sections -fno-threadsafe-statics -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -MMD -D__SKETCH_NAME__="""{build.project_name}""" +compiler.ar.cmd=arm-none-eabi-ar +compiler.ar.flags=rcs +compiler.objcopy.cmd=arm-none-eabi-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.bin.flags=-O binary +compiler.elf2hex.hex.flags=-O ihex -R .eeprom +compiler.elf2hex.cmd=arm-none-eabi-objcopy +compiler.ldflags=-mcpu={build.mcu} -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align +compiler.size.cmd=arm-none-eabi-size +compiler.define=-DARDUINO= +compiler.readelf.cmd=arm-none-eabi-readelf + +# this can be overriden in boards.txt +build.extra_flags= +build.cache_flags= +build.flags.optimize= +build.flags.maxspi= +build.flags.maxqspi= +build.flags.usbstack= +build.flags.debug= + +# These can be overridden in platform.local.txt +compiler.c.extra_flags= +compiler.c.elf.extra_flags= +#compiler.c.elf.extra_flags=-v +compiler.cpp.extra_flags= +compiler.S.extra_flags= +compiler.ar.extra_flags= +compiler.elf2hex.extra_flags= + +compiler.arm.cmsis.c.flags="-I{runtime.tools.CMSIS-5.4.0.path}/CMSIS/Core/Include/" "-I{runtime.tools.CMSIS-5.4.0.path}/CMSIS/DSP/Include/" "-I{runtime.tools.CMSIS-Atmel-1.2.0.path}/CMSIS/Device/ATMEL/" +compiler.arm.cmsis.ldflags="-L{runtime.tools.CMSIS-5.4.0.path}/CMSIS/Lib/GCC/" -larm_cortexM0l_math + +compiler.libraries.ldflags= + +# USB Flags +# --------- +build.usb_flags=-DUSB_VID={build.vid} -DUSB_PID={build.pid} -DUSBCON -DUSB_CONFIG_POWER={build.usb_power} '-DUSB_MANUFACTURER={build.usb_manufacturer}' '-DUSB_PRODUCT={build.usb_product}' {build.flags.usbstack} {build.flags.debug} "-I{build.core.path}/TinyUSB" "-I{build.core.path}/TinyUSB/Adafruit_TinyUSB_ArduinoCore" "-I{build.core.path}/TinyUSB/Adafruit_TinyUSB_ArduinoCore/tinyusb/src" + +# Default advertised device power setting in mA +build.usb_power=100 + +# 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" + + +# Compile patterns +# ---------------- + +## Compile c files +## KH Add -DBOARD_NAME="{build.board}" +recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.c.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DBOARD_NAME="{build.board}" -DARDUINO_ARCH_{build.arch} {compiler.c.extra_flags} {build.extra_flags} {build.cache_flags} {build.flags.debug} {build.flags.optimize} {build.flags.maxspi} {build.flags.maxqspi} {compiler.arm.cmsis.c.flags} {includes} "{source_file}" -o "{object_file}" + +## Compile c++ files +## KH Add -DBOARD_NAME="{build.board}" +recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DBOARD_NAME="{build.board}" -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {build.cache_flags} {build.flags.debug} {build.flags.optimize} {build.flags.maxspi} {build.flags.maxqspi} {build.extra_flags} {compiler.arm.cmsis.c.flags} {includes} "{source_file}" -o "{object_file}" + +## Compile S files +## KH Add -DBOARD_NAME="{build.board}" +recipe.S.o.pattern="{compiler.path}{compiler.S.cmd}" {compiler.S.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DBOARD_NAME="{build.board}" -DARDUINO_ARCH_{build.arch} {compiler.S.extra_flags} {build.extra_flags} {build.cache_flags} {compiler.arm.cmsis.c.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}" "-L{build.path}" {compiler.c.elf.flags} {compiler.c.elf.extra_flags} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" --specs=nano.specs --specs=nosys.specs {compiler.ldflags} -o "{build.path}/{build.project_name}.elf" {object_files} {compiler.libraries.ldflags} -Wl,--start-group {compiler.arm.cmsis.ldflags} "-L{build.variant.path}" -lm "{build.path}/{archive_file}" -Wl,--end-group + +## 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" + +build.preferred_out_format=bin + +## Save hex +recipe.output.tmp_file={build.project_name}.{build.preferred_out_format} +recipe.output.save_file={build.project_name}.{build.variant}.{build.preferred_out_format} + +## Compute size +recipe.size.pattern="{compiler.path}{compiler.size.cmd}" -A "{build.path}/{build.project_name}.elf" +recipe.size.regex=\.text\s+([0-9]+).* + +# +# BOSSA +# +tools.bossac.path={runtime.tools.bossac-1.7.0-arduino3.path} +tools.bossac.cmd=bossac +tools.bossac.cmd.windows=bossac.exe + +tools.bossac.upload.params.verbose=-i -d +tools.bossac.upload.params.quiet= +tools.bossac.upload.pattern="{path}/{cmd}" {upload.verbose} --port={serial.port.file} -U {upload.native_usb} -i -e -w -v "{build.path}/{build.project_name}.bin" -R + +tools.bossac_remote.upload.pattern=/usr/bin/run-bossac {upload.verbose} --port=ttyATH0 -U {upload.native_usb} -e -w -v /tmp/sketch.bin -R + +tools.bossac.network_cmd={runtime.tools.arduinoOTA.path}/bin/arduinoOTA +tools.bossac.upload.network_pattern="{network_cmd}" -address {serial.port} -port 65280 -username arduino -password "{network.password}" -sketch "{build.path}/{build.project_name}.bin" -upload /sketch -b + +# v1.8.0 + +tools.bossac18.path={runtime.tools.bossac-1.8.0-48-gb176eee.path} +tools.bossac18.cmd=bossac + +tools.bossac18.upload.params.verbose=-i -d +tools.bossac18.upload.params.quiet= +tools.bossac18.upload.pattern="{path}/{cmd}" {upload.verbose} --port={serial.port.file} -U -i --offset={upload.offset} -w -v "{build.path}/{build.project_name}.bin" -R + +tools.bossac18.network_cmd={runtime.tools.arduinoOTA.path}/bin/arduinoOTA +tools.bossac18.upload.network_pattern="{network_cmd}" -address {serial.port} -port 65280 -username arduino -password "{network.password}" -sketch "{build.path}/{build.project_name}.bin" -upload /sketch -b + +# +# BOSSA (ignore binary size) +# +tools.bossacI.path={runtime.tools.bossac-1.7.0-arduino3.path} +tools.bossacI.cmd=bossac +tools.bossacI.cmd.windows=bossac.exe + +tools.bossacI.upload.params.verbose=-i -d +tools.bossacI.upload.params.quiet= +tools.bossacI.upload.pattern="{path}/{cmd}" {upload.verbose} --port={serial.port.file} -I -U {upload.native_usb} -i -e -w "{build.path}/{build.project_name}.bin" -R + +tools.bossacI_remote.upload.pattern=/usr/bin/run-bossac {upload.verbose} --port=ttyATH0 -U {upload.native_usb} -e -w -v /tmp/sketch.bin -R + +tools.bossacI.network_cmd={runtime.tools.arduinoOTA.path}/bin/arduinoOTA +tools.bossacI.upload.network_pattern="{network_cmd}" -address {serial.port} -port 65280 -username arduino -password "{network.password}" -sketch "{build.path}/{build.project_name}.bin" -upload /sketch -b + + +# +# OpenOCD sketch upload +# + +tools.openocd.path={runtime.tools.openocd-0.10.0-arduino7.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/" -f "{runtime.platform.path}/variants/{build.variant}/{build.openocdscript}" -c "telnet_port disabled; program {{build.path}/{build.project_name}.bin} verify reset 0x2000; shutdown" + +tools.openocd.network_cmd={runtime.tools.arduinoOTA.path}/bin/arduinoOTA +tools.openocd.upload.network_pattern={network_cmd} -address {serial.port} -port 65280 -username arduino -password "{network.password}" -sketch "{build.path}/{build.project_name}.bin" -upload /sketch -b + +# Program flashes the binary at 0x0000, so use the linker script without_bootloader +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/" -f "{runtime.platform.path}/variants/{build.variant}/{build.openocdscript}" -c "telnet_port disabled; program {{build.path}/{build.project_name}.elf} verify reset; shutdown" + +tools.openocd.erase.params.verbose=-d3 +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/" -f "{runtime.platform.path}/variants/{build.variant}/{build.openocdscript}" -c "telnet_port disabled; init; halt; at91samd bootloader 0; program {{runtime.platform.path}/bootloaders/{bootloader.file}} verify reset; shutdown" + +# +# OpenOCD sketch upload - version with configurable bootloader size +# FIXME: this programmer is a workaround for default options being overwritten by uploadUsingPreferences +# + +tools.openocd-withbootsize.path={runtime.tools.openocd-0.10.0-arduino7.path} +tools.openocd-withbootsize.cmd=bin/openocd +tools.openocd-withbootsize.cmd.windows=bin/openocd.exe + +tools.openocd-withbootsize.upload.params.verbose=-d2 +tools.openocd-withbootsize.upload.params.quiet=-d0 +tools.openocd-withbootsize.upload.pattern="{path}/{cmd}" {upload.verbose} -s "{path}/share/openocd/scripts/" -f "{runtime.platform.path}/variants/{build.variant}/{build.openocdscript}" -c "telnet_port disabled; program {{build.path}/{build.project_name}.bin} verify reset {bootloader.size}; shutdown" + +# Program flashes the binary at 0x0000, so use the linker script without_bootloader +tools.openocd-withbootsize.program.params.verbose=-d2 +tools.openocd-withbootsize.program.params.quiet=-d0 +tools.openocd-withbootsize.program.pattern="{path}/{cmd}" {program.verbose} -s "{path}/share/openocd/scripts/" -f "{runtime.platform.path}/variants/{build.variant}/{build.openocdscript}" -c "telnet_port disabled; program {{build.path}/{build.project_name}.elf} verify reset; shutdown" + +tools.openocd-withbootsize.erase.params.verbose=-d3 +tools.openocd-withbootsize.erase.params.quiet=-d0 +tools.openocd-withbootsize.erase.pattern= + +tools.openocd-withbootsize.bootloader.params.verbose=-d2 +tools.openocd-withbootsize.bootloader.params.quiet=-d0 +tools.openocd-withbootsize.bootloader.pattern="{path}/{cmd}" {bootloader.verbose} -s "{path}/share/openocd/scripts/" -f "{runtime.platform.path}/variants/{build.variant}/{build.openocdscript}" -c "telnet_port disabled; init; halt; at91samd bootloader 0; program {{runtime.platform.path}/bootloaders/{bootloader.file}} verify reset; shutdown" diff --git a/README.md b/README.md index c9dffc0..3ba453d 100644 --- a/README.md +++ b/README.md @@ -67,12 +67,14 @@ Chunked responses are recognized and handled transparently. This library is based on, modified from: 1. [Bob Lemaire's asyncHTTPrequest Library](https://github.com/boblemaire/asyncHTTPrequest) + +--- --- ## Prerequisite - 1. [`Arduino IDE 1.8.12+` for Arduino](https://www.arduino.cc/en/Main/Software) - 2. [`ESP8266 Core 2.7.3+`](https://github.com/esp8266/Arduino) for ESP8266-based boards. + 1. [`Arduino IDE 1.8.13+` for Arduino](https://www.arduino.cc/en/Main/Software) + 2. [`ESP8266 Core 2.7.4+`](https://github.com/esp8266/Arduino) for ESP8266-based boards. 3. [`ESP32 Core 1.0.4+`](https://github.com/espressif/arduino-esp32) for ESP32-based boards 4. [`Arduino Core for STM32 1.9.0+`](https://github.com/stm32duino/Arduino_Core_STM32) for for STM32 using built-in Ethernet LAN8742A. 5. [`ESPAsyncTCP v1.2.2+`](https://github.com/me-no-dev/ESPAsyncTCP) for ESP8266. @@ -106,16 +108,16 @@ The best and easiest way is to use `Arduino Library Manager`. Search for `AsyncH ### Packages' Patches - 1. ***To be able to compile, run and automatically detect and display BOARD_NAME on nRF52840/nRF52832 boards***, you have to copy the whole [nRF52 0.20.5](Packages_Patches/adafruit/hardware/nrf52/0.20.5) directory into Adafruit nRF52 directory (~/.arduino15/packages/adafruit/hardware/nrf52/0.20.5). + 1. ***To be able to compile, run and automatically detect and display BOARD_NAME on nRF52840/nRF52832 boards***, you have to copy the whole [nRF52 0.21.0](Packages_Patches/adafruit/hardware/nrf52/0.21.0) directory into Adafruit nRF52 directory (~/.arduino15/packages/adafruit/hardware/nrf52/0.21.0). -Supposing the Adafruit nRF52 version is 0.20.5. These files must be copied into the directory: -- `~/.arduino15/packages/adafruit/hardware/nrf52/0.20.5/platform.txt` -- `~/.arduino15/packages/adafruit/hardware/nrf52/0.20.5/boards.txt` -- `~/.arduino15/packages/adafruit/hardware/nrf52/0.20.5/variants/NINA_B302_ublox/variant.h` -- `~/.arduino15/packages/adafruit/hardware/nrf52/0.20.5/variants/NINA_B302_ublox/variant.cpp` -- `~/.arduino15/packages/adafruit/hardware/nrf52/0.20.5/variants/NINA_B112_ublox/variant.h` -- `~/.arduino15/packages/adafruit/hardware/nrf52/0.20.5/variants/NINA_B112_ublox/variant.cpp` -- ***`~/.arduino15/packages/adafruit/hardware/nrf52/0.20.5/cores/nRF5/Udp.h`*** +Supposing the Adafruit nRF52 version is 0.21.0. These files must be copied into the directory: +- `~/.arduino15/packages/adafruit/hardware/nrf52/0.21.0/platform.txt` +- `~/.arduino15/packages/adafruit/hardware/nrf52/0.21.0/boards.txt` +- `~/.arduino15/packages/adafruit/hardware/nrf52/0.21.0/variants/NINA_B302_ublox/variant.h` +- `~/.arduino15/packages/adafruit/hardware/nrf52/0.21.0/variants/NINA_B302_ublox/variant.cpp` +- `~/.arduino15/packages/adafruit/hardware/nrf52/0.21.0/variants/NINA_B112_ublox/variant.h` +- `~/.arduino15/packages/adafruit/hardware/nrf52/0.21.0/variants/NINA_B112_ublox/variant.cpp` +- ***`~/.arduino15/packages/adafruit/hardware/nrf52/0.21.0/cores/nRF5/Udp.h`*** Whenever a new version is installed, remember to copy these files into the new version directory. For example, new version is x.yy.z These files must be copied into the directory: @@ -172,22 +174,22 @@ These files must be copied into the directory: Whenever the above-mentioned compiler error issue is fixed with the new Arduino SAMD release, you don't need to copy the `Arduino.h` file anymore. - 5. ***To be able to automatically detect and display BOARD_NAME on Adafruit SAMD (Itsy-Bitsy M4, etc) boards***, you have to copy the file [Adafruit SAMD platform.txt](Packages_Patches/adafruit/hardware/samd/1.6.0) into Adafruit samd directory (~/.arduino15/packages/adafruit/hardware/samd/1.6.0). + 5. ***To be able to automatically detect and display BOARD_NAME on Adafruit SAMD (Itsy-Bitsy M4, etc) boards***, you have to copy the file [Adafruit SAMD platform.txt](Packages_Patches/adafruit/hardware/samd/1.6.3) into Adafruit samd directory (~/.arduino15/packages/adafruit/hardware/samd/1.6.3). -Supposing the Adafruit SAMD core version is 1.6.0. This file must be copied into the directory: +Supposing the Adafruit SAMD core version is 1.6.3. This file must be copied into the directory: -- `~/.arduino15/packages/adafruit/hardware/samd/1.6.0/platform.txt` +- `~/.arduino15/packages/adafruit/hardware/samd/1.6.3/platform.txt` Whenever a new version is installed, remember to copy this file into the new version directory. For example, new version is x.yy.zz This file must be copied into the directory: - `~/.arduino15/packages/adafruit/hardware/samd/x.yy.zz/platform.txt` - 6. ***To be able to automatically detect and display BOARD_NAME on Seeeduino SAMD (XIAO M0, Wio Terminal, etc) boards***, you have to copy the file [Seeeduino SAMD platform.txt](Packages_Patches/Seeeduino/hardware/samd/1.7.8) into Adafruit samd directory (~/.arduino15/packages/Seeeduino/hardware/samd/1.7.8). + 6. ***To be able to automatically detect and display BOARD_NAME on Seeeduino SAMD (XIAO M0, Wio Terminal, etc) boards***, you have to copy the file [Seeeduino SAMD platform.txt](Packages_Patches/Seeeduino/hardware/samd/1.7.9) into Adafruit samd directory (~/.arduino15/packages/Seeeduino/hardware/samd/1.7.9). -Supposing the Seeeduino SAMD core version is 1.7.8. This file must be copied into the directory: +Supposing the Seeeduino SAMD core version is 1.7.9. This file must be copied into the directory: -- `~/.arduino15/packages/Seeeduino/hardware/samd/1.7.8/platform.txt` +- `~/.arduino15/packages/Seeeduino/hardware/samd/1.7.9/platform.txt` Whenever a new version is installed, remember to copy this file into the new version directory. For example, new version is x.yy.zz This file must be copied into the directory: diff --git a/platformio/platformio.ini b/platformio/platformio.ini index 0645168..6598b5f 100644 --- a/platformio/platformio.ini +++ b/platformio/platformio.ini @@ -34,13 +34,21 @@ upload_speed = 921600 ;monitor_port = COM11 lib_deps = +; PlatformIO 4.x AsyncTCP@~1.1.1 - ESP AsyncTCP@~1.2.2 - STM32 AsyncTCP@~1.0.0 + ESPAsyncTCP@~1.2.2 + STM32AsyncTCP@~1.0.0 STM32duino LwIP@~2.1.2 STM32duino STM32Ethernet@~1.2.0 - ESPAsync_WiFiManager@~1.1.1 - + ESPAsync_WiFiManager@~1.1.2 +; PlatformIO 5.x +; me-no-dev/AsyncTCP@~1.1.1 +; me-no-dev/ESPAsyncTCP@~1.2.2 +; philbowles/STM32AsyncTCP@~1.0.0 +; stm32duino/STM32duino LwIP@~2.1.2 +; stm32duino/STM32duino STM32Ethernet@~1.2.0 +; khoih-prog/ESPAsync_WiFiManager@~1.1.2 + build_flags = ; set your debug output (default=Serial) ; -D DEBUG_ESP_PORT=Serial