Skip to content

Commit d4e9c31

Browse files
committed
added support for boards that has multiple cpus (nano,mega,mini,pro...)
1 parent 92baf11 commit d4e9c31

18 files changed

+341
-268
lines changed

README.rst

+142-127
Large diffs are not rendered by default.

cmake/Platform/Arduino.cmake

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ include(VariableValidator)
2828
include(Initializer)
2929

3030
include(Macros)
31+
include(BoardPropertiesReader)
3132
include(FlagsSetter)
3233
include(SourceFinder)
3334
include(LibraryFinder)

cmake/Platform/Core/BoardFlags/CompilerFlagsSetter.cmake

+14-6
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,30 @@
11
# ToDo: Comment
22
function(set_board_compiler_flags COMPILER_FLAGS ARDUINO_DEFINED_VERSION BOARD_ID IS_MANUAL)
33

4-
set(COMPILE_FLAGS "-DF_CPU=${${BOARD_ID}.build.f_cpu} -DARDUINO=${ARDUINO_DEFINED_VERSION} -mmcu=${${BOARD_ID}.build.mcu}")
5-
if (DEFINED ${BOARD_ID}.build.vid)
6-
set(COMPILE_FLAGS "${COMPILE_FLAGS} -DUSB_VID=${${BOARD_ID}.build.vid}")
4+
_get_board_property(${BOARD_ID} build.f_cpu FCPU)
5+
_get_board_property(${BOARD_ID} build.mcu MCU)
6+
set(COMPILE_FLAGS "-DF_CPU=${FCPU} -DARDUINO=${ARDUINO_DEFINED_VERSION} -mmcu=${MCU}")
7+
8+
_get_board_property_if_exists(${BOARD_ID} build.vid VID)
9+
_get_board_property_if_exists(${BOARD_ID} build.pid PID)
10+
if (VID)
11+
set(COMPILE_FLAGS "${COMPILE_FLAGS} -DUSB_VID=${VID}")
712
endif ()
8-
if (DEFINED ${BOARD_ID}.build.pid)
9-
set(COMPILE_FLAGS "${COMPILE_FLAGS} -DUSB_PID=${${BOARD_ID}.build.pid}")
13+
if (PID)
14+
set(COMPILE_FLAGS "${COMPILE_FLAGS} -DUSB_PID=${PID}")
1015
endif ()
16+
1117
if (NOT IS_MANUAL)
18+
_get_board_property(${BOARD_ID} build.core BOARD_CORE)
1219
set(COMPILE_FLAGS "${COMPILE_FLAGS} -I\"${${BOARD_CORE}.path}\" -I\"${ARDUINO_LIBRARIES_PATH}\"")
1320
if (${ARDUINO_PLATFORM_LIBRARIES_PATH})
1421
set(COMPILE_FLAGS "${COMPILE_FLAGS} -I\"${ARDUINO_PLATFORM_LIBRARIES_PATH}\"")
1522
endif ()
1623
endif ()
1724
if (ARDUINO_SDK_VERSION VERSION_GREATER 1.0 OR ARDUINO_SDK_VERSION VERSION_EQUAL 1.0)
1825
if (NOT IS_MANUAL)
19-
set(PIN_HEADER ${${${BOARD_ID}.build.variant}.path})
26+
_get_board_property(${BOARD_ID} build.variant VARIANT)
27+
set(PIN_HEADER ${${VARIANT}.path})
2028
if (PIN_HEADER)
2129
set(COMPILE_FLAGS "${COMPILE_FLAGS} -I\"${PIN_HEADER}\"")
2230
endif ()

cmake/Platform/Core/BoardFlags/FlagsSetter.cmake

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ include(LinkerFlagsSetter)
1717
#=============================================================================#
1818
function(set_board_flags COMPILER_FLAGS LINKER_FLAGS BOARD_ID IS_MANUAL)
1919

20-
set(BOARD_CORE ${${BOARD_ID}.build.core})
20+
_get_board_property(${BOARD_ID} build.core BOARD_CORE)
2121
if (BOARD_CORE)
2222
is_sdk_version_valid(IS_VERSION_VALID DEFINED_VERSION)
2323
if (NOT ${IS_VERSION_VALID})
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
# ToDo: Comment
22
function(set_board_linker_flags LINKER_FLAGS BOARD_ID IS_MANUAL)
33

4-
set(LINK_FLAGS "-mmcu=${${BOARD_ID}.build.mcu}")
4+
_get_board_property(${BOARD_ID} build.mcu MCU)
5+
set(LINK_FLAGS "-mmcu=${MCU}")
56
set(${LINKER_FLAGS} "${LINK_FLAGS}" PARENT_SCOPE)
67

78
endfunction()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
#=============================================================================#
2+
# _get_board_id
3+
# [PRIVATE/INTERNAL]
4+
#
5+
# _get_board_id(BOARD_NAME BOARD_CPU TARGET_NAME OUTPUT_VAR)
6+
#
7+
# BOARD_NAME - name of the board, eg.: nano, uno, etc...
8+
# BOARD_CPU - come boards has multiple versions with different cpus, eg.: nano has atmega168 and atmega328
9+
# TARGET_NAME - name of the build target, used to show clearer error message
10+
# OUT_VAR - BOARD_ID constructed from BOARD_NAME and BOARD_CPU
11+
#
12+
# returns BOARD_ID constructing from BOARD_NAME and BOARD_CPU, if board doesn't has multiple cpus then BOARD_ID = BOARD_NAME
13+
# if board has multiple CPUS, and BOARD_CPU is not defined or incorrect, fatal error will be invoked.
14+
#=============================================================================#
15+
function(_GET_BOARD_ID BOARD_NAME BOARD_CPU TARGET_NAME OUTPUT_VAR)
16+
if (${BOARD_NAME}.menu.CPUS)
17+
if (BOARD_CPU)
18+
LIST(FIND ${BOARD_NAME}.menu.CPUS ${BOARD_CPU} CPU_INDEX)
19+
if (CPU_INDEX EQUAL -1)
20+
message(FATAL_ERROR "Invalid BOARD_CPU (valid cpus: ${${BOARD_NAME}.menu.CPUS}).")
21+
endif()
22+
else()
23+
message(FATAL_ERROR "Board has multiple CPU versions (${${BOARD_NAME}.menu.CPUS}). BOARD_CPU must be defined for target ${TARGET_NAME}.")
24+
endif()
25+
set(${OUTPUT_VAR} ${BOARD_NAME}.${BOARD_CPU} PARENT_SCOPE)
26+
else()
27+
set(${OUTPUT_VAR} ${BOARD_NAME} PARENT_SCOPE)
28+
endif()
29+
endfunction()
30+
31+
#=============================================================================#
32+
# _get_board_property
33+
# [PRIVATE/INTERNAL]
34+
#
35+
# _get_board_property(BOARD_ID PROPERTY_NAME OUTPUT_VAR)
36+
#
37+
# BOARD_ID - return value from function "_get_board_id (BOARD_NAME, BOARD_CPU)". It contains BOARD_NAME and BOARD_CPU
38+
# PROPERTY_NAME - property name for the board, eg.: bootloader.high_fuses
39+
# OUT_VAR - variable holding value for the property
40+
#
41+
# Gets board property.
42+
# Reconstructs BOARD_NAME and BOARD_CPU from BOARD_ID and tries to find value at ${BOARD_NAME}.${PROPERTY_NAME},
43+
# if not found than try to find value at ${BOARD_NAME}.menu.cpu.${BOARD_CPU}.${PROPERTY_NAME}
44+
# if not found that show fatal error
45+
#=============================================================================#
46+
function(_GET_BOARD_PROPERTY BOARD_ID PROPERTY_NAME OUTPUT_VAR)
47+
string(REPLACE "." ";" BOARD_INFO ${BOARD_ID})
48+
list(GET BOARD_INFO 0 BOARD_NAME)
49+
set(VALUE ${${BOARD_NAME}.${PROPERTY_NAME}})
50+
if(NOT VALUE)
51+
list(LENGTH BOARD_INFO INFO_PARAMS_COUNT)
52+
if (${INFO_PARAMS_COUNT} EQUAL 2)
53+
list(GET BOARD_INFO 1 BOARD_CPU)
54+
VALIDATE_VARIABLES_NOT_EMPTY(VARS BOARD_CPU MSG "cannot find CPU info, must define BOARD_CPU.")
55+
set(VALUE ${${BOARD_NAME}.menu.cpu.${BOARD_CPU}.${PROPERTY_NAME}})
56+
endif()
57+
endif()
58+
if (NOT VALUE)
59+
message(FATAL_ERROR "Board info not found: BoardName='${BOARD_NAME}' BoardCPU='${BOARD_CPU}' PropertyName='${PROPERTY_NAME}'")
60+
endif()
61+
set(${OUTPUT_VAR} ${VALUE} PARENT_SCOPE)
62+
endfunction()
63+
64+
#=============================================================================#
65+
# _get_board_property_if_exists
66+
# [PRIVATE/INTERNAL]
67+
#
68+
# _get_board_property_if_exists(BOARD_ID PROPERTY_NAME OUTPUT_VAR)
69+
#
70+
# BOARD_ID - return value from function "_get_board_id (BOARD_NAME, BOARD_CPU)". It contains BOARD_NAME and BOARD_CPU
71+
# PROPERTY_NAME - property name for the board, eg.: bootloader.high_fuses
72+
# OUT_VAR - variable holding value for the property
73+
#
74+
# Similar to _get_board_property, except it returns empty value if value was not found.
75+
#=============================================================================#
76+
function(_GET_BOARD_PROPERTY_IF_EXISTS BOARD_ID PROPERTY_NAME OUTPUT_VAR)
77+
string(REPLACE "." ";" BOARD_INFO ${BOARD_ID})
78+
list(GET BOARD_INFO 0 BOARD_NAME)
79+
set(VALUE ${${BOARD_NAME}.${PROPERTY_NAME}})
80+
if(NOT VALUE)
81+
list(LENGTH BOARD_INFO INFO_PARAMS_COUNT)
82+
if (${INFO_PARAMS_COUNT} EQUAL 2)
83+
list(GET BOARD_INFO 1 BOARD_CPU)
84+
VALIDATE_VARIABLES_NOT_EMPTY(VARS BOARD_CPU MSG "cannot find CPU info, must define BOARD_CPU.")
85+
set(VALUE ${${BOARD_NAME}.menu.cpu.${BOARD_CPU}.${PROPERTY_NAME}})
86+
endif()
87+
endif()
88+
set(${OUTPUT_VAR} ${VALUE} PARENT_SCOPE)
89+
endfunction()

cmake/Platform/Core/Libraries/CoreLibraryFactory.cmake

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
#=============================================================================#
1414
function(make_core_library OUTPUT_VAR BOARD_ID)
1515
set(CORE_LIB_NAME ${BOARD_ID}_CORE)
16-
set(BOARD_CORE ${${BOARD_ID}.build.core})
16+
_get_board_property(${BOARD_ID} build.core BOARD_CORE)
1717
if (BOARD_CORE)
1818
if (NOT TARGET ${CORE_LIB_NAME})
1919
set(BOARD_CORE_PATH ${${BOARD_CORE}.path})

cmake/Platform/Core/Targets/ArduinoBootloaderArgumentsBuilder.cmake

+6-20
Original file line numberDiff line numberDiff line change
@@ -18,36 +18,22 @@ function(build_arduino_bootloader_arguments BOARD_ID TARGET_NAME PORT AVRDUDE_FL
1818
if (NOT AVRDUDE_FLAGS)
1919
set(AVRDUDE_FLAGS ${ARDUINO_AVRDUDE_FLAGS})
2020
endif ()
21-
21+
_get_board_property(${BOARD_ID} build.mcu MCU)
2222
list(APPEND AVRDUDE_ARGS
2323
"-C${ARDUINO_AVRDUDE_CONFIG_PATH}" # avrdude config
24-
"-p${${BOARD_ID}.build.mcu}" # MCU Type
24+
"-p${MCU}" # MCU Type
2525
)
2626

2727
# Programmer
28-
if (NOT ${BOARD_ID}.upload.protocol OR ${BOARD_ID}.upload.protocol STREQUAL "stk500")
28+
_get_board_property(${BOARD_ID} upload.protocol UPLOAD_PROTOCOL)
29+
if (${UPLOAD_PROTOCOL} STREQUAL "stk500")
2930
list(APPEND AVRDUDE_ARGS "-cstk500v1")
3031
else ()
31-
list(APPEND AVRDUDE_ARGS "-c${${BOARD_ID}.upload.protocol}")
32+
list(APPEND AVRDUDE_ARGS "-c${UPLOAD_PROTOCOL}")
3233
endif ()
3334

34-
set(UPLOAD_SPEED "19200") # Set a default speed
35-
if (${BOARD_ID}.upload.speed)
36-
set(UPLOAD_SPEED ${${BOARD_ID}.upload.speed})
37-
else ()
38-
# Speed wasn't manually set, and is not defined in the simple board settings
39-
# The only option left is to search in the 'menu' settings of the Arduino 1.6 SDK
40-
list(FIND ${BOARD_ID}.SETTINGS menu MENU_SETTINGS)
41-
# Determine upload speed based on the defined cpu architecture (mcu)
42-
if (${BOARD_ID}.build.mcu)
43-
GET_MCU(${${BOARD_ID}.build.mcu} BOARD_MCU)
44-
list(FIND ${BOARD_ID}.menu.CPUS ${BOARD_MCU} BOARD_MCU_INDEX)
45-
if (BOARD_MCU_INDEX GREATER -1) # Matching mcu is found
46-
set(UPLOAD_SPEED ${${BOARD_ID}.menu.cpu.${BOARD_MCU}.upload.speed})
47-
endif ()
48-
endif ()
49-
endif ()
5035

36+
_get_board_property(${BOARD_ID} upload.speed UPLOAD_SPEED)
5137
list(APPEND AVRDUDE_ARGS
5238
"-b${UPLOAD_SPEED}" # Baud rate
5339
"-P${PORT}" # Serial port

cmake/Platform/Core/Targets/ArduinoBootloaderBurnTargetCreator.cmake

+33-71
Original file line numberDiff line numberDiff line change
@@ -28,93 +28,55 @@ function(create_arduino_bootloader_burn_target TARGET_NAME BOARD_ID PROGRAMMER P
2828
endif ()
2929

3030
# look at bootloader.file
31-
set(BOOTLOADER_FOUND True)
32-
if (NOT ${BOARD_ID}.bootloader.file)
33-
set(BOOTLOADER_FOUND False)
34-
# Bootloader is probably defined in the 'menu' settings of the Arduino 1.6 SDK
35-
if (${BOARD_ID}.build.mcu)
36-
GET_MCU(${${BOARD_ID}.build.mcu} BOARD_MCU)
37-
if (NOT ${BOARD_ID}.menu.cpu.${BOARD_MCU}.bootloader.file)
38-
message("Missing ${BOARD_ID}.bootloader.file, not creating bootloader burn target ${BOOTLOADER_TARGET}.")
39-
return()
40-
endif ()
41-
set(BOOTLOADER_FOUND True)
42-
set(${BOARD_ID}.bootloader.file ${${BOARD_ID}.menu.cpu.${BOARD_MCU}.bootloader.file)
43-
endif ()
44-
endif ()
45-
46-
if (NOT ${BOOTLOADER_FOUND})
31+
_get_board_property_if_exists(${BOARD_ID} bootloader.file BOOTLOADER_FILE)
32+
if (NOT BOOTLOADER_FILE)
33+
message("Missing bootloader.file, not creating bootloader burn target ${BOOTLOADER_TARGET}.")
4734
return()
48-
endif ()
35+
endif()
4936

5037
# build bootloader.path from bootloader.file...
51-
string(REGEX MATCH "(.+/)*" ${BOARD_ID}.bootloader.path ${${BOARD_ID}.bootloader.file})
52-
string(REGEX REPLACE "/" "" ${BOARD_ID}.bootloader.path ${${BOARD_ID}.bootloader.path})
38+
string(REGEX MATCH "(.+/)*" BOOTLOADER_PATH ${BOOTLOADER_FILE})
39+
string(REGEX REPLACE "/" "" BOOTLOADER_PATH ${BOOTLOADER_PATH})
5340
# and fix bootloader.file
54-
string(REGEX MATCH "/.(.+)$" ${BOARD_ID}.bootloader.file ${${BOARD_ID}.bootloader.file})
55-
string(REGEX REPLACE "/" "" ${BOARD_ID}.bootloader.file ${${BOARD_ID}.bootloader.file})
56-
57-
foreach (ITEM unlock_bits high_fuses low_fuses path file)
58-
if (NOT ${BOARD_ID}.bootloader.${ITEM})
59-
# Try the 'menu' settings of the Arduino 1.6 SDK
60-
if (NOT ${BOARD_ID}.menu.cpu.{BOARD_MCU}.bootloader.${ITEM})
61-
message("Missing ${BOARD_ID}.bootloader.${ITEM}, not creating bootloader burn target ${BOOTLOADER_TARGET}.")
62-
return()
63-
endif ()
64-
endif ()
65-
endforeach ()
41+
string(REGEX MATCH "/.(.+)$" BOOTLOADER_FILE_NAME ${BOOTLOADER_FILE})
42+
string(REGEX REPLACE "/" "" BOOTLOADER_FILE_NAME ${BOOTLOADER_FILE_NAME})
6643

67-
if (NOT EXISTS "${ARDUINO_BOOTLOADERS_PATH}/${${BOARD_ID}.bootloader.path}/${${BOARD_ID}.bootloader.file}")
68-
message("${ARDUINO_BOOTLOADERS_PATH}/${${BOARD_ID}.bootloader.path}/${${BOARD_ID}.bootloader.file}")
69-
message("Missing bootloader image, not creating bootloader burn target ${BOOTLOADER_TARGET}.")
44+
if (NOT EXISTS "${ARDUINO_BOOTLOADERS_PATH}/${BOOTLOADER_PATH}/${BOOTLOADER_FILE_NAME}")
45+
message("Missing bootloader image '${ARDUINO_BOOTLOADERS_PATH}/${BOOTLOADER_PATH}/${BOOTLOADER_FILE_NAME}', not creating bootloader burn target ${BOOTLOADER_TARGET}.")
7046
return()
7147
endif ()
7248

49+
#check for required bootloader parameters
50+
foreach (ITEM lock_bits unlock_bits high_fuses low_fuses)
51+
#do not make fatal error if field doesn't exists, just don't create bootloader burn target
52+
_get_board_property_if_exists(${BOARD_ID} bootloader.${ITEM} BOOTLOADER_${ITEM})
53+
if (NOT BOOTLOADER_${ITEM})
54+
message("Missing bootloader.${ITEM}, not creating bootloader burn target ${BOOTLOADER_TARGET}.")
55+
return()
56+
endif ()
57+
endforeach ()
58+
7359
# Erase the chip
7460
list(APPEND AVRDUDE_ARGS "-e")
7561

7662
# Set unlock bits and fuses (because chip is going to be erased)
77-
78-
if (${BOARD_ID}.bootloader.unlock_bits)
79-
list(APPEND AVRDUDE_ARGS "-Ulock:w:${${BOARD_ID}.bootloader.unlock_bits}:m")
80-
else ()
81-
# Arduino 1.6 SDK
82-
list(APPEND AVRDUDE_ARGS
83-
"-Ulock:w:${${BOARD_ID}.menu.cpu.${BOARD_MCU}.bootloader.unlock_bits}:m")
84-
endif ()
85-
86-
if (${BOARD_ID}.bootloader.extended_fuses)
87-
list(APPEND AVRDUDE_ARGS "-Uefuse:w:${${BOARD_ID}.bootloader.extended_fuses}:m")
88-
elseif (${${BOARD_ID}.menu.cpu.${BOARD_MCU}.bootloader.extended_fuses})
89-
list(APPEND AVRDUDE_ARGS
90-
"-Uefuse:w:${${BOARD_ID}.menu.cpu.${BOARD_MCU}.bootloader.extended_fuses}:m")
91-
endif ()
92-
if (${BOARD_ID}.bootloader.high_fuses)
93-
list(APPEND AVRDUDE_ARGS
94-
"-Uhfuse:w:${${BOARD_ID}.bootloader.high_fuses}:m"
95-
"-Ulfuse:w:${${BOARD_ID}.bootloader.low_fuses}:m")
96-
else ()
97-
list(APPEND AVRDUDE_ARGS
98-
"-Uhfuse:w:${${BOARD_ID}.menu.cpu.${BOARD_MCU}.bootloader.high_fuses}:m"
99-
"-Ulfuse:w:${${BOARD_ID}.menu.cpu.${BOARD_MCU}.bootloader.low_fuses}:m")
100-
endif ()
101-
102-
# Set bootloader image
103-
list(APPEND AVRDUDE_ARGS "-Uflash:w:${${BOARD_ID}.bootloader.file}:i")
104-
105-
# Set lockbits
106-
if (${BOARD_ID}.bootloader.lock_bits)
107-
list(APPEND AVRDUDE_ARGS "-Ulock:w:${${BOARD_ID}.bootloader.lock_bits}:m")
108-
else ()
109-
list(APPEND AVRDUDE_ARGS
110-
"-Ulock:w:${${BOARD_ID}.menu.cpu.${BOARD_MCU}.bootloader.lock_bits}:m")
111-
endif ()
112-
63+
list(APPEND AVRDUDE_ARGS "-Ulock:w:${BOOTLOADER_unlock_bits}:m")
64+
# extended fuses is optional
65+
_get_board_property_if_exists(${BOARD_ID} bootloader.extended_fuses BOOTLOADER_extended_fuses)
66+
if (BOOTLOADER_extended_fuses)
67+
list(APPEND AVRDUDE_ARGS "-Uefuse:w:${BOOTLOADER_extended_fuses}:m")
68+
endif()
69+
70+
list(APPEND AVRDUDE_ARGS
71+
"-Uhfuse:w:${BOOTLOADER_high_fuses}:m"
72+
"-Ulfuse:w:${BOOTLOADER_low_fuses}:m"
73+
"-Uflash:w:${BOOTLOADER_FILE_NAME}:i"
74+
"-Ulock:w:${BOOTLOADER_lock_bits}:m")
11375

11476
# Create burn bootloader target
11577
add_custom_target(${BOOTLOADER_TARGET}
11678
${ARDUINO_AVRDUDE_PROGRAM}
11779
${AVRDUDE_ARGS}
118-
WORKING_DIRECTORY ${ARDUINO_BOOTLOADERS_PATH}/${${BOARD_ID}.bootloader.path}
80+
WORKING_DIRECTORY ${ARDUINO_BOOTLOADERS_PATH}/${BOOTLOADER_PATH}
11981
DEPENDS ${TARGET_NAME})
12082
endfunction()

cmake/Platform/Core/Targets/ArduinoFirmwareTargetCreator.cmake

+3-3
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,12 @@ function(create_arduino_firmware_target TARGET_NAME BOARD_ID ALL_SRCS ALL_LIBS
4949
${TARGET_PATH}.hex
5050
COMMENT "Generating HEX image"
5151
VERBATIM)
52-
52+
_get_board_property(${BOARD_ID} build.mcu MCU)
5353
# Display target size
5454
add_custom_command(TARGET ${TARGET_NAME} POST_BUILD
5555
COMMAND ${CMAKE_COMMAND}
5656
ARGS -DFIRMWARE_IMAGE=${TARGET_PATH}.elf
57-
-DMCU=${${BOARD_ID}.build.mcu}
57+
-DMCU=${MCU}
5858
-DEEPROM_IMAGE=${TARGET_PATH}.eep
5959
-P ${ARDUINO_SIZE_SCRIPT}
6060
COMMENT "Calculating image size"
@@ -64,7 +64,7 @@ function(create_arduino_firmware_target TARGET_NAME BOARD_ID ALL_SRCS ALL_LIBS
6464
add_custom_target(${TARGET_NAME}-size
6565
COMMAND ${CMAKE_COMMAND}
6666
-DFIRMWARE_IMAGE=${TARGET_PATH}.elf
67-
-DMCU=${${BOARD_ID}.build.mcu}
67+
-DMCU=${MCU}
6868
-DEEPROM_IMAGE=${TARGET_PATH}.eep
6969
-P ${ARDUINO_SIZE_SCRIPT}
7070
DEPENDS ${TARGET_NAME}

cmake/Platform/Core/Targets/ArduinoProgrammerArgumentsBuilder.cmake

+2-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ function(build_arduino_programmer_arguments BOARD_ID PROGRAMMER TARGET_NAME PORT
4646
list(APPEND AVRDUDE_ARGS "-i${${PROGRAMMER}.delay}") # Set delay
4747
endif ()
4848

49-
list(APPEND AVRDUDE_ARGS "-p${${BOARD_ID}.build.mcu}") # MCU Type
49+
_get_board_property(${BOARD_ID} build.mcu MCU)
50+
list(APPEND AVRDUDE_ARGS "-p${MCU}") # MCU Type
5051

5152
list(APPEND AVRDUDE_ARGS ${AVRDUDE_FLAGS})
5253

0 commit comments

Comments
 (0)