Skip to content

Commit aa85262

Browse files
author
mean
committed
2 parents 1ab045f + 57ca78f commit aa85262

16 files changed

+154
-106
lines changed

ArduinoToolchain.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ set(CMAKE_SYSTEM_NAME Arduino)
2828
IF(NOT DEFINED ARDUINO_CMAKE_TOP_FOLDER)
2929

3030
if (EXISTS ${CMAKE_CURRENT_LIST_DIR}/Platform/Arduino.cmake)
31-
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_LIST_DIR})
31+
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_LIST_DIR} CACHE INTERNAL "")
3232
endif ()
3333
SET(ARDUINO_CMAKE_TOP_FOLDER ${CMAKE_CURRENT_LIST_DIR} CACHE INTERNAL "")
3434
ENDIF(NOT DEFINED ARDUINO_CMAKE_TOP_FOLDER)
@@ -95,7 +95,7 @@ elseif ((NOT ARDUINO_SDK_PATH) AND (DEFINED ENV{_ARDUINO_CMAKE_WORKAROUND_ARDUIN
9595
set(ARDUINO_SDK_PATH "$ENV{_ARDUINO_CMAKE_WORKAROUND_ARDUINO_SDK_PATH}")
9696
endif ()
9797

98-
MESSAGE(STATUS "Architecture is ${PLATFORM_ARCHITECTURE}")
98+
MESSAGE(STATUS "Architecture is ${PLATFORM_ARCHITECTURE}, System is ${CMAKE_SYSTEM_NAME}")
9999
STRING(TOUPPER "${PLATFORM_ARCHITECTURE}" upper_arch)
100100
IF("${upper_arch}" MATCHES "STM32.*" )
101101
SET(PLATFORM_ARCHITECTURE_POSTFIX "Stm32")

ArduinoToolchainEsp32.cmake

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ ENDIF(NOT PLATFORM_TOOLCHAIN_PATH)
1515

1616

1717
LIST(APPEND CMAKE_SYSTEM_PREFIX_PATH "${PLATFORM_TOOLCHAIN_PATH}")
18-
SET(ESP32_TOOLCHAIN_PREFIX xtensa-esp32-elf-)
18+
SET(ESP32_TOOLCHAIN_PREFIX xtensa-esp32-elf- CACHE INTERNAL "")
1919

2020
FUNCTION(FATAL_BANNER msg)
2121
MESSAGE(STATUS "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")
@@ -31,6 +31,7 @@ IF(NOT EXISTS "${PLATFORM_TOOLCHAIN_PATH}/${ESP32_TOOLCHAIN_PREFIX}gcc")
3131
FATAL_BANNER( "!! PLATFORM_TOOLCHAIN_PATH does not point to a valid toolchain (arm-none-eabi-gcc....)!! (${PLATFORM_TOOLCHAIN_PATH})")
3232
ENDIF()
3333
#
34+
dump_all()
3435
#
3536
SET(CMAKE_C_COMPILER_ID "GNU" CACHE INTERNAL "")
3637
SET(CMAKE_CXX_COMPILER_ID "GNU" CACHE INTERNAL "")

ArduinoToolchainStm32.cmake

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,13 @@ FUNCTION(FATAL_BANNER msg)
2424
MESSAGE(FATAL_ERROR "${msg}")
2525
ENDFUNCTION(FATAL_BANNER msg)
2626

27+
IF(WIN32)
28+
SET(TOOLCHAIN_SUFFIX ".exe")
29+
ENDIF(WIN32)
2730
#
2831
# Sanity check
2932
#
30-
IF(NOT EXISTS "${PLATFORM_TOOLCHAIN_PATH}/${STM32_TOOLCHAIN_PREFIX}gcc")
33+
IF(NOT EXISTS "${PLATFORM_TOOLCHAIN_PATH}/${STM32_TOOLCHAIN_PREFIX}gcc${TOOLCHAIN_SUFFIX}")
3134
FATAL_BANNER( "!! PLATFORM_TOOLCHAIN_PATH does not point to a valid toolchain (arm-none-eabi-gcc....)!! (${PLATFORM_TOOLCHAIN_PATH})")
3235
ENDIF()
3336
#
@@ -41,9 +44,9 @@ ENDIF()
4144
SET(CMAKE_C_COMPILER_ID "GNU" CACHE INTERNAL "")
4245
SET(CMAKE_CXX_COMPILER_ID "GNU" CACHE INTERNAL "")
4346
#
44-
set(CMAKE_C_COMPILER ${PLATFORM_TOOLCHAIN_PATH}/${STM32_TOOLCHAIN_PREFIX}gcc CACHE PATH "" FORCE)
45-
set(CMAKE_ASM_COMPILER ${PLATFORM_TOOLCHAIN_PATH}/${STM32_TOOLCHAIN_PREFIX}gcc CACHE PATH "" FORCE)
46-
set(CMAKE_CXX_COMPILER ${PLATFORM_TOOLCHAIN_PATH}/${STM32_TOOLCHAIN_PREFIX}g++ CACHE PATH "" FORCE)
47+
set(CMAKE_C_COMPILER ${PLATFORM_TOOLCHAIN_PATH}/${STM32_TOOLCHAIN_PREFIX}gcc${TOOLCHAIN_SUFFIX} CACHE PATH "" FORCE)
48+
set(CMAKE_ASM_COMPILER ${PLATFORM_TOOLCHAIN_PATH}/${STM32_TOOLCHAIN_PREFIX}gcc${TOOLCHAIN_SUFFIX} CACHE PATH "" FORCE)
49+
set(CMAKE_CXX_COMPILER ${PLATFORM_TOOLCHAIN_PATH}/${STM32_TOOLCHAIN_PREFIX}g++${TOOLCHAIN_SUFFIX} CACHE PATH "" FORCE)
4750
#set(CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_CXX_COMPILER> <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
4851
# There is probably a cleaner way to do this....
4952
set(CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_CXX_COMPILER> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> -lgcc -mthumb -Wl,--start-group <OBJECTS> <LINK_LIBRARIES> -Wl,--end-group -o <TARGET> ")

Platform/Core/BoardFlags/CompilerFlagsSetterEsp32.cmake

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,20 @@ MACRO(ADD_TO_COMPILE_FLAGS key prefix)
4545
endif( DEFINED ${BOARD_ID}.${key})
4646
ENDMACRO(ADD_TO_COMPILE_FLAGS key prefix)
4747
#
48-
SET(ESP32_SYSTEM_ROOT "/home/fx/Arduino/hardware/espressif/esp32/")
48+
SET(ESP32_SYSTEM_ROOT "${PLATFORM_PATH}")
4949
#
5050
#
51+
MACRO(ADD_RELATIVE_IPATH ipath)
52+
set(COMPILE_FLAGS "${COMPILE_FLAGS} -I${ESP32_SYSTEM_ROOT}/${ipath}") # Hack, there is a better way to get the system path
53+
ENDMACRO(ADD_RELATIVE_IPATH ipath)
5154
MACRO(ADD_IPATH path)
52-
set(COMPILE_FLAGS "${COMPILE_FLAGS} -I${ESP32_SYSTEM_ROOT}/tools/sdk/include/${path}") # Hack, there is a better way to get the system path
55+
ADD_RELATIVE_IPATH(tools/sdk/include/${path})
5356
ENDMACRO(ADD_IPATH path)
5457
#
5558
#
59+
ADD_RELATIVE_IPATH(libraries/SPI/src/)
60+
ADD_RELATIVE_IPATH(libraries/FS/src/)
61+
ADD_RELATIVE_IPATH(libraries/SPIFFS/src/)
5662
ADD_IPATH(config)
5763
ADD_IPATH(app_trace)
5864
ADD_IPATH(app_update)

Platform/Core/BoardFlags/CompilerFlagsSetterStm32.cmake

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ ELSE(TRY_CPU_FLAGS)
88
_get_board_property(${BOARD_ID} build.cpu_flags CPU_FLAGS)
99
ENDIF(TRY_CPU_FLAGS)
1010

11-
set(COMPILE_FLAGS "-DF_CPU=${FCPU} ${CPU_FLAGS} -DARDUINO=${NORMALIZED_SDK_VERSION} ")
11+
# dont set the mcu speed, it is done elsewhere
12+
# set(COMPILE_FLAGS "-DF_CPU=${FCPU} ${CPU_FLAGS} -DARDUINO=${NORMALIZED_SDK_VERSION} ")
13+
set(COMPILE_FLAGS " ${CPU_FLAGS} -DARDUINO=${NORMALIZED_SDK_VERSION} ")
1214
# This should be derived from the arduino config files
1315
# hardcode them for the moment
1416

@@ -51,7 +53,8 @@ set(COMPILE_FLAGS "${COMPILE_FLAGS} ${STM32_SYSTEM_ROOT}/libmaple/include/libmap
5153
set(COMPILE_FLAGS "${COMPILE_FLAGS} ${STM32_SYSTEM_ROOT}/libmaple/usb/usb_lib/\" ") # Hack
5254
set(COMPILE_FLAGS "${COMPILE_FLAGS} ${STM32_SYSTEM_ROOT}/libmaple/usb/stm32f1/\" ") # Hack
5355
set(COMPILE_FLAGS "${COMPILE_FLAGS} ${STM32_SYSTEM_ROOT}/libmaple/stm32f1/include/\" ")
54-
56+
set(COMPILE_FLAGS "${COMPILE_FLAGS} ${STM32_SYSTEM_ROOT}/../libraries/SPI/src/\" ")
57+
5558
ADD_TO_COMPILE_FLAGS(build.vect "")
5659
ADD_TO_COMPILE_FLAGS(menu.cpu.${ARDUINO_UPLOAD_METHOD}Method.build.vect "")
5760

Platform/Core/BoardFlags/LinkerFlagsSetterStm32.cmake

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
# ToDo: Comment
22
function(set_board_linker_flags LINKER_FLAGS BOARD_ID IS_MANUAL)
33

4-
set(LINK_FLAGS "${LINK_FLAGS} -Os -Wl,--gc-sections -mcpu=cortex-m3")
4+
set(LINK_FLAGS "${LINK_FLAGS} -Os -Wl,--gc-sections -mcpu=cortex-m3 -Xlinker -print-memory-usage ")
55
set(LINK_FLAGS "${LINK_FLAGS} -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -lstdc++")
66
IF(ARDUINO_USE_NEWLIB) # smaller
7-
set(LINK_FLAGS "${LINK_FLAGS} --specs=nano.specs -u _printf_float")
7+
set(LINK_FLAGS "${LINK_FLAGS} --specs=nano.specs") # -u _printf_float")
8+
IF(ARDUINO_USE_FLOAT_PRINTF)
9+
set(LINK_FLAGS "${LINK_FLAGS} -u _printf_float")
10+
ENDIF(ARDUINO_USE_FLOAT_PRINTF)
811
ENDIF(ARDUINO_USE_NEWLIB) # smaller
912

1013
#-Wl,--warn-unresolved-symbols -lstdc++")

Platform/Core/Targets/ArduinoBootloaderUploadTargetCreatorEsp32.cmake

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -17,29 +17,9 @@
1717
#
1818
#=============================================================================#
1919
function(create_arduino_bootloader_upload_target TARGET_NAME BOARD_ID PORT AVRDUDE_FLAGS)
20-
IF(FALSE)
2120
set(UPLOAD_TARGET ${TARGET_NAME}-upload)
22-
set(AVRDUDE_ARGS)
23-
24-
build_arduino_bootloader_arguments(${BOARD_ID} ${TARGET_NAME} ${PORT} "${AVRDUDE_FLAGS}" AVRDUDE_ARGS)
25-
if (NOT EXECUTABLE_OUTPUT_PATH)
26-
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR})
27-
endif ()
28-
set(TARGET_PATH ${EXECUTABLE_OUTPUT_PATH}/${TARGET_NAME})
29-
30-
IF(ARDUINO_USB_PID)
31-
SET(USB_PID "${ARDUINO_USB_PID}")
32-
ELSE(ARDUINO_USB_PID)
33-
SET(USB_PID "0004") # Default value
34-
ENDIF(ARDUINO_USB_PID)
35-
IF(NOT DEFINED(MAPLE_UPLOAD))
36-
SET(MAPLE_UPLOAD ${ORIGINAL_PLATFORM_PATH}/tools/linux/maple_upload CACHE INTERNAL "")
37-
ENDIF(NOT DEFINED(MAPLE_UPLOAD))
38-
3921
add_custom_target(${UPLOAD_TARGET}
40-
${MAPLE_UPLOAD}
41-
${PORT} 2 1EAF:${USB_PID}
42-
${TARGET_PATH}.bin
22+
${PLATFORM_PATH}/tools/esptool/esptool.py --chip esp32 --port "/dev/${ARDUINO_DEFAULT_PORT}" --baud ${ESP32_USB_UPLOAD_SPEED} --before default_reset --after hard_reset write_flash -z --flash_mode ${ESP32_FLASH_MODE} --flash_freq ${ESP32_FLASH_SPEED} --flash_size detect 0xe000 "${PLATFORM_PATH}/tools/partitions/boot_app0.bin" 0x1000 "${PLATFORM_PATH}/tools/sdk/bin/bootloader_${ESP32_FLASH_MODE_BOOTLOADER}_${ESP32_FLASH_SPEED}.bin" 0x10000 ${TARGET_NAME}.img.bin 0x8000 "${TARGET_NAME}.partitions.bin"
4323
DEPENDS ${TARGET_NAME})
4424

4525
# Global upload target
@@ -48,5 +28,4 @@ function(create_arduino_bootloader_upload_target TARGET_NAME BOARD_ID PORT AVRDU
4828
endif ()
4929

5030
add_dependencies(upload ${UPLOAD_TARGET})
51-
ENDIF(FALSE)
5231
endfunction()

Platform/Core/Targets/ArduinoFirmwareTargetCreatorEsp32.cmake

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,29 @@ function(create_arduino_firmware_target TARGET_NAME BOARD_ID ALL_SRCS ALL_LIBS
4747
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR})
4848
endif ()
4949

50-
dump_all()
50+
#dump_all()
5151

5252
# Display target size
5353
# add_custom_command(TARGET ${TARGET_NAME} POST_BUILD
5454
#COMMAND ${PLATFORM_TOOLCHAIN_PATH}/${ESP32_TOOLCHAIN_PREFIX}size
5555
#ARGS -A=${TARGET_NAME}.elf
5656
#COMMENT "Calculating image size"
5757
#VERBATIM)
58+
add_custom_command(TARGET ${TARGET_NAME} POST_BUILD
59+
COMMAND cp ${PLATFORM_PATH}//tools/partitions/default.csv partitions.csv
60+
COMMENT "Copying partitions bin scheme"
61+
VERBATIM)
5862

63+
64+
65+
add_custom_command(TARGET ${TARGET_NAME} POST_BUILD
66+
COMMAND python ${PLATFORM_PATH}/tools/gen_esp32part.py --flash-size ${ESP32_FLASH_SIZE}MB -q partitions.csv ${TARGET_NAME}.partitions.bin
67+
COMMENT "Generating partitions bin image"
68+
VERBATIM)
69+
70+
add_custom_command(TARGET ${TARGET_NAME} POST_BUILD
71+
COMMAND python ${PLATFORM_PATH}/tools/esptool/esptool.py --chip esp32 elf2image --flash_mode ${ESP32_FLASH_MODE} --flash_freq ${ESP32_FLASH_SPEED} --flash_size ${ESP32_FLASH_SIZE}MB -o ${TARGET_NAME}.img.bin ${TARGET_NAME}.elf
72+
COMMENT "Generating bin image"
73+
VERBATIM)
5974

6075
endfunction()

Platform/Core/Targets/ArduinoFirmwareTargetCreatorStm32.cmake

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,21 @@ function(create_arduino_firmware_target TARGET_NAME BOARD_ID ALL_SRCS ALL_LIBS
5454

5555
# depending on the upload method we use different ld script
5656
# let's hardcode to bootloader for now
57-
if( DEFINED ${BOARD_ID}.menu.cpu.DFUUploadMethod.build.ldscript )
58-
SET(BOOTLOADER_LINK_OPT "-T${RUNTIME_FILES_PATH}/${${BOARD_ID}.menu.cpu.DFUUploadMethod.build.ldscript} ") # Hack
59-
else( DEFINED ${BOARD_ID}.menu.cpu.DFUUploadMethod.build.ldscript )
60-
SET(BOOTLOADER_LINK_OPT "-T${RUNTIME_FILES_PATH}/${${BOARD_ID}.menu.cpu.bootloader20.build.ldscript} ") # Hack
61-
endif( DEFINED ${BOARD_ID}.menu.cpu.DFUUploadMethod.build.ldscript )
57+
#dump_all()
58+
# Check for blackMagic
59+
IF(ARDUINO_UPLOAD_METHOD MATCHES "BMP")
60+
IF(NOT DEFINED ARDUINO_LD_FILE)
61+
SET(BOOTLOADER_LINK_OPT "-T${RUNTIME_FILES_PATH}/ld/jtag_c8.ld ") # Hack
62+
ELSE(NOT DEFINED ARDUINO_LD_FILE)
63+
SET(BOOTLOADER_LINK_OPT "-T${RUNTIME_FILES_PATH}/ld/${ARDUINO_LD_FILE}.ld ") # Hack
64+
ENDIF(NOT DEFINED ARDUINO_LD_FILE)
65+
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 )
71+
ENDIF()
6272

6373
SET(BOOTLOADER_LINK_OPT "${BOOTLOADER_LINK_OPT} -L${RUNTIME_FILES_PATH}/ld") # Hack
6474
MESSAGE(STATUS "Bootloader : <${BOOTLOADER_LINK_OPT}>")
@@ -124,14 +134,14 @@ function(create_arduino_firmware_target TARGET_NAME BOARD_ID ALL_SRCS ALL_LIBS
124134
VERBATIM)
125135
#_get_board_property(${BOARD_ID} build.mcu MCU)
126136
# Display target size
127-
add_custom_command(TARGET ${TARGET_NAME} POST_BUILD
128-
COMMAND ${CMAKE_COMMAND}
129-
ARGS -DFIRMWARE_IMAGE=${TARGET_NAME}.elf
130-
-DMCU=atmega1280
137+
#add_custom_command(TARGET ${TARGET_NAME} POST_BUILD
138+
#COMMAND ${CMAKE_COMMAND}
139+
#ARGS -DFIRMWARE_IMAGE=${TARGET_NAME}.elf
140+
#-DMCU=atmega1280
131141
#-DEEPROM_IMAGE=${TARGET_PATH}.eep
132-
-P ${ARDUINO_SIZE_SCRIPT}
133-
COMMENT "Calculating image size"
134-
VERBATIM)
142+
#-P ${ARDUINO_SIZE_SCRIPT}
143+
#COMMENT "Calculating image size"
144+
#VERBATIM)
135145

136146

137147
endfunction()

Platform/Generation/ArduinoLibraryGenerator.cmake

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# see documentation at README
55
#=============================================================================#
66
function(generate_arduino_library INPUT_NAME)
7-
message(STATUS "Generating ${INPUT_NAME}")
7+
message(STATUS "Generating Library ${INPUT_NAME}")
88
parse_generator_arguments(${INPUT_NAME} INPUT
99
"NO_AUTOLIBS;MANUAL" # Options
1010
"BOARD;BOARD_CPU" # One Value Keywords
@@ -27,29 +27,21 @@ function(generate_arduino_library INPUT_NAME)
2727
set(ALL_LIBS)
2828
set(ALL_SRCS ${INPUT_SRCS} ${INPUT_HDRS})
2929

30-
if (NOT INPUT_MANUAL)
31-
make_core_library(CORE_LIB ${BOARD_ID})
32-
endif ()
3330

3431
find_arduino_libraries(TARGET_LIBS "${ALL_SRCS}" "")
3532
set(LIB_DEP_INCLUDES)
3633
foreach (LIB_DEP ${TARGET_LIBS})
37-
set(LIB_DEP_INCLUDES "${LIB_DEP_INCLUDES} -I\"${LIB_DEP}\"")
34+
LIST(APPEND LIB_DEP_INCLUDES ${LIB_DEP})
3835
endforeach ()
3936

40-
if (NOT ${INPUT_NO_AUTOLIBS})
41-
make_arduino_libraries(ALL_LIBS ${BOARD_ID} "" "${LIB_DEP_INCLUDES}" "")
42-
endif ()
43-
4437
list(APPEND ALL_LIBS ${CORE_LIB} ${INPUT_LIBS})
4538

4639
add_library(${INPUT_NAME} ${ALL_SRCS})
4740

4841
set_board_flags(ARDUINO_COMPILE_FLAGS ARDUINO_LINK_FLAGS ${BOARD_ID} ${INPUT_MANUAL})
4942

50-
set_target_properties(${INPUT_NAME} PROPERTIES
51-
COMPILE_FLAGS "${ARDUINO_COMPILE_FLAGS} ${COMPILE_FLAGS} ${LIB_DEP_INCLUDES}"
52-
LINK_FLAGS "${ARDUINO_LINK_FLAGS} ${LINK_FLAGS}")
53-
54-
target_link_libraries(${INPUT_NAME} ${ALL_LIBS} "-lc -lm")
43+
separate_arguments(my_ARDUINO_COMPILE_FLAGS UNIX_COMMAND "${ARDUINO_COMPILE_FLAGS}")
44+
target_compile_options( ${INPUT_NAME} PRIVATE ${my_ARDUINO_COMPILE_FLAGS} )
45+
target_compile_options( ${INPUT_NAME} PRIVATE ${COMPILE_FLAGS} )
46+
target_include_directories(${INPUT_NAME} PUBLIC ${LIB_DEP_INCLUDES})
5547
endfunction()

Platform/Initialization/DefaultCFlagsStm32.cmake

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,12 @@ ENDIF(NOT DEFINED ARDUINO_UPLOAD_METHOD)
77

88
IF(NOT DEFINED ARDUINO_CFLAGS_SET)
99
SET(DEFINED ARDUINO_CFLAGS_SET 1)
10+
IF(NOT DEFINED MCU_SPEED )
11+
SET(MCU_SPEED 72000000L)
12+
ENDIF(NOT DEFINED MCU_SPEED )
13+
1014
SET(ARDUINO_DEFAULT_CFLAGS " -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -w -mcpu=cortex-m3 -mthumb -g ")
11-
SET(ARDUINO_DEFAULT_CFLAGS " ${ARDUINO_DEFAULT_CFLAGS} -DF_CPU=72000000L -DARDUINO_ARCH_STM32F1 -DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG ")
15+
SET(ARDUINO_DEFAULT_CFLAGS " ${ARDUINO_DEFAULT_CFLAGS} -DGENERIC_BOOTLOADER -DF_CPU=${MCU_SPEED}L -DARDUINO_ARCH_STM32F1 -DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG ")
1216
#SET(ARDUINO_DEFAULT_CFLAGS " ${ARDUINO_DEFAULT_CFLAGS} -DF_CPU=72000000L -DARDUINO_ARCH_STM32F1 ")
1317

1418
SET(ARDUINO_DEFAULT_CXXFLAGS "${ARDUINO_DEFAULT_CFLAGS} -fno-rtti -fno-exceptions -std=gnu++11 -Werror=return-type")

README.rst

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,33 @@
1+
This is a fork of the original arduino-cmake project, but targetted at STM32duino and ESP32duino (WIP for ESP32)
12

23

3-
(it's easy to extend to others)
4+
**STM32 Installation :**
45

5-
Installation :
6-
7-
- Install a toolchain. Simplest is to use the arduino ide and install either SAM Board (32 bits ARM Cortex M3) or or STM32 cores by ST
8-
. The ST one is significantly more recent. Write down the path to the arm-none-eabi-gcc and friends
6+
- Install a toolchain. I'd recommand using the arduino-stm32 toolchain available here https://github.com/stm32duino/arm-none-eabi-gcc . The code is about 50% smaller.
97

108
- Install the Arduino STM32 files from here (https://github.com/rogerclarkmelbourne/Arduino_STM32). Either put the files in ARDUINO_SDK/harwdare/arduino or anywhere else you want.
11-
That last folder *must* be named arduino (i.e. /foo/bar/arduino/STM32F1 /foo/bar/arduino/drivers...)
12-
13-
- Be sure you have a STLINKv2 clone and that you know how to reflash the bootloader
14-
(i.e. cd /opt/arduino-1.8.5/hardware/STM32/arduino/tools/linux64/stlink && ./st-flash write ~/Arduino_stm32/STM32duino-bootloader/binaries/generic_boot20_pc13.bin 0x8000000)
15-
16-
- Copy the example/stm32 content somewhere so that you have
17-
Cmakelists.txt
18-
Hello.ino
19-
cmake/ (symlink to the cmake subfolder of arduino-cmake, or just copy it)
20-
21-
- Change the cmakelists.txt and use paths you noted before (toolchain & arduino STM32 file in the example)
22-
9+
Note down the full path to the STM32 F1 folder
10+
- Be sure you have a STLINKv2 clone and that you know how to reflash the bootloader. (i.e. cd /opt/arduino-1.8.5/hardware/STM32/arduino/tools/linux64/stlink && ./st-flash write ~/Arduino_stm32/STM32duino-bootloader/binaries/generic_boot20_pc13.bin 0x8000000)
11+
12+
- Copy the example/stm32 content somewhere so that you have a structure like
13+
| Cmakelists.txt
14+
| Hello.ino
15+
| cmake/ (symlink to the cmake subfolder of arduino-cmake-stm32, or just copy it)
16+
17+
- Change the cmakelists.txt and use paths you noted before (toolchain & arduino STM32 file in the example)
18+
e.g.
19+
| # TOOLCHAIN |
20+
| SET(PLATFORM_TOOLCHAIN_PATH "/home/fx/Arduino_stm32/arm-none-eabi-gcc/download/gcc-arm-none-eabi-8.2.1-1.7/bin") |
21+
| # STM32Duino, point to the STM32F1 subfolder |
22+
| SET(PLATFORM_PATH "/home/fx/Arduino/hardware/stm32/STM32F1")
23+
2324
- cmake .. && make
2425

2526
You now have the elf & bin files that you can upload manually
2627

27-
/opt/arduino-1.8.5/hardware/Arduino_STM32-master/tools/linux/maple_upload ttyACM0 2 1EAF:0003 the_file.bin
28+
/opt/arduino-1.8.5/hardware/Arduino_STM32-master/tools/linux/maple_upload ttyACM0 2 1EAF:0003 the_file.bin
2829

2930
1EAF:0003 is the usb id, it can change a bit, mine is 1eaf:0004, lsusb will tell you what you have
3031

3132
Important:
32-
- Normally, the compatibility is kept for avr boards too. So you can use the same cmake setup for both AVR and STM32 boards.
3333
- Tested only on linux, might not work well on OsX and Windows

example/esp32/Blink.ino

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/*
2+
Blink
3+
4+
Turns an LED on for one second, then off for one second, repeatedly.
5+
6+
Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
7+
it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
8+
the correct LED pin independent of which board is used.
9+
If you want to know what pin the on-board LED is connected to on your Arduino
10+
model, check the Technical Specs of your board at:
11+
https://www.arduino.cc/en/Main/Products
12+
13+
modified 8 May 2014
14+
by Scott Fitzgerald
15+
modified 2 Sep 2016
16+
by Arturo Guadalupi
17+
modified 8 Sep 2016
18+
by Colby Newman
19+
20+
This example code is in the public domain.
21+
22+
http://www.arduino.cc/en/Tutorial/Blink
23+
*/
24+
#define LED_BUILTIN 2
25+
// the setup function runs once when you press reset or power the board
26+
void setup() {
27+
// initialize digital pin LED_BUILTIN as an output.
28+
pinMode(LED_BUILTIN, OUTPUT);
29+
}
30+
31+
// the loop function runs over and over again forever
32+
void loop() {
33+
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
34+
delay(1000); // wait for a second
35+
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
36+
delay(1000); // wait for a second
37+
}

0 commit comments

Comments
 (0)