MarlinFirmware / Marlin

Marlin is an optimized firmware for RepRap 3D printers based on the Arduino platform. Many commercial 3D printers come with Marlin installed. Check with your vendor if you need source code for your specific machine.
https://marlinfw.org
GNU General Public License v3.0
16.13k stars 19.2k forks source link

[BUG] SPI Redefinition errors #19354

Closed DexterHill0 closed 3 years ago

DexterHill0 commented 3 years ago

Bug Description

In the SPI.cpp file there are a few redefinition errors being thrown as well as two others errors. This is the second compilation of Marlin I have done. The first was successful. I then went on to enable NEOPIXEL leds and I started to get some error. I reverted back to a version without NEOPIXEL but I am continuing to get the errors.

My Configurations

configs.zip

Steps to Reproduce

N/A

Additional Information

I am compiling for the SKR MINI E3 V1.2

Since I was having many issues before, I totally reinstalled VSCode and platformio. I then also used some the pre-made configs and then made more changes to them. This time I also installed Marlin Auto Build. The full log is here:

Log

``` platformio run -e STM32F103RC_btt_512K ; echo "done" >/var/folders/nv/3rvpqg7n2h37snbb2cf6pf280000gq/T/ipc The default interactive shell is now zsh. To update your account to use zsh, please run `chsh -s /bin/zsh`. For more details, please visit https://support.apple.com/kb/HT208050. iMac-269:Marlin-2.0.x 2 everyone$ platformio run -e STM32F103RC_btt_512K ; echo "done" >/var/folders/nv/3rvpqg7n2h37snbb2cf6pf280000gq/T/ipc *************************************************************************************************************************************************************************************************************************************************** Obsolete PIO Core v5.0.1a1 is used (previous was 5.0.1) Please remove multiple PIO Cores from a system: https://docs.platformio.org/page/faq.html#multiple-platformio-cores-in-a-system *************************************************************************************************************************************************************************************************************************************************** Processing STM32F103RC_btt_512K (platform: ststm32@~6.1.0; board: genericSTM32F103RC; framework: arduino) --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Verbose mode can be enabled via `-v, --verbose` option CONFIGURATION: https://docs.platformio.org/page/boards/ststm32/genericSTM32F103RC.html PLATFORM: ST STM32 (6.1.1) > STM32F103RC (48k RAM. 256k Flash) HARDWARE: STM32F103RCT6 72MHz, 48KB RAM, 512KB Flash DEBUG: Current (blackmagic) External (blackmagic, jlink, stlink) PACKAGES: - framework-arduinoststm32-maple 2.10000.200103 (1.0.0) - tool-stm32duino 1.0.1 - toolchain-gccarmnoneeabi 1.70201.0 (7.2.1) Converting Marlin.ino LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf LDF Modes: Finder ~ chain, Compatibility ~ soft Found 32 compatible libraries Scanning dependencies... Dependency Graph |-- 1.0.0 |-- 0.7.1 | |-- 1.0 | |-- 1.0.0 |-- 0.4.1 | |-- 1.0 | |-- 1.0 |-- 1.0 |-- 1.0 |-- |-- 0.91 |-- 1.0 |-- |-- 1.1.2 Building in release mode Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduinoVariant/board.cpp.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduinoVariant/wirish/boards.cpp.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduinoVariant/wirish/boards_setup.cpp.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduinoVariant/wirish/start.S.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduinoVariant/wirish/start_c.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduinoVariant/wirish/syscalls.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/HardwareSerial.cpp.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/HardwareTimer.cpp.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/IPAddress.cpp.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/Print.cpp.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/Stream.cpp.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/WString.cpp.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/avr/dtostrf.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/cxxabi-compat.cpp.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/ext_interrupts.cpp.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/hooks.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/itoa.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/adc.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/adc_f1.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/bkp_f1.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/dac.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/dma.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/dma_f1.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/exc.S.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/exti.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/exti_f1.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/flash.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/fsmc_f1.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/gpio.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/gpio_f1.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/i2c.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/i2c_f1.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/iwdg.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/nvic.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/pwr.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/rcc.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/rcc_f1.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/spi.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/spi_f1.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/stm32f1/performance/isrs.S.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/stm32f1/performance/vector_table.S.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/systick.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/timer.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/timer_f1.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/usart.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/usart_f1.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/usart_private.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/usb/stm32f1/usb.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/usb/stm32f1/usb_cdcacm.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/usb/stm32f1/usb_reg_map.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/usb/usb_lib/usb_core.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/usb/usb_lib/usb_init.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/usb/usb_lib/usb_mem.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/usb/usb_lib/usb_regs.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/libmaple/util.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/main.cpp.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/new.cpp.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/pwm.cpp.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/sdio.cpp.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/stm32f1/util_hooks.c.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/stm32f1/wiring_pulse_f1.cpp.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/stm32f1/wirish_debug.cpp.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/stm32f1/wirish_digital_f1.cpp.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/tone.cpp.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/usb_serial.cpp.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/wirish_analog.cpp.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/wirish_digital.cpp.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/wirish_math.cpp.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/wirish_shift.cpp.o Compiling .pio/build/STM32F103RC_btt_512K/FrameworkArduino/wirish_time.cpp.o Compiling .pio/build/STM32F103RC_btt_512K/src/src/HAL/STM32F1/HAL.cpp.o Compiling .pio/build/STM32F103RC_btt_512K/src/src/HAL/STM32F1/HAL_SPI.cpp.o Compiling .pio/build/STM32F103RC_btt_512K/src/src/HAL/STM32F1/SPI.cpp.o Compiling .pio/build/STM32F103RC_btt_512K/src/src/HAL/STM32F1/Servo.cpp.o Marlin/src/HAL/STM32F1/SPI.cpp:82:16: error: redefinition of 'void* _spi1_this' static void *_spi1_this; ^~~~~~~~~~ In file included from Marlin/src/HAL/STM32F1/SPI.cpp:34:0: /Users/everyone/.platformio/packages/framework-arduinoststm32-maple/STM32F1/libraries/SPI/src/SPI.h:165:15: note: 'void* _spi1_this' previously declared here static void (*_spi1_this); ^~~~~~~~~~ Marlin/src/HAL/STM32F1/SPI.cpp:85:16: error: redefinition of 'void* _spi2_this' static void *_spi2_this; ^~~~~~~~~~ In file included from Marlin/src/HAL/STM32F1/SPI.cpp:34:0: /Users/everyone/.platformio/packages/framework-arduinoststm32-maple/STM32F1/libraries/SPI/src/SPI.h:168:15: note: 'void* _spi2_this' previously declared here static void (*_spi2_this); ^~~~~~~~~~ Marlin/src/HAL/STM32F1/SPI.cpp:88:16: error: redefinition of 'void* _spi3_this' static void *_spi3_this; ^~~~~~~~~~ In file included from Marlin/src/HAL/STM32F1/SPI.cpp:34:0: /Users/everyone/.platformio/packages/framework-arduinoststm32-maple/STM32F1/libraries/SPI/src/SPI.h:171:15: note: 'void* _spi3_this' previously declared here static void (*_spi3_this); ^~~~~~~~~~ Marlin/src/HAL/STM32F1/SPI.cpp: In member function 'void SPIClass::end()': Marlin/src/HAL/STM32F1/SPI.cpp:181:3: error: 'waitSpiTxEnd' was not declared in this scope waitSpiTxEnd(_currentSetting->spi_d); ^~~~~~~~~~~~ Marlin/src/HAL/STM32F1/SPI.cpp: At global scope: Marlin/src/HAL/STM32F1/SPI.cpp:246:6: error: prototype for 'void SPIClass::beginTransaction(uint8_t, const SPISettings&)' does not match any in class 'SPIClass' void SPIClass::beginTransaction(uint8_t pin, const SPISettings &settings) { ^~~~~~~~ compilation terminated due to -fmax-errors=5. *** [.pio/build/STM32F103RC_btt_512K/src/src/HAL/STM32F1/SPI.cpp.o] Error 1 In file included from Marlin/src/HAL/STM32F1/HAL_SPI.cpp:36:0: /Users/everyone/.platformio/packages/framework-arduinoststm32-maple/STM32F1/libraries/SPI/src/SPI.h:171:15: warning: '_spi3_this' defined but not used [-Wunused-variable] static void (*_spi3_this); ^~~~~~~~~~ /Users/everyone/.platformio/packages/framework-arduinoststm32-maple/STM32F1/libraries/SPI/src/SPI.h:168:15: warning: '_spi2_this' defined but not used [-Wunused-variable] static void (*_spi2_this); ^~~~~~~~~~ /Users/everyone/.platformio/packages/framework-arduinoststm32-maple/STM32F1/libraries/SPI/src/SPI.h:165:15: warning: '_spi1_this' defined but not used [-Wunused-variable] static void (*_spi1_this); ^~~~~~~~~~ =========================================================================================================== [FAILED] Took 9.64 seconds =========================================================================================================== Environment Status Duration -------------------- -------- ------------ STM32F103RC_btt_512K FAILED 00:00:09.636 ====================================================================================================== 1 failed, 0 succeeded in 00:00:09.636 ====================================================================================================== iMac-269:Marlin-2.0.x 2 everyone$ ```

ellensp commented 3 years ago

This doesn't happen in current bugfix.

This is the result of the frameworks being updated, while running older code...

This should fix it.

In Platfmoio.ini you need the following (in particular "lib_ignore = SPI"

[common_stm32f1]
platform      = ststm32@~6.1
build_flags   = !python Marlin/src/HAL/STM32F1/build_flags.py
  ${common.build_flags} -std=gnu++14 -DHAVE_SW_SERIAL
build_unflags = -std=gnu11 -std=gnu++11
src_filter    = ${common.default_src_filter} +<src/HAL/STM32F1>
lib_ignore    = SPI
lib_deps      = ${common.lib_deps}
  SoftwareSerialM
DexterHill0 commented 3 years ago

To my surprise that hasn't fixed it. The lib ignore is already in the platformio file:

#
# HAL/STM32F1 Common Environment values
#
[common_stm32f1]
platform      = ${common_stm32.platform}
build_flags   = !python Marlin/src/HAL/STM32F1/build_flags.py
  ${common.build_flags} -std=gnu++14 -DHAVE_SW_SERIAL
build_unflags = -std=gnu11 -std=gnu++11
src_filter    = ${common.default_src_filter} +<src/HAL/STM32F1>
lib_ignore    = SPI
lib_deps      = ${common.lib_deps}
  SoftwareSerialM

This is the unedited file (the one in the zip). I also tried adding it to [common_stm32] but that hasn't fixed it. The only reason I am using outdated firmware is because (at least before reinstalling everything) it just didn't fully compile properly. The version now is the only one that has successfully compiled.

ellensp commented 3 years ago

you have a "lib_ignore =" in your [env:STM32F103RC_btt_512K] This removes the previously defined libs to ignore.

ellensp commented 3 years ago

Neopixels on that processor is extremely hit and miss.. Thus is was disabled with warning to not expect it to work. but ...

I have had others who have gotten it to work with this library in platformio.ini find line NEOPIXEL_LED = Adafruit NeoPixel@1.5.0 change to NEOPIXEL_LED = Adafruit NeoPixel=https://github.com/ellensp/Adafruit_NeoPixel But there are no guarantees!

ellensp commented 3 years ago

This Issue Queue is for Marlin bug reports and development-related issues, and we prefer not to handle user-support questions here. (As noted on this page.) For best results getting help with configuration and troubleshooting, please use the following resources:

After seeking help from the community, if the consensus points to a bug in Marlin, then you should post a bug report.

DexterHill0 commented 3 years ago

Removing the other lib_ignore has fixed it, so thanks you!

github-actions[bot] commented 3 years ago

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.