Forum: Mikrocontroller und Digitale Elektronik Marlin 2.0.72 lässt sich nicht compilieren


von Horst S. (h3aau)


Lesenswert?

moin,
ich wollte mal die neuste marlin auf einen 3d-drucker bringen.
leider bekomme ich haufenweise fehlermeldungen von type:
Error while detecting libraries included by 
D:\Temp\arduino_build_123770\sketch\src\gcode\sd\M30.cpp
die alte 2.0.x-bugfix geht einwandfrei.
arduino ist 1.8.13 auf w10.
hatt da einer mal einen tip dazu?
danke.

: Bearbeitet durch User
von Thomas (Gast)


Lesenswert?

welche CPU hat dein 3D Controller
2.x und höher ist eigentlich nur für 32 Bit

von Jan L. (ranzcopter)


Lesenswert?

Thomas schrieb:
> welche CPU hat dein 3D Controller
> 2.x und höher ist eigentlich nur für 32 Bit

das ist falsch; richtig ist, dass man für die 32-Bit-Versionen 
PlatformIO zum Compilieren benötigt.

von Joachim S. (oyo)


Lesenswert?

Thomas schrieb:
> welche CPU hat dein 3D Controller
> 2.x und höher ist eigentlich nur für 32 Bit

Soweit ich weiss, ist es leicht anders: 32 Bit-Controller werden erst ab 
2.0 unterstützt, aber die 8-Bit-AVRs funktionieren immer noch.

@Threadstarter. Wo Dein Problem liegt, weiss ich nicht, aber ich würde 
es an Deiner Stelle einfach mal mit platformio statt der ArduinoIDE 
versuchen.
Ich selbst habe die 2.0.7.2 jedenfalls gerade vor 2-3 Wochen völlig 
problemlos mit platformio kompiliert.

von Horst S. (h3aau)


Lesenswert?

moin,
es ist ein mks base v1.5 board also atmega 2560.

ich habe es erstmal mit einer alten 2.0.x gemacht, die geht.
einen teil habe ich hinbekommen. aber der z_min schalter, soll auf pin 
18 sein, ist nicht da.
hat zufällig jemand ein schaltbild dieses board? habe da leider nix 
gefunden.

von sid (Gast)


Lesenswert?

versuch mal ne ältere arduino IDE..
ich hab die ..72 auf (ich glaube*) 1.8.10 compiliert für mein 2560 
controllerboard (GT2560A+)
das ging problemlos.

'sid

*(meine mich zu erinnern dass das meine arduino ide version ist.. bin am 
falschen Rechner und kann nciht nachsehen grad)

von sid (Gast)


Lesenswert?

Horst S. schrieb:
> ich habe es erstmal mit einer alten 2.0.x gemacht, die geht.
> einen teil habe ich hinbekommen. aber der z_min schalter, soll auf pin
> 18 sein, ist nicht da.
> hat zufällig jemand ein schaltbild dieses board? habe da leider nix
> gefunden.

Äh D18 gell?

ich hab nur das von der v1.1 finden können
https://reprap.org/mediawiki/images/b/b7/MKS_BASE_PINS.pdf

glaub nicht, dass die das Pinout geändert haben um ehrlich zu sein,
aber beschwören wollt ich das nicht.

Bilder von v1.4
https://ae01.alicdn.com/kf/HTB1STMIKFXXXXc_aXXXq6xXFXXXL/MKS-Gen-V1-4-3D-Printer-Control-Board-Motherboard-of-MEGA2560-RAMPS-1-4-With-USB.jpg

sehen mir auch nach D18 aus

Im Zweifel entferne das board mal komplett vom Strom und allen Steckern 
und pieps den Endstop-Anschluss mal gegen den AVR durch, dann kannste 
den Pin identifizieren.

ich tippe aber eher auf fehlerhaften Endstop(schalter) um ehrlich zu 
sein.

'sid

von Horst S. (h3aau)


Lesenswert?

moin,
danke für die infos.
der endschalter Z_Min geht mit der alten firmware die auf dem board war.
der liegt wohl nur nicht auf pin 18 (PINS.H->RAMPS.H).
gibt es irgendwo eine liste die zeigt wie die virtuellen pinnamen 
(A1...,D1....) mit den tatsächlichen prozessorpins (PA01...,PB01..) 
verheiratet sind?
das mit der adruino version 1.8.0 werde ich mal testen.

: Bearbeitet durch User
von Johannes S. (Gast)


Lesenswert?

Horst S. schrieb:
> gibt es irgendwo eine liste die zeigt wie die virtuellen pinnamen
> (A1...,D1....) mit den tatsächlichen prozessorpins (PA01...,PB01..)
> verheiratet sind?

das ist im verwendeten Arduino core definiert, für Mega2560 z.B.
https://github.com/MCUdude/MegaCore/blob/master/avr/variants/100-pin-arduino-mega/pins_arduino.h

falls dieser verwendet wird.

von Joachim S. (oyo)


Lesenswert?

Horst S. schrieb:
> das mit der adruino version 1.8.0 werde ich mal testen.

Sofern das nicht nur ein Vertipper war, sondern Du Dich verlesen hast: 
Arduino 1.8.0 ist zu alt. "To build Marlin 2.0 you'll need Arduino IDE 
1.8.8 or newer or PlatformIO."

von Rene (Gast)


Lesenswert?

In den marlin sourcen sind in einem unterordner alle pins definiert für 
die verschiedenen board typen.

Kompilieren der neuen marlin stände geht nur noch einfach mit 
PlatformIO.

Ich nutze bei mir für den leveling sensor den filament runout pin vom 
zweiten extruder auf dem gt2560 board. Kann aber prinzipiell frei 
gewählt werden...

Rene

von Horst S. (h3aau)


Lesenswert?

moin,
so langsam wird ein schuh draus......
in der neuen firmware ist
#define SERIAL_PORT_2 1
das sind dann PD2 (RX1) pin 19 und PD3 (TX1) pin 18.
das sind aber auch Z_MIN und Z_MAX endschalter.
" ich dachte das der SERIAL_PORT_2 für das TFT28 verwendet wird.
ist wohl aber nicht so. aber wo hängt dann das TFT28 drann? "
denken schon mal ganz gut, aber docus finden und lesen deutlich besser.
es hängt am SPI.
also kann SERIAL_PORT_2 wieder weg und die z-endschalter sind wieder 
frei.

statt der 1.8.0 also die 1.8.8.

danke

: Bearbeitet durch User
von Horst S. (h3aau)


Lesenswert?

moin,
was ist besser an platformio im vergleich zu arduino?

von sid (Gast)


Lesenswert?

vorsicht: MEINUNG!

Horst S. schrieb:
> moin,
> was ist besser an platformio im vergleich zu arduino?
Für Dich als Endanwender GARNIX!

Für Entwickler ist platformIO nett da man für dieverse 
Prozessorstrukturen leichter anpassen kann.

Endanwender die platformio nutzen tun das gewöhnlich weil sie sich dann 
für "besser" halten als sie sind ;)

'sid

von Horst S. (h3aau)


Lesenswert?

top antwort :-)

von Jan L. (ranzcopter)


Lesenswert?

sid schrieb:
>> was ist besser an platformio im vergleich zu arduino?
> Für Dich als Endanwender GARNIX!

also zumindest für mich als "Endanwender": Ich kann in plattformio z.B. 
ohne Hampeleien bei jedem Projekt bestimmen, ob ich die jeweils "neueste 
Library im System" benutzen möchte, oder eine ganz bestimmte (bzw. immer 
die "heute aktuell gewesene").
Bei der Original-IDE ist es mir schon unzählige Male passiert, dass ein 
älteres Projekt nicht mehr kompiliert, weil es zwischendurch zig 
inkompatible Lib-Änderungen gab. Ja, geht auch "irgendwie" mit der 
Original-IDE, aber eher umständlich...

von Horst S. (h3aau)


Lesenswert?

moin,
mit der 1.8.8er gehts auch nicht.

von Cyblord -. (cyblord)


Lesenswert?

Jan L. schrieb:
> Bei der Original-IDE ist es mir schon unzählige Male passiert, dass ein
> älteres Projekt nicht mehr kompiliert, weil es zwischendurch zig
> inkompatible Lib-Änderungen gab. Ja, geht auch "irgendwie" mit der
> Original-IDE, aber eher umständlich...

Ist halt beides Pfusch.
Zu einem ernsthaften Projekt hat man alle Abhängigkeiten getrennt 
vorliegen. Z.B. in einem git repo.
Man KANN dann einfach diese Abhängigkeiten aktualisieren (und muss dann 
evt. Änderungen im Code vornehmen). Man MUSS aber nicht und das Projekt 
kompiliert auch nach 100 Jahren noch.

Man hat solche Abhängigkeiten nicht einfach in 3 Versionen (alt, mittel, 
neu) zentral liegen und irgendwelche Projekte hängen dann direkt davon 
ab.
Das ist halt Projektorganisation der Generation Arduino. Und dann 
wundern.

von Jan L. (ranzcopter)


Lesenswert?

Cyblord -. schrieb:
> Jan L. schrieb:
>> Bei der Original-IDE ist es mir schon unzählige Male passiert, dass ein
>> älteres Projekt nicht mehr kompiliert, weil es zwischendurch zig
>> inkompatible Lib-Änderungen gab. Ja, geht auch "irgendwie" mit der
>> Original-IDE, aber eher umständlich...
>
> Ist halt beides Pfusch.

inwiefern "beides"? Wenn ich in platformio LibXY angebe mit @5.6, dann 
compiliert das auch "in 100 Jahren noch". Und das ohne gleich mit 
GIT-Kanonen auf Projektspatzen geschossen zu haben.

> Zu einem ernsthaften Projekt hat man alle Abhängigkeiten getrennt

auch "nicht-ernsthafte" Projekte ärgern, wenn sich z.B. nach einem Jahr 
herausstellt, dass die Haloween-Kürbis-Schreck-Elektronik für die Kids 
nicht mehr compiliert :)

> vorliegen. Z.B. in einem git repo.
> Man KANN dann einfach diese Abhängigkeiten aktualisieren (und muss dann

wenn dann die "gegnerische" Lib auch im Git(hub) hängt, ok - ansonsten 
artet das dann leicht in "Arbeit" aus.

> Man hat solche Abhängigkeiten nicht einfach in 3 Versionen (alt, mittel,

?

> neu) zentral liegen und irgendwelche Projekte hängen dann direkt davon
> ab.
> Das ist halt Projektorganisation der Generation Arduino. Und dann
> wundern.

von Horst S. (h3aau)


Lesenswert?

mombi, popkorntüte holen..............

von sid (Gast)


Lesenswert?

Horst S. schrieb:
> mit der 1.8.8er gehts auch nicht.

Kannst Du mal deine configs anhängen,
dann guck ich ob ich das bei mir compiliert bekomme und kann Dir
ggf sagen was wann wo wie eingestellt ist.
(ich würd dir auch die hex anhängen wenn Du magst, kann aber deine 
config nicht kontrollieren macht von daher eher wenig Sinn mMn)

'sid

von Horst S. (h3aau)


Angehängte Dateien:

Lesenswert?

danke.

von Cyblord -. (cyblord)


Lesenswert?

Jan L. schrieb:
> wenn dann die "gegnerische" Lib auch im Git(hub) hängt, ok - ansonsten
> artet das dann leicht in "Arbeit" aus.

Tut es nicht. Denn abgeschlossene Projekte muss man nicht mehr updaten. 
Auch deren Abhängigkeiten nicht mehr.
Selbst bei aktiven Projekten muss man das meist nicht.
Man hat aber dadurch immer für jedes Projekt genau Die Abhängigkeiten 
die man damals erwartet hat und mit denen dort gearbeitet wurde.
Will man ein Projekt nach X Jahren nochmal kompilieren kommt man um so 
was gar nicht drum rum.

von sid (Gast)


Lesenswert?

Hmmm
ulkig..

Hi Horst.. ich hab ne saubere Kopie von 1.8.8 auf den Laptop geworfen
(hab leider deine Configs vergessen zu kopieren, hole ich nach wenn Du 
möchtest)
um sicherzugehen, dass ich keine versteckten libs shortcuts oder 
geänderten Einstellungen auf dem PC hab die helfen.

Kurz: 2.0.7.2 kompiliert!

Hier die Erklärung und 'einfache Lösung' zum 'nachmachen'

Das Problem ist, dass Marlin von mal zu mal aufgeblähter wird durch die
unterschiedlichen Plattformen und Ergänzungen und so weiter
Die Grenze für Windows wurde glaube ich mit 2.0.7.0 überschritten,
ab dann ist die Kommando Zeile die Arduino IDE aufruft
mit dem AVR-gcc Linker über 32kB und wird nichtmehr vollständig von 
Windoof erfasst.
(wenn Du vollständige Ausgabe anklickst in den arduino einstellungen ist 
das die letzte Zeile for der Fehlermeldung:
"avr-gcc: error: CreateProcess: no such file or directory"

AAABER: da sind auch all die für Dich nutzlosen Dateien drin
(configurationen für teensy und stm boards, für Displays die du nciht 
hast und so weiter und so fort)

geh also in den Ordner Marlin/src/HAL
und lösche dort die Unterverzeichnisse
LINUX, die drei STM und die drei TEENSY

dann kompilier nochmal, das sollte schon reichen um auf unter 30kB zu 
kommen im Linker Schritt.

(Ausser AVR und shared kannst Du alle Unterverzeichnisse löschen wenn Du 
willst.. für dein board sollten die beiden reichen)

Da ist wie gesagt noch ne Tonne mehr was gelöscht werden kann,
müstest also vermutlich ab 2.0.9 nochmal was radieren gehen ;)

WEnn DU ne andere Fehlermeldung hattes sag bescheid,
ich kompilier dir das auch gern, nur eben völlig ungeprüft
(ich hab n anderes board und kenne deine Einstellungen nicht)
hab nur wie gesagt die configs vergessen rüberzukopieren und ehrlich 
gesagt keine Lust gehabt den Laptop wieder anzumachen ;)
Wollte nur eben posten, bevor ich es vergesse..

Ansonsten sag kurz bescheid, dann mach ich die SchleppBüchse nochmal an 
bevor ich ins Bett gehe ;)

'sid

von sid (Gast)


Lesenswert?

Nachtrag:
Hab mir deine configs dann auch ohne Rückmeldung nochmal vorgenommen...

NOPE!
Kannste vergessen.. DU musst schon die aktuellen Configs als Vorbild
nehmen und kannst NICHT einfach die Configuration einer älteren Marlin 
Version rüberkopieren

(kurz: SanityCheck failed!)

Ich hatte keine Lust zu schauen was wo genau fehlt.. war mehr als nur 
ein zwei kleine Neuerungen (scheint auch ne Config aus der 2.0.0.0 zu 
sein)

Aber steht ja oben was zu tun ist.. und ja ich hab Dein Grafikdisplay 
gesehen (wundere mich warum Dein Drucker zwei Displays braucht... aber 
nundenn)
kompiliert auch mit der u8glib von Oskar (ohne a-pack trick für's 
library)
(AVR und shared behalten, alle anderen HAL-unterordner weg)
allerdings nur mit der originalen config
(auf das MKS 1.5 und deine beiden Displays umkonfiguriert um sicher zu 
sein, dass da nichts klemmt)
aber sonst Deine Configuration nicht übernommen, mach das mal schön 
alleine,
dass Du auch weisst was zu tun ist das nächste Mal.

'sid

von Horst S. (h3aau)


Lesenswert?

moin,

danke sid, das hat geholfen. sorry waren die falschen configs. mein 
fehler.
hast du noch einen tip was ich in der config eintragen muss wenn ich ein 
TFT32 an das board packen will?

ein dickes DANKE an alle die so klasse und kompetend geholfen haben.

von sid (Gast)


Lesenswert?

Soweit ich weiss ist das ein serielles Display;
also den SERIAL_PORT_2 (SERIAL_PORT ist der USB Anschluss)
die baudrate muss natürlich passen (muss auch am display selbst 
eingestellt werden)
und ich meine es gibt ne MKSTFT_AUX Zeile die du auskommentieren musst.
genau weiss ich das aber nicht.

'sid

von Horst S. (h3aau)


Lesenswert?

moin,

das passt leider nicht. in der 2.0.0 Marlin ist das
#define MKS_ROBIN_TFT
das geht aber in der neusten nicht mehr.......
mal weiter suchen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.