Skip to content

Commit fed397c

Browse files
author
mean
committed
add ARDUINO_LD_SCRIPT var to override linker script
1 parent c5c8088 commit fed397c

File tree

3 files changed

+19
-8
lines changed

3 files changed

+19
-8
lines changed

Platform/Core/Targets/ArduinoFirmwareTargetCreatorStm32.cmake

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,22 +56,26 @@ function(create_arduino_firmware_target TARGET_NAME BOARD_ID ALL_SRCS ALL_LIBS
5656
# let's hardcode to bootloader for now
5757
#dump_all()
5858
# Check for blackMagic
59-
IF(ARDUINO_UPLOAD_METHOD MATCHES "BMP")
59+
IF(NOT DEFINED ARDUINO_LD_SCRIPT)
60+
IF(ARDUINO_UPLOAD_METHOD MATCHES "BMP")
6061
IF(NOT DEFINED ARDUINO_LD_FILE)
6162
SET(BOOTLOADER_LINK_OPT "-T${RUNTIME_FILES_PATH}/ld/jtag_c8.ld ") # Hack
6263
ELSE(NOT DEFINED ARDUINO_LD_FILE)
6364
SET(BOOTLOADER_LINK_OPT "-T${RUNTIME_FILES_PATH}/ld/${ARDUINO_LD_FILE}.ld ") # Hack
6465
ENDIF(NOT DEFINED ARDUINO_LD_FILE)
66+
ELSE()
67+
if( DEFINED ${BOARD_ID}.menu.cpu.DFUUploadMethod.build.ldscript )
68+
SET(BOOTLOADER_LINK_OPT "-T${RUNTIME_FILES_PATH}/${${BOARD_ID}.menu.cpu.DFUUploadMethod.build.ldscript} ") # Hack
69+
else( DEFINED ${BOARD_ID}.menu.cpu.DFUUploadMethod.build.ldscript )
70+
SET(BOOTLOADER_LINK_OPT "-T${RUNTIME_FILES_PATH}/${${BOARD_ID}.menu.cpu.bootloader20.build.ldscript} ") # Hack
71+
endif( DEFINED ${BOARD_ID}.menu.cpu.DFUUploadMethod.build.ldscript )
72+
ENDIF()
73+
SET(BOOTLOADER_LINK_OPT "${BOOTLOADER_LINK_OPT} -L${RUNTIME_FILES_PATH}/ld") # Hack
6574
ELSE()
66-
if( DEFINED ${BOARD_ID}.menu.cpu.DFUUploadMethod.build.ldscript )
67-
SET(BOOTLOADER_LINK_OPT "-T${RUNTIME_FILES_PATH}/${${BOARD_ID}.menu.cpu.DFUUploadMethod.build.ldscript} ") # Hack
68-
else( DEFINED ${BOARD_ID}.menu.cpu.DFUUploadMethod.build.ldscript )
69-
SET(BOOTLOADER_LINK_OPT "-T${RUNTIME_FILES_PATH}/${${BOARD_ID}.menu.cpu.bootloader20.build.ldscript} ") # Hack
70-
endif( DEFINED ${BOARD_ID}.menu.cpu.DFUUploadMethod.build.ldscript )
75+
SET(BOOTLOADER_LINK_OPT "${ARDUINO_LD_SCRIPT} ")
7176
ENDIF()
7277

73-
SET(BOOTLOADER_LINK_OPT "${BOOTLOADER_LINK_OPT} -L${RUNTIME_FILES_PATH}/ld") # Hack
74-
MESSAGE(STATUS "Bootloader : <${BOOTLOADER_LINK_OPT}>")
78+
MESSAGE(STATUS "Bootloader : <${BOOTLOADER_LINK_OPT}> , ARDUINO_LD_SCRIPT=${ARDUINO_LD_SCRIPT}")
7579
SET(MAP_OPT "-Wl,-Map,${TARGET_NAME}.map")
7680

7781
#

README.stm32

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Some settings :
2+
3+
ARDUINO_MCU_FLAGS : To override the default (i.e. -mcpu=cortex-m3 -march=armv6xx)
4+
ARDUINO_LD_SCRIPT : To override the linker file

select_mcu_stm32.cmake

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ IF(USE_GD32F103)
1313
set(X_ARDUINO_CPU GD32F103C8)
1414
ADD_DEFINITIONS("-DHIGH_SPEED_ADC")
1515
SET(X_ARDUINO_UPLOAD_METHOD BMP) # Use blackmagic link, if you comment it out you'll use DFU => 8kB flash
16+
SET(ARDUINO_LD_SCRIPT "-T${CMAKE_CURRENT_SOURCE_DIR}/ldScript/GD32F1/gd32f1.ld -L${CMAKE_CURRENT_SOURCE_DIR}/ldScript/common ")
1617
ELSEIF(USE_GD32F303)
1718
SET(EXTENSION "GD32F303")
1819
set(X_ARDUINO_DEFAULT_BOARD genericGD32F303C) # Default Board ID, when not specified
@@ -21,10 +22,12 @@ ELSEIF(USE_GD32F303)
2122
SET(ARDUINO_MCU_FLAGS " -mcpu=cortex-m4 -mfloat-abi=softfp -march=armv7 -mthumb")# -mfpu=fpv4-sp-d16")
2223
ADD_DEFINITIONS("-DHIGH_SPEED_ADC")
2324
SET(X_ARDUINO_UPLOAD_METHOD BMP) # Use blackmagic link, if you comment it out you'll use DFU => 8kB flash
25+
SET(ARDUINO_LD_SCRIPT "-T${CMAKE_CURRENT_SOURCE_DIR}/ldScript/GD32F3/gd32f3.ld -L${CMAKE_CURRENT_SOURCE_DIR}/ldScript/common ")
2426
ELSE()
2527
SET(EXTENSION "STM32F103")
2628
set(X_ARDUINO_LD_FILE jtag) # Use that instead of default jtag-c8 to get the full 128 kB
2729
set(X_ARDUINO_DEFAULT_BOARD genericSTM32F103C) # Default Board ID, when not specified
2830
set(X_ARDUINO_CPU STM32F103C8)
2931
SET(X_ARDUINO_UPLOAD_METHOD BMP) # Use blackmagic link, if you comment it out you'll use DFU => 8kB flash
32+
SET(ARDUINO_LD_SCRIPT "-T${CMAKE_CURRENT_SOURCE_DIR}/ldScript/STM32F1/stm32f1.ld -L${CMAKE_CURRENT_SOURCE_DIR}/ldScript/common ")
3033
ENDIF(USE_GD32F103)

0 commit comments

Comments
 (0)