RAMPS 1.4 Marlin Firmware FAIL

I’m unsure if I just suck juevos when it comes to software, or if god just hates me and likes to make jokes at my expense. Either way, I come to test your patience with me once again, you fine V1 folks.

I am pretty sure that I followed the instructions at Marlin Firmware - V1 Engineering Documentation to a tee. But, I have failed at lesser tasks in my lifetime. This is all relevant to the preconfigured V13DP firmware that I downloaded from the github (V13DP_Ramps_MK8-2.0.7.2-src)

Here is the error message that I get when I attempt to load the firmware onto my RAMPS sandwich:

Arduino: 1.8.13 (Windows Store 1.8.42.0) (Windows 10), Board: “Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)”

c:\program files\windowsapps\arduinollc.arduinoide_1.8.42.0_x86__mdqgnx93n4wtt\hardware\tools\avr\bin../lib/gcc/avr/7.3.0/…/…/…/…/avr/bin/ar.exe: unable to rename ‘core\core.a’; reason: File exists

exit status 1

Error compiling for board Arduino Mega or Mega 2560.

avr-gcc: error: CreateProcess: No such file or directory

exit status 1

Error compiling for board Arduino Mega or Mega 2560.

According to the internets (both of them, I think), I should be doing this in VS Code. But I don’t quite trust the rest of the world like I do you guys when it comes to my V1 gadgetry. If you can’t tell by now, I am absolutely as clueless as they come to this sort of thing. PLZ HALP!!1!

Hmmm. I thought we fixed that. This is a problem in windows, in arduino, with the large amount of files in the HAL folders. I thought I fixed it by removing a bunch of files for each build. But you might try moving the whole folder into a smaller named folder, like the root of C:. If it is in C:\some long filename\Marlin, it might still give you that error.

But.

Switching to platformio (which also has instructions in the doc) or switching away from windows will also fix it.

Man, thank you so much. I overlooked the PlatformIO documentation and fought with the arduino IDE to the point where I almost threw this entire build out the window (btw, I tried putting the whole folder to C:/ and attempted to compile again in Arduino IDE, but I got the same error).

But lo and behold, it turns out that all I had to do was follow some pretty simple instructions. Now I just wish that I had seen the PlatformIO document sooner!

Thanks again.

Oh, that is a bummer. I don’t have windows to test it. I was hoping we could get away with it for a while. I reported this to Marlin and the response (not from the main people, mind you) was to switch to pio.

Interestingly I have had mixed success with PlatformIO. I managed to get a few builds compiled and uploaded to board but for reasons not clear to me and on an apparently random basis the firmware would not compile even when I had made no changes to it.

I did have some success clearing some of the build folders when it was being stubborn but did not seen to be a satisfactory fix. I expect that because platformio is more dynamic/real-time links to libraries / Git then it is vulnerable to changes outside of my immediate environment.

At the moment I have now been successfully compiling on Arduino IDE but with the firmware Marlin folder stored on the root directory of an (SDCard). My main reason for using an SDCard was so I could take it out and tape it on to the machine for future use when I settle on a set of configurations that work for me (my electronic filing system leaves a little to be desired!!) but maybe having Marlin in the root directory helps a little.

Would be keen to return to PlatformIO if I can get it to be more reliable for me.

The taped SD card is a good idea. I hadn’t thought of that. Although I would also make a backup, because I somehow always destroy micro sd cards.

pio does go get dependencies and updates them occasionally. If there are breaking changes (some library 1.2 works but 1.3 doesn’t) they can freeze a dependency (so force it to be <1.3). It is pulling in a lot of tools, so it does have some extra fragility, but on the plus side, you don’t have to have the issues with grabbing the wrong dependency manually, because it will grab one for you.

1 Like