Skip to content

Commit 5136981

Browse files
committed
Introduce openocd-withbootsize programmer
Otherwise a compulsory property should be added to every board (3rd paty hell). The bug is related with IDE's uploadUsingPreferences; the property map used to expand the receipe is derived from board properties and overwritten by the programmer's properties. So no default can exist, and no global variable either.
1 parent ac07f6b commit 5136981

File tree

2 files changed

+33
-17
lines changed

2 files changed

+33
-17
lines changed

boards.txt

+5-9
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ arduino_zero_edbg.build.variant=arduino_zero
3939
arduino_zero_edbg.build.variant_system_lib=
4040
arduino_zero_edbg.build.vid=0x2341
4141
arduino_zero_edbg.build.pid=0x804d
42-
arduino_zero_edbg.build.sketch.start=0x2000
4342
arduino_zero_edbg.bootloader.tool=openocd
4443
arduino_zero_edbg.bootloader.file=zero/samd21_sam_ba.bin
4544

@@ -86,7 +85,6 @@ arduino_zero_native.build.variant=arduino_zero
8685
arduino_zero_native.build.variant_system_lib=
8786
arduino_zero_native.build.vid=0x2341
8887
arduino_zero_native.build.pid=0x804d
89-
arduino_zero_native.build.sketch.start=0x2000
9088
arduino_zero_native.bootloader.tool=openocd
9189
arduino_zero_native.bootloader.file=zero/samd21_sam_ba.bin
9290

@@ -132,7 +130,6 @@ mkr1000.build.openocdscript=openocd_scripts/arduino_zero.cfg
132130
mkr1000.build.variant=mkr1000
133131
mkr1000.build.vid=0x2341
134132
mkr1000.build.pid=0x804e
135-
mkr1000.build.sketch.start=0x2000
136133
mkr1000.bootloader.tool=openocd
137134
mkr1000.bootloader.file=mkr1000/samd21_sam_ba_arduino_mkr1000.bin
138135

@@ -162,7 +159,6 @@ mkrzero.build.openocdscript=openocd_scripts/arduino_zero.cfg
162159
mkrzero.build.variant=mkrzero
163160
mkrzero.build.vid=0x2341
164161
mkrzero.build.pid=0x804f
165-
mkrzero.build.sketch.start=0x2000
166162
mkrzero.bootloader.tool=openocd
167163
mkrzero.bootloader.file=mkrzero/samd21_sam_ba_arduino_mkrzero.bin
168164

@@ -200,7 +196,7 @@ adafruit_circuitplayground_m0.bootloader.file=circuitplay/circuitplay_m0_samd21g
200196
mzero_pro_bl_dbg.name=Arduino M0 Pro (Programming Port)
201197
mzero_pro_bl_dbg.vid.0=0x03eb
202198
mzero_pro_bl_dbg.pid.0=0x2111
203-
mzero_pro_bl_dbg.upload.tool=openocd
199+
mzero_pro_bl_dbg.upload.tool=openocd-withbootsize
204200
mzero_pro_bl_dbg.upload.protocol=sam-ba
205201
mzero_pro_bl_dbg.upload.maximum_size=262144
206202
mzero_pro_bl_dbg.upload.use_1200bps_touch=false
@@ -219,7 +215,7 @@ mzero_pro_bl_dbg.build.variant_system_lib=
219215
mzero_pro_bl_dbg.build.vid=0x2a03
220216
mzero_pro_bl_dbg.build.pid=0x804f
221217
mzero_pro_bl_dbg.build.preferred_out_format=hex
222-
mzero_pro_bl_dbg.build.sketch.start=0x4000
218+
mzero_pro_bl_dbg.bootloader.size=0x4000
223219

224220
mzero_pro_bl_dbg.bootloader.tool=openocd
225221
mzero_pro_bl_dbg.bootloader.cmd_unprotect=at91samd bootloader 0
@@ -257,7 +253,7 @@ mzero_pro_bl.build.variant_system_lib=
257253
mzero_pro_bl.build.vid=0x2a03
258254
mzero_pro_bl.build.pid=0x804f
259255
mzero_pro_bl.build.preferred_out_format=hex
260-
mzero_pro_bl.build.sketch.start=0x4000
256+
mzero_pro_bl.bootloader.size=0x4000
261257
mzero_pro_bl.build.emu.mcu=atmega2560
262258
mzero_pro_bl.bootloader.tool=avrdude
263259
mzero_pro_bl.bootloader.low_fuses=0xff
@@ -292,7 +288,7 @@ mzero_bl.build.variant_system_lib=
292288
mzero_bl.build.vid=0x2a03
293289
mzero_bl.build.pid=0x804e
294290
mzero_bl.build.preferred_out_format=hex
295-
mzero_bl.build.sketch.start=0x4000
291+
mzero_bl.bootloader.size=0x4000
296292
mzero_bl.build.emu.mcu=atmega2560
297293
mzero_bl.bootloader.tool=avrdude
298294
mzero_bl.bootloader.low_fuses=0xff
@@ -326,7 +322,7 @@ tian.build.variant_system_lib=
326322
tian.build.vid=0x2a03
327323
tian.build.pid=0x8052
328324
tian.build.preferred_out_format=hex
329-
tian.build.sketch.start=0x4000
325+
tian.bootloader.size=0x4000
330326
tian.build.emu.mcu=atmega2560
331327
tian.bootloader.tool=avrdude
332328
tian.bootloader.low_fuses=0xff

platform.txt

+28-8
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ compiler.elf2hex.cmd=arm-none-eabi-objcopy
5050
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
5151
compiler.size.cmd=arm-none-eabi-size
5252
compiler.define=-DARDUINO=
53+
compiler.readelf.cmd=arm-none-eabi-readelf
5354

5455
# this can be overriden in boards.txt
5556
build.extra_flags=
@@ -74,11 +75,6 @@ build.usb_flags=-DUSB_VID={build.vid} -DUSB_PID={build.pid} -DUSBCON '-DUSB_MANU
7475
# numeric vendor ID if available or by board's specific value.
7576
build.usb_manufacturer="Unknown"
7677

77-
# Sketch and bootloader start section
78-
# -----------------------------------
79-
build.sketch.start=0x2000
80-
build.bootloader.start=0x0000
81-
8278
# Compile patterns
8379
# ----------------
8480

@@ -115,7 +111,6 @@ recipe.output.save_file={build.project_name}.{build.variant}.{build.preferred_ou
115111
recipe.size.pattern="{compiler.path}{compiler.size.cmd}" -A "{build.path}/{build.project_name}.elf"
116112
recipe.size.regex=\.text\s+([0-9]+).*
117113

118-
119114
# Uploader tools
120115
# --------------
121116

@@ -154,8 +149,7 @@ tools.openocd.cmd.windows=bin/openocd.exe
154149

155150
tools.openocd.upload.params.verbose=-d2
156151
tools.openocd.upload.params.quiet=-d0
157-
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 {build.sketch.start}; shutdown"
158-
152+
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"
159153

160154
# Program flashes the binary at 0x0000, so use the linker script without_bootloader
161155
tools.openocd.program.params.verbose=-d2
@@ -169,3 +163,29 @@ tools.openocd.erase.pattern=
169163
tools.openocd.bootloader.params.verbose=-d2
170164
tools.openocd.bootloader.params.quiet=-d0
171165
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"
166+
167+
#
168+
# OpenOCD sketch upload - version with configurable bootloader size
169+
# FIXME: this programmer is a workaround for default options being overwritten by uploadUsingPreferences
170+
#
171+
172+
tools.openocd-withbootsize.path={runtime.tools.openocd-0.9.0-arduino.path}
173+
tools.openocd-withbootsize.cmd=bin/openocd
174+
tools.openocd-withbootsize.cmd.windows=bin/openocd.exe
175+
176+
tools.openocd-withbootsize.upload.params.verbose=-d2
177+
tools.openocd-withbootsize.upload.params.quiet=-d0
178+
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"
179+
180+
# Program flashes the binary at 0x0000, so use the linker script without_bootloader
181+
tools.openocd-withbootsize.program.params.verbose=-d2
182+
tools.openocd-withbootsize.program.params.quiet=-d0
183+
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"
184+
185+
tools.openocd-withbootsize.erase.params.verbose=-d3
186+
tools.openocd-withbootsize.erase.params.quiet=-d0
187+
tools.openocd-withbootsize.erase.pattern=
188+
189+
tools.openocd-withbootsize.bootloader.params.verbose=-d2
190+
tools.openocd-withbootsize.bootloader.params.quiet=-d0
191+
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"

0 commit comments

Comments
 (0)