Skip to content

Commit 6a2e515

Browse files
author
rogerclarkmelbourne
committed
Added DFU upload options for all generic boards. Note, Its not possible to set the correct memort size in the linker file for DFU uploads, so its always set as having the max ram and rom for the series in question. So beware using this if you are maxing out the RAM or Flash (which seems highly unlikely!)
1 parent 526bd42 commit 6a2e515

8 files changed

Lines changed: 146 additions & 78 deletions

File tree

STM32F1/boards.txt

Lines changed: 74 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,17 @@ genericSTM32F103C.menu.upload_method.BMPMethod.upload.protocol=gdb_bmp
217217
genericSTM32F103C.menu.upload_method.BMPMethod.upload.tool=bmp_upload
218218
genericSTM32F103C.menu.upload_method.BMPMethod.build.upload_flags=-DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG
219219

220+
genericSTM32F103C.menu.upload_method.DFUUploadMethod=Maple DFU
221+
genericSTM32F103C.menu.upload_method.DFUUploadMethod.upload.protocol=maple_dfu
222+
genericSTM32F103C.menu.upload_method.DFUUploadMethod.upload.tool=maple_upload
223+
genericSTM32F103C.menu.upload_method.DFUUploadMethod.build.upload_flags=-DSERIAL_USB
224+
genericSTM32F103C.menu.upload_method.DFUUploadMethod.build.vect=VECT_TAB_ADDR=0x8002000
225+
genericSTM32F103C.menu.upload_method.DFUUploadMethod.build.ldscript=ld/bootloader_20.ld
226+
genericSTM32F103C.menu.upload_method.DFUUploadMethod.upload.usbID=1EAF:0003
227+
genericSTM32F103C.menu.upload_method.DFUUploadMethod.upload.altID=2
228+
229+
230+
220231
########################### Generic STM32F103R ###########################
221232

222233
genericSTM32F103R.name= Generic STM32F103R series
@@ -247,51 +258,14 @@ genericSTM32F103R.menu.upload_method.STLinkMethod.upload.protocol=STLink
247258
genericSTM32F103R.menu.upload_method.STLinkMethod.upload.tool=stlink_upload
248259
genericSTM32F103R.menu.upload_method.STLinkMethod.build.upload_flags=-DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG=1
249260

250-
251-
########################### Generic STM32F103Z ###########################
252-
253-
254-
genericSTM32F103Z.name=Generic STM32F103Z series
255-
genericSTM32F103Z.build.variant=generic_stm32f103z
256-
genericSTM32F103Z.build.vect=VECT_TAB_ADDR=0x8000000
257-
genericSTM32F103Z.build.core=maple
258-
genericSTM32F103Z.build.board=GENERIC_STM32F103Z
259-
genericSTM32F103Z.upload.use_1200bps_touch=false
260-
genericSTM32F103Z.upload.file_type=bin
261-
genericSTM32F103Z.upload.auto_reset=true
262-
263-
genericSTM32F103Z.menu.device_variant.STM32F103ZC=STM32F103ZC
264-
genericSTM32F103Z.menu.device_variant.STM32F103ZC.build.cpu_flags=-DMCU_STM32F103ZC
265-
genericSTM32F103Z.menu.device_variant.STM32F103ZC.upload.maximum_size=262144
266-
genericSTM32F103Z.menu.device_variant.STM32F103ZC.upload.ram.maximum_size=492152
267-
genericSTM32F103Z.menu.device_variant.STM32F103ZC.upload.flash.maximum_size=262144
268-
genericSTM32F103Z.menu.device_variant.STM32F103ZC.build.ldscript=ld/stm32f103zc.ld
269-
270-
genericSTM32F103Z.menu.device_variant.STM32F103ZD=STM32F103ZD
271-
genericSTM32F103Z.menu.device_variant.STM32F103ZD.build.cpu_flags=-DMCU_STM32F103ZD
272-
genericSTM32F103Z.menu.device_variant.STM32F103ZD.upload.maximum_size=393216
273-
genericSTM32F103Z.menu.device_variant.STM32F103ZD.upload.ram.maximum_size=65536
274-
genericSTM32F103Z.menu.device_variant.STM32F103ZD.upload.flash.maximum_size=393216
275-
genericSTM32F103Z.menu.device_variant.STM32F103ZD.build.ldscript=ld/stm32f103zd.ld
276-
277-
genericSTM32F103Z.menu.device_variant.STM32F103ZE=STM32F103ZE
278-
genericSTM32F103Z.menu.device_variant.STM32F103ZE.build.cpu_flags=-DMCU_STM32F103ZE
279-
genericSTM32F103Z.menu.device_variant.STM32F103ZE.upload.maximum_size=524288
280-
genericSTM32F103Z.menu.device_variant.STM32F103ZE.upload.ram.maximum_size=65536
281-
genericSTM32F103Z.menu.device_variant.STM32F103ZE.upload.flash.maximum_size=524288
282-
genericSTM32F103Z.menu.device_variant.STM32F103ZE.build.ldscript=ld/stm32f103ze.ld
283-
284-
#---------------------------- UPLOAD METHODS ---------------------------
285-
genericSTM32F103Z.menu.upload_method.serialMethod=Serial
286-
genericSTM32F103Z.menu.upload_method.serialMethod.upload.protocol=maple_serial
287-
genericSTM32F103Z.menu.upload_method.serialMethod.upload.tool=serial_upload
288-
289-
genericSTM32F103Z.menu.upload_method.STLinkMethod=STLink
290-
genericSTM32F103Z.menu.upload_method.STLinkMethod.upload.protocol=STLink
291-
genericSTM32F103Z.menu.upload_method.STLinkMethod.upload.tool=stlink_upload
292-
genericSTM32F103Z.menu.upload_method.STLinkMethod.build.upload_flags=-DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG=1 -DSERIAL_USB
293-
294-
261+
genericSTM32F103R.menu.upload_method.DFUUploadMethod=Maple DFU
262+
genericSTM32F103R.menu.upload_method.DFUUploadMethod.upload.protocol=maple_dfu
263+
genericSTM32F103R.menu.upload_method.DFUUploadMethod.upload.tool=maple_upload
264+
genericSTM32F103R.menu.upload_method.DFUUploadMethod.build.upload_flags=-DSERIAL_USB
265+
genericSTM32F103R.menu.upload_method.DFUUploadMethod.build.vect=VECT_TAB_ADDR=0x8002000
266+
genericSTM32F103R.menu.upload_method.DFUUploadMethod.build.ldscript=ld/stm32f103re-bootloader.ld
267+
genericSTM32F103R.menu.upload_method.DFUUploadMethod.upload.usbID=1EAF:0003
268+
genericSTM32F103R.menu.upload_method.DFUUploadMethod.upload.altID=2
295269

296270

297271
########################### Generic STM32F103V ###########################
@@ -352,3 +326,58 @@ genericSTM32F103V.menu.upload_method.DFUUploadMethod.build.vect=VECT_TAB_ADDR=0x
352326
genericSTM32F103V.menu.upload_method.DFUUploadMethod.build.ldscript=ld/stm32f103veDFU.ld
353327
genericSTM32F103V.menu.upload_method.DFUUploadMethod.upload.usbID=1EAF:0003
354328
genericSTM32F103V.menu.upload_method.DFUUploadMethod.upload.altID=2
329+
330+
331+
332+
########################### Generic STM32F103Z ###########################
333+
334+
335+
genericSTM32F103Z.name=Generic STM32F103Z series
336+
genericSTM32F103Z.build.variant=generic_stm32f103z
337+
genericSTM32F103Z.build.vect=VECT_TAB_ADDR=0x8000000
338+
genericSTM32F103Z.build.core=maple
339+
genericSTM32F103Z.build.board=GENERIC_STM32F103Z
340+
genericSTM32F103Z.upload.use_1200bps_touch=false
341+
genericSTM32F103Z.upload.file_type=bin
342+
genericSTM32F103Z.upload.auto_reset=true
343+
344+
genericSTM32F103Z.menu.device_variant.STM32F103ZC=STM32F103ZC
345+
genericSTM32F103Z.menu.device_variant.STM32F103ZC.build.cpu_flags=-DMCU_STM32F103ZC
346+
genericSTM32F103Z.menu.device_variant.STM32F103ZC.upload.maximum_size=262144
347+
genericSTM32F103Z.menu.device_variant.STM32F103ZC.upload.ram.maximum_size=492152
348+
genericSTM32F103Z.menu.device_variant.STM32F103ZC.upload.flash.maximum_size=262144
349+
genericSTM32F103Z.menu.device_variant.STM32F103ZC.build.ldscript=ld/stm32f103zc.ld
350+
351+
genericSTM32F103Z.menu.device_variant.STM32F103ZD=STM32F103ZD
352+
genericSTM32F103Z.menu.device_variant.STM32F103ZD.build.cpu_flags=-DMCU_STM32F103ZD
353+
genericSTM32F103Z.menu.device_variant.STM32F103ZD.upload.maximum_size=393216
354+
genericSTM32F103Z.menu.device_variant.STM32F103ZD.upload.ram.maximum_size=65536
355+
genericSTM32F103Z.menu.device_variant.STM32F103ZD.upload.flash.maximum_size=393216
356+
genericSTM32F103Z.menu.device_variant.STM32F103ZD.build.ldscript=ld/stm32f103zd.ld
357+
358+
genericSTM32F103Z.menu.device_variant.STM32F103ZE=STM32F103ZE
359+
genericSTM32F103Z.menu.device_variant.STM32F103ZE.build.cpu_flags=-DMCU_STM32F103ZE
360+
genericSTM32F103Z.menu.device_variant.STM32F103ZE.upload.maximum_size=524288
361+
genericSTM32F103Z.menu.device_variant.STM32F103ZE.upload.ram.maximum_size=65536
362+
genericSTM32F103Z.menu.device_variant.STM32F103ZE.upload.flash.maximum_size=524288
363+
genericSTM32F103Z.menu.device_variant.STM32F103ZE.build.ldscript=ld/stm32f103ze.ld
364+
365+
#---------------------------- UPLOAD METHODS ---------------------------
366+
genericSTM32F103Z.menu.upload_method.serialMethod=Serial
367+
genericSTM32F103Z.menu.upload_method.serialMethod.upload.protocol=maple_serial
368+
genericSTM32F103Z.menu.upload_method.serialMethod.upload.tool=serial_upload
369+
370+
genericSTM32F103Z.menu.upload_method.STLinkMethod=STLink
371+
genericSTM32F103Z.menu.upload_method.STLinkMethod.upload.protocol=STLink
372+
genericSTM32F103Z.menu.upload_method.STLinkMethod.upload.tool=stlink_upload
373+
genericSTM32F103Z.menu.upload_method.STLinkMethod.build.upload_flags=-DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG=1 -DSERIAL_USB
374+
375+
genericSTM32F103Z.menu.upload_method.DFUUploadMethod=Maple DFU
376+
genericSTM32F103Z.menu.upload_method.DFUUploadMethod.upload.protocol=maple_dfu
377+
genericSTM32F103Z.menu.upload_method.DFUUploadMethod.upload.tool=maple_upload
378+
genericSTM32F103Z.menu.upload_method.DFUUploadMethod.build.upload_flags=-DSERIAL_USB
379+
genericSTM32F103Z.menu.upload_method.DFUUploadMethod.build.vect=VECT_TAB_ADDR=0x8002000
380+
genericSTM32F103Z.menu.upload_method.DFUUploadMethod.build.ldscript=ld/stm32f103z_dfu.ld
381+
genericSTM32F103Z.menu.upload_method.DFUUploadMethod.upload.usbID=1EAF:0003
382+
genericSTM32F103Z.menu.upload_method.DFUUploadMethod.upload.altID=2
383+
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/*
2+
* libmaple linker script for "Flash" builds.
3+
*
4+
* A Flash build puts .text (and .rodata) in Flash, and
5+
* .data/.bss/heap (of course) in SRAM, but offsets the sections by
6+
* enough space to store the Maple bootloader, which lives in low
7+
* Flash and uses low memory.
8+
*/
9+
10+
/*
11+
* This pulls in the appropriate MEMORY declaration from the right
12+
* subdirectory of stm32/mem/ (the environment must call ld with the
13+
* right include directory flags to make this happen). Boards can also
14+
* use this file to use any of libmaple's memory-related hooks (like
15+
* where the heap should live).
16+
*/
17+
MEMORY
18+
{
19+
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K
20+
rom (rx) : ORIGIN = 0x08002000, LENGTH = 120K
21+
}
22+
23+
/* Provide memory region aliases for common.inc */
24+
REGION_ALIAS("REGION_TEXT", rom);
25+
REGION_ALIAS("REGION_DATA", ram);
26+
REGION_ALIAS("REGION_BSS", ram);
27+
REGION_ALIAS("REGION_RODATA", rom);
28+
29+
/* Let common.inc handle the real work. */
30+
INCLUDE common.inc

STM32F1/variants/generic_stm32f103c/wirish/boards_setup.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -75,17 +75,14 @@ namespace wirish {
7575

7676
__weak void board_setup_usb(void) {
7777
#ifdef SERIAL_USB
78-
//Attempt to reset the USB interface - developed by Victor PV
78+
//Reset the USB interface on generic boards - developed by Victor PV
7979

8080
gpio_set_mode(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit, GPIO_OUTPUT_PP);
8181
gpio_write_bit(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit,0);
82-
8382

84-
for(volatile unsigned int i=0;i<5000000;i++)
85-
{
86-
asm("nop");
87-
}
83+
for(volatile unsigned int i=0;i<256;i++);// Only small delay seems to be needed, and USB pins will get configured in Serial.begin
8884
gpio_set_mode(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit, GPIO_INPUT_FLOATING);
85+
8986
Serial.begin();// Roger Clark. Changed SerialUSB to Serial for Arduino sketch compatibility
9087
#endif
9188
}

STM32F1/variants/generic_stm32f103r/ld/stm32f103re-bootloader.ld

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
*/
2222
MEMORY
2323
{
24-
ram (rwx) : ORIGIN = 0x20000C00, LENGTH = 61K
25-
rom (rx) : ORIGIN = 0x08005000, LENGTH = 492K
24+
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 61K
25+
rom (rx) : ORIGIN = 0x08002000, LENGTH = 504K
2626
}
2727

2828

STM32F1/variants/generic_stm32f103r/wirish/boards_setup.cpp

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -75,17 +75,13 @@ namespace wirish {
7575

7676
__weak void board_setup_usb(void) {
7777
#ifdef SERIAL_USB
78-
//Attempt to reset the USB interface - developed by Victor PV
7978

79+
//Reset the USB interface on generic boards - developed by Victor PV
8080
gpio_set_mode(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit, GPIO_OUTPUT_PP);
8181
gpio_write_bit(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit,0);
82-
83-
84-
for(volatile unsigned int i=0;i<5000000;i++)
85-
{
86-
asm("nop");
87-
}
82+
for(volatile unsigned int i=0;i<256;i++);// Only small delay seems to be needed, and USB pins will get configured in Serial.begin
8883
gpio_set_mode(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit, GPIO_INPUT_FLOATING);
84+
8985
Serial.begin();// Roger Clark. Changed SerialUSB to Serial for Arduino sketch compatibility
9086
#endif
9187
}

STM32F1/variants/generic_stm32f103v/wirish/boards_setup.cpp

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -77,19 +77,11 @@ namespace wirish {
7777
#ifdef SERIAL_USB
7878

7979

80-
//Attempt to reset the USB interface - developed by Victor PV
81-
80+
//Reset the USB interface on generic boards - developed by Victor PV
8281
gpio_set_mode(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit, GPIO_OUTPUT_PP);
8382
gpio_write_bit(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit,0);
84-
85-
86-
for(volatile unsigned int i=0;i<5000000;i++)
87-
{
88-
asm("nop");
89-
}
83+
for(volatile unsigned int i=0;i<256;i++);// Only small delay seems to be needed, and USB pins will get configured in Serial.begin
9084
gpio_set_mode(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit, GPIO_INPUT_FLOATING);
91-
92-
9385

9486
Serial.begin();// Roger Clark. Changed SerialUSB to Serial for Arduino sketch compatibility
9587
#endif
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/*
2+
* libmaple linker script
3+
*
4+
* This build puts .text (and .rodata) in Flash, and
5+
* .data/.bss/heap (of course) in SRAM, but links starting at the
6+
* Flash and SRAM starting addresses (0x08000000 and 0x20000000
7+
* respectively). This will wipe out a Maple bootloader if there's one
8+
* on the board, so only use this if you know what you're doing.
9+
*
10+
* This build is perfectly usable for upload over SWD,
11+
* the system memory bootloader, etc. The name is just a historical
12+
* artifact.
13+
*/
14+
15+
16+
MEMORY
17+
{
18+
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 64K
19+
rom (rx) : ORIGIN = 0x08002000, LENGTH = 504K
20+
}
21+
22+
/* Provide memory region aliases for common.inc */
23+
REGION_ALIAS("REGION_TEXT", rom);
24+
REGION_ALIAS("REGION_DATA", ram);
25+
REGION_ALIAS("REGION_BSS", ram);
26+
REGION_ALIAS("REGION_RODATA", rom);
27+
28+
/* Let common.inc handle the real work. */
29+
INCLUDE common.inc

STM32F1/variants/generic_stm32f103z/wirish/boards_setup.cpp

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -78,17 +78,12 @@ namespace wirish {
7878

7979

8080
#ifdef SERIAL_USB
81-
//Attempt to reset the USB interface - developed by Victor PV
82-
81+
//Reset the USB interface on generic boards - developed by Victor PV
8382
gpio_set_mode(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit, GPIO_OUTPUT_PP);
8483
gpio_write_bit(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit,0);
85-
86-
87-
for(volatile unsigned int i=0;i<5000000;i++)
88-
{
89-
asm("nop");
90-
}
84+
for(volatile unsigned int i=0;i<256;i++);// Only small delay seems to be needed, and USB pins will get configured in Serial.begin
9185
gpio_set_mode(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit, GPIO_INPUT_FLOATING);
86+
9287
Serial.begin();// Roger Clark. Changed SerialUSB to Serial for Arduino sketch compatibility
9388
#endif
9489
}

0 commit comments

Comments
 (0)