Marlin: [BUG] Error compiling SKR PRO 1.1 (fix: needs standalone SW Serial library for the STM32)

Created on 10 Sep 2019  路  14Comments  路  Source: MarlinFirmware/Marlin

Marlin.zip

Good Morning

I'm trying to compile latest release downloaded today 9 Sep for an SKR Pro 1.1 and a set of TMC2209 but I'm having fail as follows: (attached config files)

In file included from Marlin\src\module\stepper\trinamic.h:35:0,
                 from Marlin\src\module\stepper\trinamic.cpp:32:
Marlin\src\module\stepper\../../feature/tmc_util.h: In instantiation of 'TMCMarlin<TMC2209Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID>::TMCMarlin(uint16_t, uint16_t, float, uint8_t, bool) [with char AXIS_LETTER = 'X'; char DRIVER_ID = '0'; AxisEnum AXIS_ID = (AxisEnum)0; uint16_t = short unsigned int; uint8_t = unsigned char]':
Marlin\src\module\stepper\trinamic.cpp:203:7:   required from here
Marlin\src\module\stepper\../../feature/tmc_util.h:213:38: error: no matching function for call to 'TMC2209Stepper::TMC2209Stepper(const uint16_t&, const uint16_t&, const float&, const uint8_t&)'
       TMC2209Stepper(RX, TX, RS, addr)
                                      ^
In file included from Marlin\src\module\stepper\trinamic.h:29:0,
                 from Marlin\src\module\stepper\trinamic.cpp:32:
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:993:3: note: candidate: TMC2209Stepper::TMC2209Stepper(Stream*, float, uint8_t)
   TMC2209Stepper(Stream * SerialPort, float RS, uint8_t addr) :
   ^~~~~~~~~~~~~~
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:993:3: note:   candidate expects 3 arguments, 4 provided
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:991:7: note: candidate: constexpr TMC2209Stepper::TMC2209Stepper(const TMC2209Stepper&)
Compiling .pio\build\BIGTREE_SKR_PRO\src\src\sd\SdBaseFile.cpp.o
 class TMC2209Stepper : public TMC2208Stepper {
       ^~~~~~~~~~~~~~
Compiling .pio\build\BIGTREE_SKR_PRO\src\src\sd\SdFatUtil.cpp.o
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:991:7: note:   candidate expects 1 argument, 4 provided
Compiling .pio\build\BIGTREE_SKR_PRO\src\src\sd\SdFile.cpp.o
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:991:7: note: candidate: constexpr TMC2209Stepper::TMC2209Stepper(TMC2209Stepper&&)
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:991:7: note:   candidate expects 1 argument, 4 provided
In file included from Marlin\src\module\stepper\trinamic.h:35:0,
                 from Marlin\src\module\stepper\trinamic.cpp:32:
Marlin\src\module\stepper\../../feature/tmc_util.h: In instantiation of 'TMCMarlin<TMC2209Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID>::TMCMarlin(uint16_t, uint16_t, float, uint8_t, bool) [with char AXIS_LETTER = 'Y'; char DRIVER_ID = '0'; AxisEnum AXIS_ID = (AxisEnum)1; uint16_t = short unsigned int; uint8_t = unsigned char]':
Marlin\src\module\stepper\trinamic.cpp:217:7:   required from here
Marlin\src\module\stepper\../../feature/tmc_util.h:213:38: error: no matching function for call to 'TMC2209Stepper::TMC2209Stepper(const uint16_t&, const uint16_t&, const float&, const uint8_t&)'
       TMC2209Stepper(RX, TX, RS, addr)
                                      ^
In file included from Marlin\src\module\stepper\trinamic.h:29:0,
                 from Marlin\src\module\stepper\trinamic.cpp:32:
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:993:3: note: candidate: TMC2209Stepper::TMC2209Stepper(Stream*, float, uint8_t)
   TMC2209Stepper(Stream * SerialPort, float RS, uint8_t addr) :
   ^~~~~~~~~~~~~~
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:993:3: note:   candidate expects 3 arguments, 4 provided
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:991:7: note: candidate: constexpr TMC2209Stepper::TMC2209Stepper(const TMC2209Stepper&)
 class TMC2209Stepper : public TMC2208Stepper {
Compiling .pio\build\BIGTREE_SKR_PRO\src\src\sd\SdVolume.cpp.o
       ^~~~~~~~~~~~~~
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:991:7: note:   candidate expects 1 argument, 4 provided  
Compiling .pio\build\BIGTREE_SKR_PRO\src\src\sd\cardreader.cpp.o
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:991:7: note: candidate: constexpr TMC2209Stepper::TMC2209Stepper(TMC2209Stepper&&)
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:991:7: note:   candidate expects 1 argument, 4 provided
In file included from Marlin\src\module\stepper\trinamic.h:35:0,
                 from Marlin\src\module\stepper\trinamic.cpp:32:
Marlin\src\module\stepper\../../feature/tmc_util.h: In instantiation of 'TMCMarlin<TMC2209Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID>::TMCMarlin(uint16_t, uint16_t, float, uint8_t, bool) [with char AXIS_LETTER = 'Z'; char DRIVER_ID = '0'; AxisEnum AXIS_ID = (AxisEnum)2; uint16_t = short unsigned int; uint8_t = unsigned char]':
MCompiling .pio\build\BIGTREE_SKR_PRO\src\src\sd\usb_flashdrive\Sd2Card_FlashDrive.cpp.o
arlin\src\module\stepper\trinamic.cpp:231:7:   required from here
Marlin\src\module\stepper\../../feature/tmc_util.h:213:38: error: no matching function for call to 'TMC2209Stepper::TMC2209Stepper(const uint16_t&, const uint16_t&, const float&, const uint8_t&)'
       TMC2209Stepper(RX, TX, RS, addr)
                                      ^
In file included from Marlin\src\module\stepper\trinamic.h:29:0,
                 from Marlin\src\module\stepper\trinamic.cpp:32:
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:993:3: note: candidate: TMC2209Stepper::TMC2209Stepper(Stream*, float, uint8_t)
   TMC2209Stepper(Stream * SerialPort, float RS, uint8_t addr) :
   ^~~~~~~~~~~~~~
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:993:3: note:   candidate expects 3 arguments, 4 provided 
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:991:7: note: candidate: constexpr TMC2209Stepper::TMC2209Stepper(const TMC2209Stepper&)
 class TMC2209Stepper : public TMC2208Stepper {
       ^~~~~~~~~~~~~~
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:991:7: note:   candidate expects 1 argument, 4 provided
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:991:7: note: candidate: constexpr TMC2209Stepper::TMC2209Stepper(TMC2209Stepper&&)
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:991:7: note:   candidate expects 1 argument, 4 provided
In file included from Marlin\src\module\stepper\trinamic.h:35:0,
                 from Marlin\src\module\stepper\trinamic.cpp:32:
Marlin\src\module\stepper\../../feature/tmc_util.h: In instantiation of 'TMCMarlin<TMC2209Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID>::TMCMarlin(uint16_t, uint16_t, float, uint8_t, bool) [with char AXIS_LETTER = 'Z'; char DRIVER_ID = '2'; AxisEnum AXIS_ID = (AxisEnum)2; uint16_t = short unsigned int; uint8_t = unsigned char]':
Marlin\src\module\stepper\trinamic.cpp:238:7:   required from here
Marlin\src\module\stepper\../../feature/tmc_util.h:213:38: error: no matching function for call to 'TMC2209Stepper::TMC2209Stepper(const uint16_t&, const uint16_t&, const float&, const uint8_t&)'
       TMC2209Stepper(RX, TX, RS, addr)
                                      ^
In file included from Marlin\src\module\stepper\trinamic.h:29:0,
                 from Marlin\src\module\stepper\trinamic.cpp:32:
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:993:3: note: candidate: TMC2209Stepper::TMC2209Stepper(Stream*, float, uint8_t)
   TMC2209Stepper(Stream * SerialPort, float RS, uint8_t addr) :
   ^~~~~~~~~~~~~~
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:993:3: note:   candidate expects 3 arguments, 4 provided 
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:991:7: note: candidate: constexpr TMC2209Stepper::TMC2209Stepper(const TMC2209Stepper&)
 class TMC2209Stepper : public TMC2208Stepper {
       ^~~~~~~~~~~~~~
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:991:7: note:   candidate expects 1 argument, 4 provided  
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:991:7: note: candidate: constexpr TMC2209Stepper::TMC2209Stepper(TMC2209Stepper&&)
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:991:7: note:   candidate expects 1 argument, 4 provided
In file included from Marlin\src\module\stepper\trinamic.h:35:0,
                 from Marlin\src\module\stepper\trinamic.cpp:32:
Marlin\src\module\stepper\../../feature/tmc_util.h: In instantiation of 'TMCMarlin<TMC2209Stepper, AXIS_LETTER, DRIVER_ID, AXIS_ID>::TMCMarlin(uint16_t, uint16_t, float, uint8_t, bool) [with char AXIS_LETTER = 'E'; char DRIVER_ID = '0'; AxisEnum AXIS_ID = (AxisEnum)3; uint16_t = short unsigned int; uint8_t = unsigned char]':
Marlin\src\module\stepper\trinamic.cpp:252:7:   required from here
Marlin\src\module\stepper\../../feature/tmc_util.h:213:38: error: no matching function for call to 'TMC2209Stepper::TMC2209Stepper(const uint16_t&, const uint16_t&, const float&, const uint8_t&)'
       TMC2209Stepper(RX, TX, RS, addr)
                                      ^
In file included from Marlin\src\module\stepper\trinamic.h:29:0,
                 from Marlin\src\module\stepper\trinamic.cpp:32:
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:993:3: note: candidate: TMC2209Stepper::TMC2209Stepper(Stream*, float, uint8_t)
   TMC2209Stepper(Stream * SerialPort, float RS, uint8_t addr) :
   ^~~~~~~~~~~~~~
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:993:3: note:   candidate expects 3 arguments, 4 provided 
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:991:7: note: candidate: constexpr TMC2209Stepper::TMC2209Stepper(const TMC2209Stepper&)
 class TMC2209Stepper : public TMC2208Stepper {
       ^~~~~~~~~~~~~~
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:991:7: note:   candidate expects 1 argument, 4 provided  
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:991:7: note: candidate: constexpr TMC2209Stepper::TMC2209Stepper(TMC2209Stepper&&)
C:\Users\davidcgu\.platformio\lib\TMCStepper_ID5513\src/TMCStepper.h:991:7: note:   candidate expects 1 argument, 4 provided
*** [.pio\build\BIGTREE_SKR_PRO\src\src\module\stepper\trinamic.cpp.o] Error 1
=============================================== [FAILED] Took 314.12 seconds ===============================================

I have no clue where the issue could be coming from. Any advice is welcome.

Best regards

STM32 Build / Toolchain Work

Most helpful comment

The software serial is on its way for the (used with the PRO) official ST-kernel. Either https://github.com/stm32duino/Arduino_Core_STM32/pull/627 or https://github.com/stm32duino/Arduino_Core_STM32/pull/645 will find its way.

All 14 comments

I have been working on this for several days, only to be thwarted by my lack of education.
This seems to be the only thing that works, and it has problems

image

You may need to clear out
C:\Users\RudolfBenner.platformio\.cache
and
C:\Users\RudolfBenner\Documents\GitHub\Marlin\.pio
when the frustration factor rolls in.

I have been working on this for several days, only to be thwarted by my lack of education.
This seems to be the only thing that works, and it has problems

image

As best as I can determine, TMCStepper 0.4.6 is the problem. It was supposedly fixed
You may need to clear out
C:\Users\RudolfBenner.platformio.cache
and
C:\Users\RudolfBenner\Documents\GitHub\Marlin.pio
when the frustration factor rolls in.

Thanks Ruddy, that worked for me too. That means is some bug with the official TMC library.

Regards

Theorically this is expected to be corrected on next official TMC library release 0.4.6... so as soon as it merges could be back to normal and won't need to use BTT library, from other side even if BTT merges another one that does not work you have already defined to use only 0.4.5, so no affection.

I you see on original ini was telling to use any version below 1.0.0 but you configured to be = to 0.4.5.

Regards

Yes, I was trying very hard to hook 0.4.5 but my efforts were lacking. Perhaps someone can bring me up to speed how to do this without having to get it from BTT, where the highest version is 0.4.5.
I compared the 0.4.5 files, they are identical and they ultimately originate from the same address.

As per error returned the problem is not the address, at certain point it receives arguments than expected what causes the error during compiling... need to go deeper on library to investigate but I think it does not worth for me the efford.

See: candidate expects 3 arguments, 4 provided

Regards

It's not a bug and will not be addressed in the next release.
The SKR Pro is an STM32 based board and the STM32 framework does not include a software serial library.
Neither do I want to add the library directly into TMCStepper because I most definitely do not want to then have to maintain it.
So this will not change until BTT or FYSETC or Marlin or whoever makes a standalone SW Serial library for the STM32 platform that I can then list as a dependency for PIO.

The software serial is on its way for the (used with the PRO) official ST-kernel. Either https://github.com/stm32duino/Arduino_Core_STM32/pull/627 or https://github.com/stm32duino/Arduino_Core_STM32/pull/645 will find its way.

See: candidate expects 3 arguments, 4 provided

Try telling platformio.ini to grab the "master" branch of TMCStepper and not the release version because sometimes the latest TMCStepper changes have not been given a version number yet.

See: candidate expects 3 arguments, 4 provided

Try telling platformio.ini to grab the "master" branch of TMCStepper and not the release version because sometimes the latest TMCStepper changes have not been given a version number yet.

Taking bigtreetech it compiles, how should do exactly to take "master" branch of TMCStepper? I will test.

Thanks in advance

Try telling platformio.ini to grab the "master" branch of TMCStepper and not the release version because sometimes the latest TMCStepper changes have not been given a version number yet.

I tried this. It didn't work for me, either because it wasn't compiling with C++2017, or there was no SoftwareSerial.h available. Based on the tooltips from VS Code and the comments above, I think it was probably both.

When using a PRO, for now you need BTTs version of TMCStepper. Not for some subtle version differences, but because of the added software UART for F1/F4.

https://github.com/stm32duino/Arduino_Core_STM32/pull/645 just got merged so STM32 core now has SoftwareSerial implementation.

too early to restore platformio.ini yet. tried to compile several times. no go.

I just had the same error - failure to compile due to the missing software serial library.
I fixed it by using the following steps:

  1. Downloaded the zip file from https://github.com/bigtreetech/TMCStepper
  2. Located the Marlin-bugfix-2.0.x_SKR-PRO.pio\libdeps\BIGTREE_SKR_PROTMCStepper_ID5513 folder
  3. Replaced the contents of this folder with the equivalent contents from the bigtreetech zipfile

There are probably more efficient ways but I couldn't find them and this one worked for me.

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.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

W8KDB picture W8KDB  路  4Comments

modem7 picture modem7  路  3Comments

Bobsta6 picture Bobsta6  路  3Comments

StefanBruens picture StefanBruens  路  4Comments

Glod76 picture Glod76  路  3Comments