Skip to content

Commit 02e802b

Browse files
committed
feat: handle bootloaders
This adds a new keyword, BOOTLOADER, in set_board(). Cmake-wise, the bootloader targets replace the board targets, they are not feature targets to plug in.
1 parent 45f563a commit 02e802b

File tree

509 files changed

+14698
-1001
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

509 files changed

+14698
-1001
lines changed

Diff for: cmake/boards_db.cmake

+14,086-406
Large diffs are not rendered by default.

Diff for: cmake/scripts/update_boarddb.py

+14-3
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,12 @@ def boardstxt_filter(key) :
2828
# Midatronics.menu.upload_method.MassStorage=Mass Storage
2929
return True
3030

31-
# Remove upload_method also, that's out of our scope and requires more logic
32-
if len(key) >= 3 and key[2] == "upload_method" :
31+
# keep bootloader flags that impact the build
32+
if len(key) >= 6 \
33+
and key[1] == "menu" \
34+
and key[2] == "upload_method" :
35+
if key[3] != "build" :
36+
return False
3337
return True
3438

3539
return False
@@ -96,8 +100,12 @@ def regenerate_template(config, infile, outfile) :
96100
inherit_fam["menu"] = inherit_fam["menu"].copy()
97101
# del what you iterate over (otherwise you get infinite nesting)
98102
del inherit_fam["menu"]["pnum"]
103+
for u_meth, u_meth_cfg in inherit_fam.menu.upload_method.copy().items() :
104+
if "build" not in u_meth_cfg.keys() :
105+
del inherit_fam.menu.upload_method[u_meth]
99106

100107
for board, boardcfg in famcfg.menu.pnum.items() :
108+
boardcfg["_fpconf"] = get_fpconf(boardcfg)
101109
boardcfg.set_default_entries(inherit_fam)
102110

103111
inherit_board = boardcfg.copy()
@@ -116,7 +124,10 @@ def regenerate_template(config, infile, outfile) :
116124

117125
boardcfg.evaluate_entries()
118126

119-
boardcfg["_fpconf"] = get_fpconf(boardcfg)
120127
allboards[board] = boardcfg
128+
for mth, mthcfg in boardcfg.menu.upload_method.items() :
129+
if mth.startswith(("hid", "dfuo", "dfu2")) :
130+
mth = mth.removesuffix("Method")
131+
allboards[f"{board}_{mth}"] = mthcfg
121132

122133
regenerate_template(allboards, shargs.template, shargs.outfile)

Diff for: cmake/set_board.cmake

+11-7
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,17 @@ function(set_board BOARD_ID)
55
updatedb() # updates board_db if needed
66
include(boards_db)
77

8+
set(KEYWORDS SERIAL USB XUSB VIRTIO BOOTLOADER)
9+
cmake_parse_arguments(PARSE_ARGV 1 BOARD "" "${KEYWORDS}" "")
10+
11+
if(DEFINED BOARD_UNPARSED_ARGUMENTS OR DEFINED BOARD_KEYWORDS_MISSING_VALUES)
12+
message(SEND_ERROR "Invalid call to set_board(); some arguments went unparsed")
13+
endif()
14+
15+
if(DEFINED BOARD_BOOTLOADER)
16+
set(BOARD_ID "${BOARD_ID}_${BOARD_BOOTLOADER}")
17+
endif()
18+
819
if (NOT TARGET ${BOARD_ID})
920
message(SEND_ERROR "Board ${BOARD_ID} not found. Maybe the board database is not up-to-date?")
1021
return()
@@ -16,13 +27,6 @@ function(set_board BOARD_ID)
1627
set(MCU ${${BOARD_ID}_MCU} PARENT_SCOPE)
1728
set(FPCONF ${${BOARD_ID}_FPCONF} PARENT_SCOPE)
1829

19-
set(KEYWORDS SERIAL USB XUSB VIRTIO)
20-
cmake_parse_arguments(PARSE_ARGV 1 BOARD "" "${KEYWORDS}" "")
21-
22-
if(DEFINED BOARD_UNPARSED_ARGUMENTS OR DEFINED BOARD_KEYWORDS_MISSING_VALUES)
23-
message(SEND_ERROR "Invalid call to set_board(); some arguments went unparsed")
24-
endif()
25-
2630
# if the user passed in an invalid value, then the target won't be found
2731
# and cmake will output an error message
2832
if(DEFINED BOARD_SERIAL)

Diff for: cmake/templates/easy_cmake.cmake

+1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ set_board("{{"${BOARDNAME}"}}"
4040
# USB none / CDCgen / CDC / HID
4141
# XUSB FS / HS / HSFS
4242
# VIRTIO disable / generic / enabled
43+
# BOOTLOADER dfuo / dfu2 / hid
4344
)
4445

4546
include(overall_settings)

Diff for: cores/arduino/CMakeLists.txt

+12-12
Original file line numberDiff line numberDiff line change
@@ -19,25 +19,17 @@ target_link_libraries(core INTERFACE core_usage)
1919

2020

2121
add_library(core_bin STATIC EXCLUDE_FROM_ALL
22-
HardwareSerial.cpp
23-
IPAddress.cpp
24-
Print.cpp
25-
RingBuffer.cpp
26-
Stream.cpp
27-
Tone.cpp
28-
USBSerial.cpp
29-
VirtIOSerial.cpp
30-
WInterrupts.cpp
31-
WMath.cpp
32-
WSerial.cpp
33-
WString.cpp
3422
abi.cpp
3523
avr/dtostrf.c
3624
board.c
25+
HardwareSerial.cpp
3726
hooks.c
27+
IPAddress.cpp
3828
itoa.c
3929
main.cpp
4030
pins_arduino.c
31+
Print.cpp
32+
RingBuffer.cpp
4133
stm32/OpenAMP/libmetal/device.c
4234
stm32/OpenAMP/libmetal/generic/condition.c
4335
stm32/OpenAMP/libmetal/generic/cortexm/sys.c
@@ -74,11 +66,19 @@ add_library(core_bin STATIC EXCLUDE_FROM_ALL
7466
stm32/usb/usbd_desc.c
7567
stm32/usb/usbd_ep_conf.c
7668
stm32/usb/usbd_if.c
69+
Stream.cpp
70+
Tone.cpp
71+
USBSerial.cpp
72+
VirtIOSerial.cpp
73+
WInterrupts.cpp
7774
wiring_analog.c
7875
wiring_digital.c
7976
wiring_pulse.cpp
8077
wiring_shift.c
8178
wiring_time.c
79+
WMath.cpp
80+
WSerial.cpp
81+
WString.cpp
8282
)
8383
target_link_libraries(core_bin PUBLIC core_usage)
8484

Diff for: libraries/SrcWrapper/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -194,3 +194,4 @@ target_link_libraries(SrcWrapper INTERFACE
194194
SrcWrapper_bin
195195
$<TARGET_OBJECTS:SrcWrapper_bin>
196196
)
197+

Diff for: variants/STM32F0xx/F030C6T/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ target_link_libraries(variant INTERFACE variant_usage)
1919

2020

2121
add_library(variant_bin STATIC EXCLUDE_FROM_ALL
22-
PeripheralPins.c
2322
generic_clock.c
23+
PeripheralPins.c
2424
variant_generic.cpp
2525
)
2626
target_link_libraries(variant_bin PUBLIC variant_usage)

Diff for: variants/STM32F0xx/F030C8T/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ target_link_libraries(variant INTERFACE variant_usage)
1919

2020

2121
add_library(variant_bin STATIC EXCLUDE_FROM_ALL
22+
generic_clock.c
2223
PeripheralPins.c
2324
PeripheralPins_EEXTR_F030_V1.c
24-
generic_clock.c
2525
variant_EEXTR_F030_V1.cpp
2626
variant_generic.cpp
2727
)

Diff for: variants/STM32F0xx/F030CCT/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ target_link_libraries(variant INTERFACE variant_usage)
1919

2020

2121
add_library(variant_bin STATIC EXCLUDE_FROM_ALL
22-
PeripheralPins.c
2322
generic_clock.c
23+
PeripheralPins.c
2424
variant_generic.cpp
2525
)
2626
target_link_libraries(variant_bin PUBLIC variant_usage)

Diff for: variants/STM32F0xx/F030F4P/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ target_link_libraries(variant INTERFACE variant_usage)
1919

2020

2121
add_library(variant_bin STATIC EXCLUDE_FROM_ALL
22-
PeripheralPins.c
2322
generic_clock.c
23+
PeripheralPins.c
2424
variant_DEMO_F030F4.cpp
2525
variant_generic.cpp
2626
)

Diff for: variants/STM32F0xx/F030K6T/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ target_link_libraries(variant INTERFACE variant_usage)
1919

2020

2121
add_library(variant_bin STATIC EXCLUDE_FROM_ALL
22-
PeripheralPins.c
2322
generic_clock.c
23+
PeripheralPins.c
2424
variant_generic.cpp
2525
)
2626
target_link_libraries(variant_bin PUBLIC variant_usage)

Diff for: variants/STM32F0xx/F030R8T/CMakeLists.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ target_link_libraries(variant INTERFACE variant_usage)
1919

2020

2121
add_library(variant_bin STATIC EXCLUDE_FROM_ALL
22-
PeripheralPins.c
2322
generic_clock.c
23+
PeripheralPins.c
2424
variant_DISCO_F030R8.cpp
25-
variant_NUCLEO_F030R8.cpp
2625
variant_generic.cpp
26+
variant_NUCLEO_F030R8.cpp
2727
)
2828
target_link_libraries(variant_bin PUBLIC variant_usage)
2929

Diff for: variants/STM32F0xx/F030RCT/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ target_link_libraries(variant INTERFACE variant_usage)
1919

2020

2121
add_library(variant_bin STATIC EXCLUDE_FROM_ALL
22-
PeripheralPins.c
2322
generic_clock.c
23+
PeripheralPins.c
2424
variant_generic.cpp
2525
)
2626
target_link_libraries(variant_bin PUBLIC variant_usage)

Diff for: variants/STM32F0xx/F031C(4-6)T/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ target_link_libraries(variant INTERFACE variant_usage)
1919

2020

2121
add_library(variant_bin STATIC EXCLUDE_FROM_ALL
22-
PeripheralPins.c
2322
generic_clock.c
23+
PeripheralPins.c
2424
variant_generic.cpp
2525
)
2626
target_link_libraries(variant_bin PUBLIC variant_usage)

Diff for: variants/STM32F0xx/F031E6Y_F038E6Y/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ target_link_libraries(variant INTERFACE variant_usage)
1919

2020

2121
add_library(variant_bin STATIC EXCLUDE_FROM_ALL
22-
PeripheralPins.c
2322
generic_clock.c
23+
PeripheralPins.c
2424
variant_generic.cpp
2525
)
2626
target_link_libraries(variant_bin PUBLIC variant_usage)

Diff for: variants/STM32F0xx/F031F(4-6)P/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ target_link_libraries(variant INTERFACE variant_usage)
1919

2020

2121
add_library(variant_bin STATIC EXCLUDE_FROM_ALL
22-
PeripheralPins.c
2322
generic_clock.c
23+
PeripheralPins.c
2424
variant_generic.cpp
2525
)
2626
target_link_libraries(variant_bin PUBLIC variant_usage)

Diff for: variants/STM32F0xx/F031G(4-6)U/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ target_link_libraries(variant INTERFACE variant_usage)
1919

2020

2121
add_library(variant_bin STATIC EXCLUDE_FROM_ALL
22-
PeripheralPins.c
2322
generic_clock.c
23+
PeripheralPins.c
2424
variant_generic.cpp
2525
)
2626
target_link_libraries(variant_bin PUBLIC variant_usage)

Diff for: variants/STM32F0xx/F031K(4-6)U/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ target_link_libraries(variant INTERFACE variant_usage)
1919

2020

2121
add_library(variant_bin STATIC EXCLUDE_FROM_ALL
22-
PeripheralPins.c
2322
generic_clock.c
23+
PeripheralPins.c
2424
variant_generic.cpp
2525
)
2626
target_link_libraries(variant_bin PUBLIC variant_usage)

Diff for: variants/STM32F0xx/F031K6T/CMakeLists.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@ target_link_libraries(variant INTERFACE variant_usage)
1919

2020

2121
add_library(variant_bin STATIC EXCLUDE_FROM_ALL
22-
PeripheralPins.c
2322
generic_clock.c
24-
variant_NUCLEO_F031K6.cpp
23+
PeripheralPins.c
2524
variant_generic.cpp
25+
variant_NUCLEO_F031K6.cpp
2626
)
2727
target_link_libraries(variant_bin PUBLIC variant_usage)
2828

Diff for: variants/STM32F0xx/F038C6T/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ target_link_libraries(variant INTERFACE variant_usage)
1919

2020

2121
add_library(variant_bin STATIC EXCLUDE_FROM_ALL
22-
PeripheralPins.c
2322
generic_clock.c
23+
PeripheralPins.c
2424
variant_generic.cpp
2525
)
2626
target_link_libraries(variant_bin PUBLIC variant_usage)

Diff for: variants/STM32F0xx/F038F6P/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ target_link_libraries(variant INTERFACE variant_usage)
1919

2020

2121
add_library(variant_bin STATIC EXCLUDE_FROM_ALL
22-
PeripheralPins.c
2322
generic_clock.c
23+
PeripheralPins.c
2424
variant_generic.cpp
2525
)
2626
target_link_libraries(variant_bin PUBLIC variant_usage)

Diff for: variants/STM32F0xx/F038G6U/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ target_link_libraries(variant INTERFACE variant_usage)
1919

2020

2121
add_library(variant_bin STATIC EXCLUDE_FROM_ALL
22-
PeripheralPins.c
2322
generic_clock.c
23+
PeripheralPins.c
2424
variant_generic.cpp
2525
)
2626
target_link_libraries(variant_bin PUBLIC variant_usage)

Diff for: variants/STM32F0xx/F038K6U/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ target_link_libraries(variant INTERFACE variant_usage)
1919

2020

2121
add_library(variant_bin STATIC EXCLUDE_FROM_ALL
22-
PeripheralPins.c
2322
generic_clock.c
23+
PeripheralPins.c
2424
variant_generic.cpp
2525
)
2626
target_link_libraries(variant_bin PUBLIC variant_usage)

Diff for: variants/STM32F0xx/F042C(4-6)(T-U)/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ target_link_libraries(variant INTERFACE variant_usage)
1919

2020

2121
add_library(variant_bin STATIC EXCLUDE_FROM_ALL
22-
PeripheralPins.c
2322
generic_clock.c
23+
PeripheralPins.c
2424
variant_generic.cpp
2525
)
2626
target_link_libraries(variant_bin PUBLIC variant_usage)

Diff for: variants/STM32F0xx/F042F(4-6)P/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ target_link_libraries(variant INTERFACE variant_usage)
1919

2020

2121
add_library(variant_bin STATIC EXCLUDE_FROM_ALL
22-
PeripheralPins.c
2322
generic_clock.c
23+
PeripheralPins.c
2424
variant_generic.cpp
2525
)
2626
target_link_libraries(variant_bin PUBLIC variant_usage)

Diff for: variants/STM32F0xx/F042G(4-6)U/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ target_link_libraries(variant INTERFACE variant_usage)
1919

2020

2121
add_library(variant_bin STATIC EXCLUDE_FROM_ALL
22-
PeripheralPins.c
2322
generic_clock.c
23+
PeripheralPins.c
2424
variant_generic.cpp
2525
)
2626
target_link_libraries(variant_bin PUBLIC variant_usage)

Diff for: variants/STM32F0xx/F042K(4-6)T/CMakeLists.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@ target_link_libraries(variant INTERFACE variant_usage)
1919

2020

2121
add_library(variant_bin STATIC EXCLUDE_FROM_ALL
22-
PeripheralPins.c
2322
generic_clock.c
24-
variant_NUCLEO_F042K6.cpp
23+
PeripheralPins.c
2524
variant_generic.cpp
25+
variant_NUCLEO_F042K6.cpp
2626
)
2727
target_link_libraries(variant_bin PUBLIC variant_usage)
2828

Diff for: variants/STM32F0xx/F042K(4-6)U/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ target_link_libraries(variant INTERFACE variant_usage)
1919

2020

2121
add_library(variant_bin STATIC EXCLUDE_FROM_ALL
22-
PeripheralPins.c
2322
generic_clock.c
23+
PeripheralPins.c
2424
variant_generic.cpp
2525
)
2626
target_link_libraries(variant_bin PUBLIC variant_usage)

Diff for: variants/STM32F0xx/F042T6Y/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ target_link_libraries(variant INTERFACE variant_usage)
1919

2020

2121
add_library(variant_bin STATIC EXCLUDE_FROM_ALL
22-
PeripheralPins.c
2322
generic_clock.c
23+
PeripheralPins.c
2424
variant_generic.cpp
2525
)
2626
target_link_libraries(variant_bin PUBLIC variant_usage)

Diff for: variants/STM32F0xx/F048C6U/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ target_link_libraries(variant INTERFACE variant_usage)
1919

2020

2121
add_library(variant_bin STATIC EXCLUDE_FROM_ALL
22-
PeripheralPins.c
2322
generic_clock.c
23+
PeripheralPins.c
2424
variant_generic.cpp
2525
)
2626
target_link_libraries(variant_bin PUBLIC variant_usage)

Diff for: variants/STM32F0xx/F048G6U/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ target_link_libraries(variant INTERFACE variant_usage)
1919

2020

2121
add_library(variant_bin STATIC EXCLUDE_FROM_ALL
22-
PeripheralPins.c
2322
generic_clock.c
23+
PeripheralPins.c
2424
variant_generic.cpp
2525
)
2626
target_link_libraries(variant_bin PUBLIC variant_usage)

0 commit comments

Comments
 (0)