Firmware FAQ

From RepRap
Revision as of 12:23, 5 June 2010 by Jmarsden (talk | contribs) (Errors with Compiling: Added missing main.cpp issue)
Jump to: navigation, search

If you have a question answered, you should post what it was and how you fixed it here.


General FAQ

MotherBoard FAQ

Arduino displays "Programmer Not Responding"

There are a number of problems that cause this, but the most predominant is mis-timed resetting. On the Sanguino-derived gen-3 motherboard, you need to press the reset button in order to upload the firmware to it. This can be tricky, because not all computers are equal and may compile the firmware in different spans of time. You want to press reset as soon as you see the "Binary sketch size: X bytes (of a X byte maximum)" message. If the error continues, check your cables.


Serious "WTF" errors

Anything that has no obvious answer.

Errors with Compiling

When the compiler in the Arduino software fails before even uploading anything, you have a compiler error.

Motherboard Firmware

.../crtm644p.o:(init9+0x0): undefined reference to `main'

When compiling firware for Sanguino (Atmel 644P), this is often caused by the lack of the main.cpp file in the sanguino core directory.

Fix: Copy the main.cpp file from the arduino core directory to the sanguino core directory.

  • See the Sanguino won't compile thread in the RepRap forums.
  • This file seems to be included in the current Sanguino-0018r1_1_4.zip file, so this fix is probably only needed for those with earlier copies of the Sanguino processor definition files.

Extruder Firmware

"o: In function `__vector_11': multiple definition (...)"

Known for Arduino 0018, all OSs. This is an issue with the servo library included in the Arduino environment. A fix may be had by removing the offending sections of servo.cpp. When the error appears, there should be text highlighted in the Arduino window. This is a function that is not needed, so perform some ninja C++ and remove it. You may do this by deletion or the more elegant (yet kludge) "#if 0 {function} #endif" method. Either way, you should remove the entire function such that none of it runs. Like so:

#if 0
blah blah blah (Function Name)
{
blah blah blah (Function Content)
}
#endif

Example available here http://pastebin.com/VqFrSKqD Originally Submitted by Ben_R.