diff --git a/boards.txt b/boards.txt index b9add104a..675c95eeb 100644 --- a/boards.txt +++ b/boards.txt @@ -1,6 +1,7 @@ # See: https://arduino.github.io/arduino-cli/latest/platform-specification/ menu.cpu=Processor +menu.jtag=JTAG pins ############################################################## @@ -36,6 +37,12 @@ yun.upload.disable_flushing=true yun.upload.use_1200bps_touch=true yun.upload.wait_for_upload_port=true +# JTAG pins +yun.menu.jtag.disabled=JTAG disabled +yun.menu.jtag.disabled.bootloader.high_fuses=0xd8 +yun.menu.jtag.enabled=JTAG enabled +yun.menu.jtag.enabled.bootloader.high_fuses=0x98 + yun.bootloader.tool=avrdude yun.bootloader.tool.default=avrdude yun.bootloader.low_fuses=0xff @@ -289,6 +296,12 @@ mega.upload.tool.default=avrdude mega.upload.tool.network=arduino_ota mega.upload.maximum_data_size=8192 +# JTAG pins +mega.menu.jtag.disabled=JTAG disabled +mega.menu.jtag.disabled.bootloader.high_fuses_part=d +mega.menu.jtag.enabled=JTAG enabled +mega.menu.jtag.enabled.bootloader.high_fuses_part=9 + mega.bootloader.tool=avrdude mega.bootloader.tool.default=avrdude mega.bootloader.low_fuses=0xFF @@ -361,6 +374,12 @@ megaADK.upload.maximum_size=253952 megaADK.upload.maximum_data_size=8192 megaADK.upload.speed=115200 +# JTAG pins +megaADK.menu.jtag.disabled=JTAG disabled +megaADK.menu.jtag.disabled.bootloader.high_fuses=0xd8 +megaADK.menu.jtag.enabled=JTAG enabled +megaADK.menu.jtag.enabled.bootloader.high_fuses=0x98 + megaADK.bootloader.tool=avrdude megaADK.bootloader.tool.default=avrdude megaADK.bootloader.low_fuses=0xFF @@ -408,6 +427,12 @@ leonardo.upload.disable_flushing=true leonardo.upload.use_1200bps_touch=true leonardo.upload.wait_for_upload_port=true +# JTAG pins +leonardo.menu.jtag.disabled=JTAG disabled +leonardo.menu.jtag.disabled.bootloader.high_fuses=0xd8 +leonardo.menu.jtag.enabled=JTAG enabled +leonardo.menu.jtag.enabled.bootloader.high_fuses=0x98 + leonardo.bootloader.tool=avrdude leonardo.bootloader.tool.default=avrdude leonardo.bootloader.low_fuses=0xff @@ -451,6 +476,12 @@ leonardoeth.upload.disable_flushing=true leonardoeth.upload.use_1200bps_touch=true leonardoeth.upload.wait_for_upload_port=true +# JTAG pins +leonardoeth.menu.jtag.disabled=JTAG disabled +leonardoeth.menu.jtag.disabled.bootloader.high_fuses=0xd8 +leonardoeth.menu.jtag.enabled=JTAG enabled +leonardoeth.menu.jtag.enabled.bootloader.high_fuses=0x98 + leonardoeth.bootloader.tool=avrdude leonardoeth.bootloader.tool.default=avrdude leonardoeth.bootloader.low_fuses=0xff @@ -511,6 +542,12 @@ micro.upload.disable_flushing=true micro.upload.use_1200bps_touch=true micro.upload.wait_for_upload_port=true +# JTAG pins +micro.menu.jtag.disabled=JTAG disabled +micro.menu.jtag.disabled.bootloader.high_fuses=0xd8 +micro.menu.jtag.enabled=JTAG enabled +micro.menu.jtag.enabled.bootloader.high_fuses=0x98 + micro.bootloader.tool=avrdude micro.bootloader.tool.default=avrdude micro.bootloader.low_fuses=0xff @@ -562,6 +599,12 @@ esplora.upload.disable_flushing=true esplora.upload.use_1200bps_touch=true esplora.upload.wait_for_upload_port=true +# JTAG pins +esplora.menu.jtag.disabled=JTAG disabled +esplora.menu.jtag.disabled.bootloader.high_fuses=0xd8 +esplora.menu.jtag.enabled=JTAG enabled +esplora.menu.jtag.enabled.bootloader.high_fuses=0x98 + esplora.bootloader.tool=avrdude esplora.bootloader.tool.default=avrdude esplora.bootloader.low_fuses=0xff @@ -761,6 +804,12 @@ LilyPadUSB.upload.disable_flushing=true LilyPadUSB.upload.use_1200bps_touch=true LilyPadUSB.upload.wait_for_upload_port=true +# JTAG pins +LilyPadUSB.menu.jtag.disabled=JTAG disabled +LilyPadUSB.menu.jtag.disabled.bootloader.high_fuses=0xd8 +LilyPadUSB.menu.jtag.enabled=JTAG enabled +LilyPadUSB.menu.jtag.enabled.bootloader.high_fuses=0x98 + LilyPadUSB.bootloader.tool=avrdude LilyPadUSB.bootloader.tool.default=avrdude LilyPadUSB.bootloader.low_fuses=0xff @@ -844,8 +893,8 @@ pro.upload.protocol=arduino pro.bootloader.tool=avrdude pro.bootloader.tool.default=avrdude -pro.bootloader.unlock_bits=0x3F -pro.bootloader.lock_bits=0x0F +pro.bootloader.unlock_bits=0xFF +pro.bootloader.lock_bits=0xCF pro.build.board=AVR_PRO pro.build.core=arduino @@ -929,8 +978,8 @@ atmegang.upload.speed=19200 atmegang.bootloader.tool=avrdude atmegang.bootloader.tool.default=avrdude -atmegang.bootloader.unlock_bits=0x3F -atmegang.bootloader.lock_bits=0x0F +atmegang.bootloader.unlock_bits=0xFF +atmegang.bootloader.lock_bits=0xCF atmegang.build.mcu=atmegang atmegang.build.f_cpu=16000000L @@ -998,6 +1047,12 @@ robotControl.upload.disable_flushing=true robotControl.upload.use_1200bps_touch=true robotControl.upload.wait_for_upload_port=true +# JTAG pins +robotControl.menu.jtag.disabled=JTAG disabled +robotControl.menu.jtag.disabled.bootloader.high_fuses=0xd8 +robotControl.menu.jtag.enabled=JTAG enabled +robotControl.menu.jtag.enabled.bootloader.high_fuses=0x98 + robotControl.bootloader.tool=avrdude robotControl.bootloader.tool.default=avrdude robotControl.bootloader.low_fuses=0xff @@ -1049,6 +1104,12 @@ robotMotor.upload.disable_flushing=true robotMotor.upload.use_1200bps_touch=true robotMotor.upload.wait_for_upload_port=true +# JTAG pins +robotMotor.menu.jtag.disabled=JTAG disabled +robotMotor.menu.jtag.disabled.bootloader.high_fuses=0xd8 +robotMotor.menu.jtag.enabled=JTAG enabled +robotMotor.menu.jtag.enabled.bootloader.high_fuses=0x98 + robotMotor.bootloader.tool=avrdude robotMotor.bootloader.tool.default=avrdude robotMotor.bootloader.low_fuses=0xff @@ -1135,6 +1196,13 @@ circuitplay32u4cat.upload_port.0.vid=0x239A circuitplay32u4cat.upload_port.0.pid=0x8011 circuitplay32u4cat.upload_port.1.board=circuitplay32u4cat +# JTAG pins +circuitplay32u4cat.menu.jtag.disabled=JTAG disabled +circuitplay32u4cat.menu.jtag.disabled.bootloader.high_fuses=0xd8 +circuitplay32u4cat.menu.jtag.enabled=JTAG enabled +circuitplay32u4cat.menu.jtag.enabled.bootloader.high_fuses=0x98 + + ############################################################## yunmini.name=Arduino Yún Mini @@ -1161,6 +1229,13 @@ yunmini.upload.disable_flushing=true yunmini.upload.use_1200bps_touch=true yunmini.upload.wait_for_upload_port=true +# JTAG pins +yunmini.menu.jtag.disabled=JTAG disabled +yunmini.menu.jtag.disabled.bootloader.high_fuses=0xd8 +yunmini.menu.jtag.enabled=JTAG enabled +yunmini.menu.jtag.enabled.bootloader.high_fuses=0x98 + + yunmini.bootloader.tool=avrdude yunmini.bootloader.tool.default=avrdude yunmini.bootloader.low_fuses=0xff @@ -1206,6 +1281,13 @@ chiwawa.upload.disable_flushing=true chiwawa.upload.use_1200bps_touch=true chiwawa.upload.wait_for_upload_port=true +# JTAG pins +chiwawa.menu.jtag.disabled=JTAG disabled +chiwawa.menu.jtag.disabled.bootloader.high_fuses=0xd8 +chiwawa.menu.jtag.enabled=JTAG enabled +chiwawa.menu.jtag.enabled.bootloader.high_fuses=0x98 + + chiwawa.bootloader.tool=avrdude chiwawa.bootloader.tool.default=avrdude chiwawa.bootloader.low_fuses=0xff @@ -1251,6 +1333,12 @@ one.upload.disable_flushing=true one.upload.use_1200bps_touch=true one.upload.wait_for_upload_port=true +# JTAG pins +one.menu.jtag.disabled=JTAG disabled +one.menu.jtag.disabled.bootloader.high_fuses=0xd8 +one.menu.jtag.enabled=JTAG enabled +one.menu.jtag.enabled.bootloader.high_fuses=0x98 + one.bootloader.tool=avrdude one.bootloader.tool.default=avrdude one.bootloader.low_fuses=0xff diff --git a/platform.txt b/platform.txt index 9e630a32f..284a8c8a3 100644 --- a/platform.txt +++ b/platform.txt @@ -11,6 +11,12 @@ version=1.8.8 # AVR compile variables # --------------------- +# Optimization flags for debugging +compiler.optimization_flags=-Os-ggdb3 -DNDEBUG -flto +compiler.optimization_flags.release=-Os -ggdb3 -DNDEBUG -flto +compiler.optimization_flags.debug=-Og -ggdb3 -DDEBUG -fno-lto + +# Warnings compiler.warning_flags=-w compiler.warning_flags.none=-w compiler.warning_flags.default= @@ -20,12 +26,12 @@ compiler.warning_flags.all=-Wall -Wextra # Default "compiler.path" is correct, change only if you want to override the initial value compiler.path={runtime.tools.avr-gcc.path}/bin/ compiler.c.cmd=avr-gcc -compiler.c.flags=-c -g -Os {compiler.warning_flags} -std=gnu11 -ffunction-sections -fdata-sections -MMD -flto -fno-fat-lto-objects -compiler.c.elf.flags={compiler.warning_flags} -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections +compiler.c.flags=-c -g {compiler.optimization_flags} {compiler.warning_flags} -std=gnu11 -ffunction-sections -fdata-sections -MMD -fno-fat-lto-objects +compiler.c.elf.flags={compiler.warning_flags} {compiler.optimization_flags} -fuse-linker-plugin -Wl,--gc-sections compiler.c.elf.cmd=avr-gcc -compiler.S.flags=-c -g -x assembler-with-cpp -flto -MMD +compiler.S.flags=-c {compiler.optimization_flags} -x assembler-with-cpp -MMD compiler.cpp.cmd=avr-g++ -compiler.cpp.flags=-c -g -Os {compiler.warning_flags} -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto +compiler.cpp.flags=-c -g {compiler.optimization_flags} {compiler.warning_flags} -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD compiler.ar.cmd=avr-gcc-ar compiler.ar.flags=rcs compiler.objcopy.cmd=avr-objcopy @@ -140,3 +146,32 @@ tools.arduino_ota.upload.pattern="{cmd}" -address {upload.port.address} -port {u # - from numeric vendor ID, set to Unknown otherwise build.usb_manufacturer="Unknown" build.usb_flags=-DUSB_VID={build.vid} -DUSB_PID={build.pid} '-DUSB_MANUFACTURER={build.usb_manufacturer}' '-DUSB_PRODUCT={build.usb_product}' + +# Debugger configuration (general options) +# ---------------------------------------- +debug.executable={build.path}/{build.project_name}.elf +debug.toolchain=gcc +debug.toolchain.path={runtime.tools.avrocd-tools.path} + +debug.server=openocd +debug.server.openocd.path={debug.toolchain.path}/pyavrocd +#next doesn't matter, but should be specified so that cortex-debug is happy +debug.server.openocd.script=nix +debug.cortex-debug.custom.gdbPath={debug.toolchain.path}/avr-gdb +debug.cortex-debug.custom.overrideGDBServerStartedRegex=Listening on port \d+ for gdb connection +debug.cortex-debug.custom.objdumpPath={runtime.tools.avr-gcc.path}/bin/avr-objdump +debug.cortex-debug.custom.serverArgs.0=-s +debug.cortex-debug.custom.serverArgs.1=nop +debug.cortex-debug.custom.serverArgs.2=--device +debug.cortex-debug.custom.serverArgs.3={build.mcu} +debug.cortex-debug.custom.serverArgs.4=--manage +debug.cortex-debug.custom.serverArgs.5=all +debug.cortex-debug.custom.serverArgs.6=--F_CPU +debug.cortex-debug.custom.serverArgs.7={build.f_cpu} +debug.cortex-debug.custom.serverArgs.8=--elf-file +debug.cortex-debug.custom.serverArgs.9={debug.executable} +debug.cortex-debug.custom.serverArgs.10=--prog-clock +debug.cortex-debug.custom.serverArgs.11=2000 +debug.cortex-debug.custom.preLaunchCommands.0=monitor debugwire enable +debug.cortex-debug.custom.runToEntryPoint=main +debug.svd_file={debug.toolchain.path}/pyavrocd-util/svd/{build.mcu}.svd \ No newline at end of file diff --git a/programmers.txt b/programmers.txt index 40532f5b6..04369b556 100644 --- a/programmers.txt +++ b/programmers.txt @@ -102,29 +102,81 @@ stk500.program.tool=avrdude stk500.program.tool.default=avrdude stk500.program.extra_params=-P{serial.port} -jtag3isp.name=Atmel JTAGICE3 (ISP mode) -jtag3isp.communication=usb -jtag3isp.protocol=jtag3isp -jtag3isp.program.protocol=jtag3isp -jtag3isp.program.tool=avrdude -jtag3isp.program.tool.default=avrdude -jtag3isp.program.extra_params= - -jtag3.name=Atmel JTAGICE3 (JTAG mode) -jtag3.communication=usb -jtag3.protocol=jtag3 -jtag3.program.protocol=jtag3 -jtag3.program.tool=avrdude -jtag3.program.tool.default=avrdude -# Set a bitclock of 0.1us (the fastest supported value). This should -# work regardless of the crystal used, since JTAG doesn't use the MCU -# clock but dictates its own clock. -jtag3.program.extra_params=-B0.1 - -atmel_ice.name=Atmel-ICE (AVR) +atmel_ice.name=Atmel-ICE (AVR) ISP atmel_ice.communication=usb atmel_ice.protocol=atmelice_isp atmel_ice.program.protocol=atmelice_isp atmel_ice.program.tool=avrdude -atmel_ice.program.tool.default=avrdude -atmel_ice.program.extra_params=-Pusb +atmel_ice.program.extra_params= + +atmel_icej.name=Atmel-ICE (AVR) JTAG +atmel_icej.communication=usb +atmel_icej.protocol=atmelice_jtag +atmel_icej.program.protocol=atmelice_jtag +atmel_icej.program.tool=avrdude +atmel_icej.program.extra_params= + +atmel_powerdebugger.name=Power Debugger (AVR) ISP +atmel_powerdebugger.communication=usb +atmel_powerdebugger.protocol=powerdebugger_isp +atmel_powerdebugger.program.protocol=powerdebugger_isp +atmel_powerdebugger.program.tool=avrdude +atmel_powerdebugger.program.extra_params= + +atmel_powerdebuggerj.name=Power Debugger (AVR) JTAG +atmel_powerdebuggerj.communication=usb +atmel_powerdebuggerj.protocol=powerdebugger_jtag +atmel_powerdebuggerj.program.protocol=powerdebugger_jtag +atmel_powerdebuggerj.program.tool=avrdude +atmel_powerdebuggerj.program.extra_params= + +atmel_jtagice3.name=JTAGICE3 ISP +atmel_jtagice3.communication=usb +atmel_jtagice3.protocol=jtag3isp +atmel_jtagice3.program.protocol=jtag3isp +atmel_jtagice3.program.tool=avrdude +atmel_jtagice3.program.extra_params= + +atmel_jtagice3j.name=JTAGICE3 JTAG +atmel_jtagice3j.communication=usb +atmel_jtagice3j.protocol=jtag3 +atmel_jtagice3j.program.protocol=jtag3 +atmel_jtagice3j.program.tool=avrdude +atmel_jtagice3j.program.extra_params= +atmel_jtagice3j.program.extra_params=-B0.1 + +pickit4_isp.name=PICkit4 ISP +pickit4_isp.communication=usb +pickit4_isp.protocol=pickit4_isp +pickit4_isp.program.protocol=pickit4_isp +pickit4_isp.program.tool=avrdude +pickit4_isp.program.extra_params= + +pickit4_jtag.name=PICkit4 JTAG +pickit4_jtag.communication=usb +pickit4_jtag.protocol=pickit4_jtag +pickit4_jtag.program.protocol=pickit4_jtag +pickit4_jtag.program.tool=avrdude +pickit4_jtag.program.extra_params= + +snap_isp.name=MPLAB SNAP ISP +snap_isp.communication=usb +snap_isp.protocol=snap_isp +snap_isp.program.protocol=snap_isp +snap_isp.program.tool=avrdude +snap_isp.program.extra_params= + +snap_jtag.name=MPLAB SNAP JTAG +snap_jtag.communication=usb +snap_jtag.protocol=snap_jtag +snap_jtag.program.protocol=snap_jtag +snap_jtag.program.tool=avrdude +snap_jtag.program.extra_params= + +simavr.name=Simulator (simavr) +simavr.debug.cortex-debug.custom.serverArgs.1={debug.toolchain.path}/bin/simavr +simavr.protocol=This_is_not_a_programmer_but_only_a_flag_to_use_the_simulator_when_debugging +simavr.upload.protocol=This_is_not_a_programmer_but_only_a_flag_to_use_the_simulator_when_debugging +simavr.program.protocol=This_is_not_a_programmer_but_only_a_flag_to_use_the_simulator_when_debugging +simavr.program.tool=avrdude +simavr.program.extra_params=